• Nenhum resultado encontrado

Esta seção apresenta frameworks para desenvolvimento de aplicações web em

Python, e seus respectivos mecanismos de controle de acesso, mais especificamente a

abordados apenas os principais frameworks da categoria fullstack, ou seja, aqueles que fornecem componentes que auxiliam no desenvolvimento tanto do frontend (ex.: interface de interação com o usuário) quanto backend (ex.: regras de negócio, persistência dos dados, segurança).

Os principais frameworks fullstack para a linguagem Python são o Django, Web2py e TurboGears. A seguir será realizada uma breve apresentação desses frameworks, e algumas considerações sobre os mecanismos de controle de acesso adotados:

Django: o Django1 foi criado em 2003 com o objetivo inicial de gerenciar um site

jornalístico, e em 2005 teve seu código aberto. Entre as principais vantagens do framework, destaca-se o desenvolvimento rápido, seguro e escalável de aplicações pra web. Quanto aos mecanismos de controle de acesso, o Django fornece uma API de- nominada django.contrib.auth com componentes customizáveis para autenticação e autorização, e componentes prontos para páginas de login, recuperação de senhas, registro de usuários, entre outros. O mecanismo de autorização adotado é similar ao modelo RBAC, sendo que em vez de papéis são definidos grupos. Os grupos podem ter permissões associadas, e permitem a inclusão ou remoção de usuários. As restrições de acesso a páginas (recursos) são comumente realizadas diretamente no código da aplicação, atribuindo anotações aos métodos (decorators em Python) no arquivo views.py do projeto.

Web2py: o Web2py 2 foi criado em 2007, e tem como objetivo auxiliam no desenvol-

vimento de aplicações web dinâmicas em Python que sejam rápidas, escaláveis e seguras. O framework fornece um mecanismo de controle de acesso com suporte a diferentes métodos de autenticação, incluindo SSO (Single Sign-On) em provedores como Google, PAM, LDAP, OpenID, OAuth, entre outros. A autorização é baseada no modelo RBAC, e as restrições aplicadas aos recursos são implementadas via anotações (decorators) no código da aplicação.

TurboGears: a primeira versão do TurboGears3 foi disponibilizada publicamente em

2005, e assim como os demais frameworks apresentados, tem por objetivo possi- bilitar o desenvolvimento de aplicações web de maneira rápida. O mecanismo de controle de acesso com suporte a autenticação e autorização é implementado por um componente denominado repoze.who4. A autenticação pode ser implementada

pelos métodos HTTP e LDAP, e a autorização adota um mecanismo similar ao utilizando no Django, onde grupos são criados e tem permissões associadas, e por fim usuários são removidos ou inseridos nestes grupos. Os usuários e grupos podem 1 https://www.djangoproject.com/

2 http://www.web2py.com/

3 http://www.turbogears.org

ser gerenciados a partir da interface de administração web denominada TurboGears

Admin. As restrições de acesso aos recursos também são implementadas via anotações

(decorators) diretamente no código da aplicação (classes de controle ou Controller ), e suportam uso de predicados como All (checa se todos os predicados foram atendidos),

Any (checa se pelo menos um predicado foi atendido), in_group (checa se o usuário

pertence a um determinado grupo), entre outros.

Conforme observado, todos os frameworks avaliados implementam as restrições de acesso aos recursos diretamente no código da aplicação (hard-coded) via anotações Python (decorator ), e consequentemente restringem a atuação de um controlador auto-adaptativo (saRBAC por exemplo) durante eventos anômalos que necessitem de adaptação dinâmica

de políticas para mitigar um abuso.

No caso do Django, o PEP proposto e implementado no capítulo4 pode atuar de forma complementar aos mecanismos de autorização, possibilitando que as requisições de acesso sejam interceptadas e encaminhadas para um servidor de autorização externo a aplicação, e consequentemente removendo as restrições de acesso fixadas no código, além de possibilitar o uso do SecAuthAPI, que fornece o suporte a manipulação dinâmica de políticas de controle de acesso no contexto de um sistema auto-adaptativo.

Por fim, a implementação do PEP pode ser utilizada como referência no desenvol- vimento de PEP’s específicos para os frameworks Web2py e TurboGears.

6.4

Discussão

Este capítulo apresentou alguns trabalhos relacionados que foram categorizados em controle de acesso dinâmico, externalização do controle de acesso, e ferramentas de controle de acesso em Python, e por fim os comparou com a abordagem proposta na pesquisa.

Os trabalhos envolvendo controle de acesso dinâmico diferem do proposto no

SecAuthAPI no sentido de exigir implementações distintas para cada adaptação no com-

ponente alvo, enquanto o SecAuthAPI propõe um conjunto de operações baseadas em especificação funcional formal através de uma camada de software que abstrai as peculiari- dades do sistema alvo.

Os trabalhos relacionados a externalização apresentam casos hipotéticos, enquanto a proposta apresentada neste trabalho usa um sistema real.

Por fim, os mecanismos de controle de acesso adotados por alguns dos principais

frameworks web em Python foram apresentados, e diferem da abordagem proposta por

exigir a implementação das restrições de acesso diretamente no código da aplicação (hard-coded) em vez de externalizar tais restrições.

7 Considerações finais

Este capítulo apresenta as considerações finais relacionadas a proposta apresentada nesta dissertação. A seção7.1discorre sobre as principais contribuições obtidas, em seguida na seção 7.2 são listadas as limitações, e em 7.3 são indicados alguns trabalhos futuros.

7.1

Contribuições

Este trabalho tem como principal objetivo fornecer uma abordagem de suporte a infraestruturas de autorização auto-adaptativas. Para alcançar esse objetivo foi proposto e implementado uma API REST denominada SecAuthAPI, que fornece operações para manipulação de políticas baseadas em uma especificação funcional ABAC (GOUGLIDIS et al., 2017), e que pode ser integrada a um controlador auto-adaptativo em um cenário de auto-proteção de sistemas, onde o controlador monitora continuamente o ambiente a ser protegido, e ao detectar uma ameaça atua sobre o SecAuthAPI executando operações que manipulam políticas de controle de acesso de maneira granular com intuito de impedir ou mitigar os abusos em tempo de execução. No contexto de sistemas auto-adaptativos, o fornecimento de operações baseadas em especificação funcional formal é essencial, pois fornece meios rigorosos para especificar e compreender o comportamento do sistema em tempo de design e execução (WEYNS et al., 2012).

A adoção do SecAuthAPI no contexto de um sistema real requer que a infraestrutura de controle de acesso deste sistema externalize os mecanismos de autorização, ou seja, a aplicação deve remover as restrições de acesso do código e delegar para uma interface externa (servidor de autorização) a decisão de permitir ou não o acesso baseado em políticas.

Com intuito de demonstrar um caso real de adoção da infraestrutura de autorização auto-adaptativa, neste trabalho propomos externalizar os mecanismos de autorização do sistema SUAP. Na literatura não encontramos trabalhos demonstrando como esse processo de externalização deveria ser realizado, e como uma das contribuição deste trabalho propomos uma sequência de fases a serem seguidas para implantar a externalização em um sistema legado. Usando essas fases como base, implementamos uma demonstração do processo de externalização em um dos módulos do sistema SUAP, a central de serviços.

Como contribuição técnica, durante a implantação da externalização no sistema SUAP observou-se a necessidade de implementar um PEP para Python/Django pois não encontramos soluções prontas em repositórios de código aberto, e também um PIP que recupera atributos de fontes LDAP e Postgres para que estes atributos sejam utilizados

durante a etapa de decisão pelo PDP na demonstração da central de serviços do SUAP. Por fim, realizamos uma avaliação das abordagens de suporte a infraestrutura de autorização propostas neste trabalho. O SecAuthAPI foi avaliado através da implementação e execução de testes unitários que demonstram a conformidade deste com a especificação funcional. A externalização foi avaliada através de testes de desempenho, e por fim os resultados foram comparados com a abordagem legada. A quantidade de componentes de segurança adotados na infraestrutura de autorização trazem um custo computacional a mais comparando com a abordagem legada. Nos nossos testes a infraestrutura externalizada tem uma perda média de 7,01% de desempenho nos casos médios, e 17,39% no pior caso. Considerando os benefícios fornecidos pela infraestrutura de externalização, concluímos que esta perda é aceitável e passível de mitigação incluindo mais recursos a infraestrutura, seja no modelo vertical (mais memória, cores, etc.), ou horizontal (novos nós no cluster da aplicação SUAP).

Os resultados deste trabalho foram compilados em um artigo (MEDEIROS; SA- RAIVA; SILVA,2017), que foi publicado e apresentado ao workshop Gestão de Identidades

Digitais (WGID) do Simpósio Brasileiro em Segurança da Informação e Sistemas Compu- tacionais (SBSeg)1 nas categorias “Controle de Acesso baseado em atributos (ABAC)” e

“Técnicas de prevenção contra fraudes e roubo de identidades”.

7.2

Limitações

A abordagem de manipulação de políticas de controle de acesso (SecAuthAPI ) têm algumas limitações, e estas serão apresentadas a seguir.

O acesso as operações do SecAuthAPI através dos controladores auto-adaptativos é realizado apenas no modo administrativo. Um controlador devidamente autenticado através de um usuário e senha tem acesso a todas as operações, e não é possível definir permissões ou papéis para que apenas determinadas operações sejam autorizadas na API para um usuário. Em ambientes complexos com mais de um controlador auto-adaptativo manipulando políticas através do SecAuthAPI a autorização a nível de operação é importante, no sentido de limitar as operações que cada controlador pode executar.

Um outro ponto a ser considerado é que o SecAuthAPI foi proposto inicialmente para suportar apenas o servidor de autorização WSO2 IS. O suporte a AuthZForce encontra- se implementado parcialmente. As operações para inserção e modificação de políticas estão implementadas, no entanto o AuthZForce requer alguns procedimentos adicionais para ativar a política para uso no PDP, e estes estão pendentes.

Por fim, uma outra limitação que afeta diretamente o SecAuthAPI é o não suporte 1 https://sbseg2017.redes.unb.br/

a PolicySet pela biblioteca Python desenvolvida para manipulação de políticas XACML, a

XACML_Parser. O PolicySet permite agregar várias políticas em um único arquivo XML,

e pode ser útil na manipulação de políticas complexas.

7.3

Trabalhos futuros

A seguir serão listados algumas sugestões de estudos e implementações a serem realizadas com intuito melhorar a abordagem de suporte a manipulação dinâmica de políticas (SecAuthAPI ) e externalização dos mecanismos de autorização em sistemas legados.

O SecAuthAPI faz uma verificação estrutural na política XACML através de um esquema XSD fornecido pela OASIS2 com intuito de verificar se a intervenção realizada na

política não a corrompeu, no entanto, essa abordagem não avalia a completude da política. A política pode estruturalmente está correta, mas semanticamente está permitindo acesso a um recurso que deveria está bloqueado, e essa falha na implementação da política ou na configuração pode causar sérias vulnerabilidades (HU; KUHN, 2016). Uma das formas de avaliar a completude de uma política de controle de acesso é usando a ferramenta ACPT3

(Access Control Policy Testing) desenvolvida pelo NIST. O ACPT permite fazer uma verificação sintática e semântica das políticas XACML através de checagem de modelo (model checker ) SMV (Symbolic Model Verification)(HU; KUHN; YAGA,2017). O ACPT é um aplicativo desktop desenvolvido usando a linguagem Java. Uma recomendação de trabalho futuro é analisar o código e implementar meios de executar a checagem de políticas do ACPT via linha de comando ou API, permitindo assim a integração com o SecAuthAPI.

No contexto de externalização dos mecanismos de autorização, uma recomendação de trabalho futuro é propor uma metodologia de externalização. A nossa abordagem propõe algumas fases e foi pensada especificamente para o sistema SUAP, no entanto a complexidade envolvida na externalização poderia ser investigada mais a fundo, e uma metodologia ou um processo poderiam ser propostos considerando artefatos de entrada, saída, maior detalhamento de cada etapa, ser agnóstica de sistema, como também fornecer implementações de referência de PEP’s em outras linguagens, e PIP’s para servidores de autorização diferentes do WSO2, como o AuthZForce.

Ainda sobre externalização, uma outra proposta de trabalho futuro é desenvolver uma interface que facilite a implementação de políticas ABAC. Neste trabalho foi utilizado o ALFA, mas este tem uma sintaxe pouco amigável para não-desenvolvedores. O WSO2 fornece na interface web algumas ferramentas que através de formulários geram a política ABAC em linguagem XACML, mas são limitadas e de difícil utilização.

2 https://docs.oasis-open.org/xacml/3.0/XSD/

Referências

ABRIAL, J.; SCHUMAN, S. A.; MEYER, B. Specification Language. In:

On the Construction of Programs. [s.n.], 1980. p. 343–410. Disponível em:

<http://se.ethz.ch/~meyer/publications/languages/Z_original.pdf>. Citado na página

16.

ANSI. Role Based Access Control. [S.l.], 2004. ANSI/INCITS 359-2004. Disponível em:

<https://csrc.nist.gov/projects/role-based-access-control>. Citado 5 vezes nas páginas

14, 16, 21,22 e69.

ANSI. Role Based Access Control - Policy-Enchanced. 2012. ANSI/INCITS 494-2012. Disponível em: <https://standards.incits.org/apps/group_public/project/details.php? project_id=1659>. Citado na página 22.

ANSI. Next Generation Access Control - Functional Architecture (NGAC-FA). 2013. ANSI/INCITS 499-2013. Disponível em: <https://standards.incits.org/apps/group_ public/project/details.php?project_id=1649>. Citado na página 24.

BAILEY, C.; CHADWICK, D. W.; LEMOS, R. D. Self-adaptive authorization framework for policy based RBAC/ABAC models. In: IEEE. Dependable, Autonomic and Secure

Computing (DASC), 2011 IEEE Ninth International Conference on. IEEE, 2011. p. 37–44.

Disponível em: <https://doi.org/10.1109/DASC.2011.31>. Citado 4 vezes nas páginas

15, 27, 67 e68.

BASIN, D.; DOSER, J.; LODDERSTEDT, T. Model Driven Security: from UML Models to Access Control Infrastructures. ACM Transactions on Software

Engineering and Methodology (TOSEM), v. 15, p. 39–91, Jan 2006. Disponível em:

<https://dl.acm.org/citation.cfm?id=1125810>. Citado na página 68.

BOOTH, R.; BROOKE, H.; MORRIS, S. WikiLeaks cables: Bradley Manning faces 52

years in jail. [S.l.], 2010. Disponível em: <http://www.guardian.co.uk/world/2010/nov/ 30/wikileaks-cables-bradley-manning>. Acesso em: 10 jan. 2017. Citado na página 14. BROSSARD, D.; GEBEL, G.; BERG, M. A Systematic Approach to Implementing ABAC. In: Proceedings of the 2Nd ACM Workshop on Attribute-Based Access Control. New York, NY, USA: ACM, 2017. (ABAC ’17), p. 53–59. ISBN 978-1-4503-4910-9. Disponível em:

<http://doi.acm.org/10.1145/3041048.3041051>. Citado 3 vezes nas páginas 18, 25 e 69. BRUN, Y.; SERUGENDO, G. D. M.; GACEK, C.; GIESE, H.; KIENLE, H. M.; LITOIU, M.; MÜLLER, H. A.; PEZZÈ, M.; SHAW, M. Engineering Self-Adaptive Systems through Feedback Loops. In: Software Engineering for Self-Adaptive Systems. [s.n.], 2009. p. 48–70. Disponível em: <https://doi.org/10.1007/978-3-642-02161-9_3>. Citado na página 26. CAMILLO, G.; WESTPHALL, C. M.; WERNER, J.; WESTPHALL, C. Preserving Privacy with Fine-grained Authorization in an Identity Management System. In:

The Sixteenth International Conference on Networks. ICN, 2017. Disponível em:

<https://www.researchgate.net/publication/315816577_Preserving_Privacy_with_ Fine-grained_Authorization_in_an_Identity_Management_System>. Citado na página 69.

CHADWICK, D.; ZHAO, G.; OTENKO, S.; LABORDE, R.; SU, L.; NGUYEN, T. A. PERMIS: A Modular Authorization Infrastructure. Concurrency Computing : Practice

and Experience, John Wiley and Sons Ltd., Chichester, UK, v. 20, n. 11, p. 1341–1357,

2008. ISSN 1532-0626. Disponível em: <http://dx.doi.org/10.1002/cpe.v20:11>. Citado na página 67.

CHENG, B. H.; EDER, K. I.; GOGOLLA, M.; GRUNSKE, L.; LITOIU, M.; MÜLLER, H. A.; PELLICCIONE, P.; PERINI, A.; QURESHI, N. A.; RUMPE, B.; SCHENEIDER, D.; TROLLMANN, F.; VILLEGAS, N. Using Models at Runtime to Address Assurance for Self-Adaptive Systems. In: Models@run.time. Springer, 2014, (Lecture Notes in Computer Science, v. 8378). p. 101–136. Disponível em:

<https://doi.org/10.1007/978-3-319-08915-7_4>. Citado na página 15.

COLLINS, M.; THEIS, M.; TRZECIAK, R.; STROZER, J.; CLARK, J.; COSTA, D.; CASSIDY, T.; ALBRETHSEN, M.; MOORE, A. Common Sense Guide to

Mitigating Insider Threats, Fifth Edition. Fifth. Pittsburgh, PA, 2016. Disponível em:

<http://resources.sei.cmu.edu/library/asset-view.cfm?AssetID=484738>. Citado na página 14.

DJANGO. Django Documentation (Middleware). 2015. <https://docs.djangoproject.com/ en/1.8/topics/http/middleware/>. Acessado em: 17/07/2018. Citado na página 43. ELLIOTT, A.; KNIGHT, S. Role Explosion: Acknowledging the Problem. In:

Software Engineering Research and Practice. [s.n.], 2010. p. 349–355. Disponível

em: <https://www.researchgate.net/publication/221610600_Role_Explosion_ Acknowledging_the_Problem>. Citado na página 21.

FERRAIOLO, D. F.; KUHN, D. R.; CHANDRAMOULI, R. Role-Based Access

Control. 2nd. ed. Norwood, MA, USA: Artech House, Inc., 2007. ISBN 1596931132,

9781596931138. Disponível em: <https://csrc.nist.gov/publications/detail/book/2007/ role-based-access-control>. Citado na página 20.

FIELDING, R. T. REST: Architectural Styles and the Design of Network-based Software

Architectures. Tese (Doctoral dissertation) — University of California, Irvine, 2000.

Disponível em: <http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm>. Citado na página 32.

FIELDING, R. T.; RESCHKE, J. Hypertext Transfer Protocol (HTTP/1.1): Semantics

and Content. RFC Editor, 2014. RFC 7231. (Request for Comments, 7231). Disponível

em: <https://rfc-editor.org/rfc/rfc7231.txt>. Citado na página 34.

FISLER, K.; KRISHNAMURTHI, S.; MEYEROVICH, L. A.; TSCHANTZ, M. C. Verification and change-impact analysis of access-control policies. In: Proceedings. 27th

International Conference on Software Engineering, 2005. ICSE 2005. [s.n.], 2005. p.

196–205. ISSN 0270-5257. Disponível em:<https://doi.org/10.1109/ICSE.2005.1553562>. Citado na página 68.

GAMMA, E.; HELM, R.; JOHNSON, R.; VLISSIDES, J. Design Patterns: Elements

of Reusable Object-oriented Software. Boston, MA, USA: Addison-Wesley Longman

GOUGLIDIS, A.; HU, V. C.; BUSBY, J. S.; HUTCHISON, D. Verification of Resilience Policies that Assist Attribute Based Access Control. In: ACM. Proceedings of the 2nd

ACM Workshop on Attribute-Based Access Control. 2017. p. 43–52. Disponível em:

<https://doi.org/10.1145/3041048.3041049>. Citado 9 vezes nas páginas 16, 32, 36, 55,

57, 72, 82,83 e84.

GREENWALD, G. No place to hide: Edward Snowden, the NSA, and the US surveillance

state. [S.l.]: Macmillan, 2014. ISBN 1250062586. Citado na página 15.

HAREL, O. NGAC vs XACML: What’s really the difference? 2017. Aces- sado em: 07/09/2018. Disponível em: <https://www.plainid.com/2017/05/ ngac-vs-xacml-whats-really-the-difference/>. Citado na página 24.

HORN, P. Autonomic computing: IBM‘s Perspective on the State of Information Technology. IBM, 2001. Disponível em: <https://www.researchgate.net/publication/ 200031805_Autonomic_Computing_IBM’s_Perspective_on_the_State_of_

Information_Technology>. Citado 2 vezes nas páginas15e 25.

HU, C. T.; KUHN, D. R.; YAGA, D. J. Verification and Test Methods for Access Control Policies/Models. NIST special publication, n. 192, 2017. Disponível em:

<https://dx.doi.org/10.6028/NIST.SP.800-192>. Citado na página 74.

HU, V. C.; FERRAIOLO, D.; KUHN, R.; FRIEDMAN, A. R.; LANG, A. J.; COGDELL, M. M.; SCHNITZER, A.; SANDLIN, K.; MILLER, R.; SCARFONE, K. et al. Guide to Attribute Based Access Control (ABAC) Definition and Considerations. NIST special publication, v. 800, n. 162, 2014. Disponível em:

<http://dx.doi.org/10.6028/NIST.SP.800-162>. Citado 7 vezes nas páginas 14,16, 17,

18, 22, 23 e69.

HU, V. C.; KUHN, D. R. General Methods for Access Control Policy Verification (Application Paper). In: 2016 IEEE 17th International Conference on Information

Reuse and Integration (IRI). [s.n.], 2016. p. 315–323. Disponível em: <http: //doi.org/10.1109/IRI.2016.49>. Citado na página 74.

IBM. An Architectural Blueprint for Autonomic Computing. [S.l.], 2006. Disponível em:

<https://www-03.ibm.com/autonomic/pdfs/AC%20Blueprint%20White%20Paper% 20V7.pdf>. Citado na página 15.

ISO/IEC. ISO/IEC 13568: Information technology – Z formal specification notation –

Syntax, type system and semantics. [S.l.], 2002. Disponível em:<http://standards.iso.org/ ittf/PubliclyAvailableStandards/c021573\_ISO\_IEC\_13568\_2002(E).zip>. Citado na página 16.

IYER, P.; MASOUMZADEH, A. Mining Positive and Negative Attribute-Based Access Control Policy Rules. In: Proceedings of the 23Nd ACM on Symposium on Access Control

Models and Technologies. New York, NY, USA: ACM, 2018. (SACMAT ’18), p. 161–172.

ISBN 978-1-4503-5666-4. Disponível em: <http://doi.acm.org/10.1145/3205977.3205988>. Citado na página 24.

JÚNIOR, E. P. da C.; SILVA, C. E. da; PINHEIRO, M.; SAMPAIO, S. A new approach to deploy a self-adaptive distributed firewall. Journal of Internet Services

and Applications, v. 9, n. 1, p. 12, Jun 2018. ISSN 1869-0238. Disponível em:

KANDALA, S.; SANDHU, R.; BHAMIDIPATI, V. An Attribute Based Framework for Risk-Adaptive Access Control Models. In: 2011 Sixth International Conference

on Availability, Reliability and Security. [s.n.], 2011. p. 236–241. Disponível em:

<http://dx.doi.org/10.1109/ARES.2011.41>. Citado na página 67.

KEPHART, J. O.; CHESS, D. M. The vision of autonomic computing. Computer, v. 36, n. 1, p. 41–50, Jan 2003. ISSN 0018-9162. Disponível em: <https://doi.org/10.1109/MC. 2003.1160055>. Citado 3 vezes nas páginas15, 25e 26.

KESLER, B. The vulnerability of nuclear facilities to cyber attack. Strategic Insights, v. 10, n. 1, p. 15–25, 2011. Disponível em: <https://calhoun.nps.edu/bitstream/handle/10945/ 25465/The_Vulnerability_of_Nuclear_Facilities_to_Cyber_Attack.pdf?sequence=1>. Citado na página 14.

LEGG, P. A.; BUCKLEY, O.; GOLDSMITH, M.; CREESE, S. Caught in the act of an insider attack: detection and assessment of insider threat. In: 2015 IEEE International

Symposium on Technologies for Homeland Security (THS). [s.n.], 2015. p. 1–6. Disponível

em: <https://doi.org/10.1109/THS.2015.7446229>. Citado na página 14.

MCGRAW, R. W. Risk Adaptable Access Control (RAdAC). McLean and Clifton, VA, United States, 2009. Disponível em: <https://csrc.nist.gov/csrc/media/events/ privilege-management-workshop/documents/radac-paper0001.pdf>. Citado na página

67.

MEDEIROS, W. R. de; SARAIVA, J. D.; SILVA, C. E. da. Supporting the Self-adaptation

Documentos relacionados