Você está na página 1de 19

FACULDADE 7 DE SETEMBRO - FA7

CURSO GRADUAO EM SISTEMAS DE INFORMAO

SEGURANA DA INFORMAO COM SPRING SECURITY EM APLICAES WEB.


ROMRIO TELES PIRES

FORTALEZA 2015

ROMRIO TELES PIRES

SEGURANA DA INFORMAO COM SPRING SECURITY EM


APLICAES WEB.
Projeto

de

Monografia

apresentada

Faculdade 7 de Setembro como requisito


parcial para obteno do ttulo de Bacharel
em Sistemas de Informao.
Orientador: Eduardo Mendes de Oliveira,
mestre.

FORTALEZA 2015

RESUMO
Em aplicaes que dispem de informaes pessoais e/ou sigilosas, as quais
no podem ficar disponveis para qualquer pessoa, importante que haja
mecanismos que impeam o acesso indevido dessas informaes. No mundo
corporativo, por exemplo, informaes podem significar milhes em dinheiro,
proteg-las de total importncia para evitar prejuzos e outras perdas
significativas, visto que a informao um dos ativos mais importantes de uma
empresa, e deve ser protegido com grau de importncia to grande quanto
qualquer outro. Este trabalho vai apresentar alguns conceitos importantes de
segurana da informao e aplic-los no desenvolvimento de uma aplicao
web utilizando o framework Spring Security para implementar a segurana do
sistema.
Palavras chave: Spring Security, Segurana, Informao, Controle de acesso

ABSTRACT
In applications that have personal and sensitive information, it is important to
have mechanisms that prevent unauthorized access this information. In the
corporate environment, for example, information can mean millions in cash,
protecting it is all-important to avoid significant losses. This paper will introduce
some important concepts of information security and apply them in developing
a web application using Spring Security framework.
Keywords: Spring Security, Segurana, Information, Access control

SUMRIO
1 INTRODUO
2 FUNDAMENTAO TERICA
2.1 Controle de acesso

2.2

2.1.1

Autenticao

2.1.2

Autorizao

2.1.3

Auditria

Spring Security
2.2.1

Histria

3 TRABALHOS RELACIONADOS
4 RESULTADOS ESPERADOS
5 REFERNCIAS BIBLIOGRFICAS

INTRODUO
A preocupao em se proteger informaes em ambientes corporativos

de pequeno ou grande porte cresceu na ultima dcada com o advento da


internet sendo utilizada em larga escala pelas companhias. Hoje em dia quem
tem as informaes certas acerca de uma

dada tecnologia pode deter a

hegemonia de todo um mercado em uma determinada rea. Da a importncia


de manter esse insumo, to importante, seguro e longe das mos erradas. Aqui
no vamos tratar a segurana da informao em todos os seus aspectos, mas
vamos focar em um dos mais importantes, o controle de acesso.
Algumas ferramentas disponibilizam mecanismos de segurana que j
oferecem o controle de acesso s aplicaes.
sabido que no desenvolvimento de aplicaes, sejam elas web ou no, a
existncia de um mecanismo de autenticao de usurios que controle as
permisses destes no domnio do software muito importante, visto que
algumas funcionalidades no podem ficar expostas a acessos indevidos e
vulnerveis a acesso e manipulao de dados considerados confidenciais.
Segurana um requisito importante presente na grande maioria dos
sistemas desenvolvidos. Na plataforma Java EE temos uma soluo
oferecida pela especificao que determina como uma aplicao
pode definir regras de controle de acesso e autenticao. Entretanto,
ainda comum nos depararmos com solues caseiras para
cumprir tal requisito. Em parte, tais solues so criadas pela falta de
experincia dos desenvolvedores, ou por outro lado, porque a
especificao no flexvel o suficiente para comportar os requisitos
(ZANINI, 2009).

O spring security, que ser apresentado nesse artigo, um exemplo de


framework popular no meio da programao web por disponibilizar um
mecanismo de controle de acesso robusto e fcil de implementar.
Como objetivo, aqui aplicado, vamos fazer um pequeno esboo do quo
poderosa essa ferramenta, apresentando suas principais funcionalidades e
como ela trata a segurana da informao em uma aplicao web.

Enquadram-se nos objetivos especficos deste trabalho:

Realizar estudo aprofundado de como podemos melhorar a segurana


com o framework spring security;

Desenvolver uma aplicao web, a fim de aplicar o conhecimento


adquirido com as tecnologias estudadas;

Apresentar os resultados obtidos, com os benefcios e dificuldades


encontradas durante o desenvolvimento.

O Spring Security referncia em controle de acesso, tanto para a parte de


autenticao quanto para a autorizao, sabendo disso este

artigo vai

apresentar alguns dos principais recursos disponveis atravs dessa poderosa


ferramenta.
A aplicao a ser desenvolvida consiste basicamente em um mdulo de
segurana capaz de ser implantado em qualquer projeto. Para isso vamos
seguir algumas especificaes do referido framework, que define que cada
usurio possui um ou mais papeis, ou rules. Como mostrado no diagrama a
seguir.

Imagem 1: Diagrama de classe, associao entre a classe


Usuario e Rules

Inicialmente ser realizado uma pesquisa bibliogrfica sobre a utilizao


das tecnologias a serem utilizadas: Java Server Fases - JSF

(JSF, 2004) e

Spring Security (SPRING SECURITY, 2003). Em seguida, ser criada uma


aplicao web utilizando a integrao entre JSF e Spring Security. Nessa
aplicao, para a sua manipulao, existir dois tipos diferentes de usurios,
administradores e usurios comuns, ambos com nveis de acesso diferente.
Algumas funcionalidades no estaro disponveis para usurios comuns, sendo
assim aquele que possuir privilgios de administrador ter total acesso s
funcionalidades do sistema. Um esquema foi montado para tornar possvel tudo
o que foi citado anteriormente, ele pode ser visto a seguir na tabela 1.
Tabela 1: Cronograma para o desenvolvimento do trabalho

Atividade

Ms

2 quinzena

quinzena
Definir os requisitos da aplicao a ser

Junho

Junho

desenvolvidos e quais dados devem


possuir acesso restrito
Realizar estudo aprofundado no
framework spring security
Definir o domnio da aplicao, bem

julho

Julho

Julho

como o proposito a ser atendido pela


mesma.
Definir o modelo da base de dados da
aplicao
Definir o diagrama de classes da
aplicao
Comear a implementao da

Julho

aplicao: Configurar o ambiente de


desenvolvimento, bem como a parte de
segurana.
Definir as regras de negcio que a

Agosto

Reviso do TCC1

Agosto

Reviso do Orientador

Agosto

Implementar a regra de negcio X (a

Agosto

definir) e Construir a tela de

Setembro

aplicao atender.

x
x

autenticao do usurio e da regra de


negcio X.
Realizar testes na aplicao

Setembro

Reviso do captulo de fundamentao

Setembro

Setembro

terica
Reviso do Orientador

Atividade

Ms

2 quinzena

quinzena
Implementar a regra de negcio Y (a

Outubro

Construir a tela da regra de negcio Y

outubro

Realizar testes na aplicao

Outubro

Reviso do capitulo de trabalhos

Outubro

Reviso do Orientador

Outubro

Reviso do capitulo de concluses e

Novembro

Reviso do Orientador

Novembro

Implementar a regra de negcio Z (a

Novembro

Construir a tela da regra de negcio Z

Novembro

Reviso da Introduo e de todo o

Novembro

Reviso Final do Orientador

Novembro

ltimos teste no sistema

Dezembro

definir)

relacionados

trabalhos futuros

definir)

artigo

FUNDAMENTAO TERICA

2.1 Segurana da informao


A

segurana

para

aplicaes

web

extremamente

importante,

principalmente em organizaes que possuem papeis de usurios diferentes.


Cada usurio detm um nmero limitado de informao dependendo do papel
que exerce na empresa, logo necessrio a existncia de mecanismos que
gerenciem o acesso s informaes de forma que o usurio que as estejam
manipulando detenham somente aquelas a quem lhes pertence.
As informaes de uma empresa, aplicadas em um sistema de software,
so consideradas seguras se a aplicao for desenvolvida baseada em trs
conceitos importantes: Confidencialidade, integridade e disponibilidade.

Confidencialidade: Informaes acessadas apenas por pessoas


autorizadas.

Integridade: As informaes so recuperadas tal como foram


armazenas.

Disponibilidade: Informaes acessveis sempre que se fizer


necessrio.

2.2 Controle de acesso


Segundo (ESPIRITO SANTO, 2010):
Controle de acesso so as medidas tomadas pelo gestor de
segurana da informao que visam controlar o acesso por
permisses tanto aos sistemas computacionais da organizao
quanto ao de pessoas no ambiente da empresa.

Pode-se afirma que o controle de acesso composto por trs etapas


importantes: autenticao, autorizao e auditria.
2.2.1

Autenticao

Entre os conceitos de segurana da informao, a autenticao um dos


conceitos mais importante quando estamos desenvolvendo aplicaes seguras.
Esse mecanismo basicamente identifica quem est tentando acessar algum
recurso do sistema.
A autenticao faz parte do nosso dia a dia, mesmo que voc nunca tenha
utilizado um sistema de informao, certamente de alguma forma j precisou
se identificar para comprovar sua identidade em um processo de eleio para
presidente, por exemplo.

Em sistemas de softwares, os usurios que lhes acessam as informaes


podem ser divididos em dois tipos de nveis de autenticao: autenticado e
annimo.
Em uma aplicao onde o usurio est annimo, isto o usurio no
possui uma identidade no sistema, normalmente esse usurio no
poder solicitar um log no sistema, o que se torna importante, por
exemplo, quando necessitamos saber quando fizemos uso de um
servio ou para descobrir se algum est se aproveitando de algo que
no a pertence. Usurios annimos tambm no podem visualizar
informaes mais sensveis como nome, endereo, cartes de
crdito, ou possuir permisso para funcionalidades que possam
manipular o estado ou informaes do sistema.( MEDEIROS, 2014)

Em sistemas de informao, existem vrias maneiras de autenticao. A


mais comum atravs de senha, onde o usurio informa seu nome de usurio
e senha para ter acesso a parte do sistema.
2.2.2

Autorizao

Autorizao, em segurana da informao, o mecanismo responsvel


por garantir que apenas usurios autorizados consumam os recursos
protegidos de um sistema computacional (WIKIPDIA, 2014).
Autorizao o segundo conceito chave que crucial na
implementao e para o entendimento sobre a segurana de
aplicaes. Basicamente a autorizao usa a informao que foi
validada durante a autenticao para determinar se o acesso deveria
ser concedido para um recurso em particular. Assim, as aplicaes
definem papis aos usurios e baseando-se nos papis desses
usurios eles tem acesso a determinados recursos. Tambm
devemos notar que para um usurio ter um papel ele deve estar
autenticado, portanto deve passar pela autenticao no sistema
(MEDEIROS, 2014).

Dizemos que quando um usurio tem permisso de acesso a um


determinado recurso ele tem o acesso concedido, caso contrrio o acesso
negado (denied)(MEDEIROS, 2014).
2.2.3

Auditria

Consiste em armazenar em uma base de dados o log de acesso de cada


usurio que tentou autenticar-se no sistema, isto , o sistema de software salva
informaes como: uma referncia ao usurio que o acessou, data e hora do
inicio da sesso, endereo IP (Internet Protocol) da mquina fsica que ele
usou para acessar a aplicao, data e hora do fim da sesso etc. Isso garante
que as informaes de cada sesso fiquem salvas para eventualmente serem
recuperadas para algum fim especfico.
2.3 Spring Security
Spring Security um framework para Java, criado em 2003 pela
SpringSource, com o objetivo de

prov funcionalidades pertinentes a

segurana para aplicaes web, como autenticao e autorizao de usurios.


O framework foca em facilitar a implementao dos casos de uso mais
frequentes, porm oferece valiosos pontos de extenso para requisitos mais
complexos (ZANINI, 2009).
JavaServer Faces
JavaServer Faces JSF uma especificao, definida pelo JCP (Java
Community Process), para desenvolvimento web que utiliza um modelo de
interfaces grficas baseado em eventos. JSF baseado no padro de projeto
MVC (Model-View-Controller), que separa o sistema em trs responsabilidades.
2.4 MVC (Model-View-Controller)
um dos padres de projetos definidos que separa a aplicao em
responsabilidades: model, view e controller.

O modelo (model) a camada que representa os seus dados, provendo


meios de acesso esses dados.

A viso (view) responsvel por tudo que o usurio final visualiza, toda
a interface, informao, no importando sua fonte de origem, exibida
graas a camada de viso.

A controladora (controller) a camada que executa uma regra de


negcio (modelo) e repassa a informao para a visualizao (viso).

TRABALHOS RELACIONADOS
Alguns trabalhos serviram de base para o estudo do tema aqui tratado.
A segurana das informaes de uma empresa crucial para evitar que

certos dados vazem e caiam nas mos da concorrncia. "O custo de se


proteger contra uma ameaa deve ser menor que o custo da recuperao se a
ameaa o atingir" (DAVIS, 1997, apud ESPRITO SANTO, 2010).

(ESPRITO

SANTO, 2010) cita em seu artigo a importncia de implantar um projeto de


segurana da informao em uma organizao e destaca as vantagens dessa
abordagem. Os benefcios esperados so evitar vazamentos, fraudes,
espionagem comercial, uso indevido, sabotagens e diversos outros problemas
que possam prejudicar a empresa (ESPRITO SANTO, 2010).
Em seu artigo, (SOUZA, 2011) faz uso de vrios frameworks para a
implantao de um sistema que atende uma clnica de esttica que facilita
cotaes de produtos aos seus clientes. Entre os frameworks usados, (SOUSA,
2011) cita: Hibernate (HIBERNATE, 2001), para a persistncia das informaes
no banco de dados e spring security. O artigo apresenta a suite do spring
framework como soluo para o desenvolvimento de uma aplicao web, uma
vez que o spring framework cobre todas as necessidades de quem pretende
desenvolver para web, desde a integrao com outros frameworks como o
hibernate at mesmo garantir a segurana da aplicao.
De uma maneira geral o desenvolvimento utilizando o framework
Spring no inicio pode ser trabalhoso, porm com conhecimento das
integraes das facilidades que o framework disponibiliza possvel
afirmar que o otimiza o desenvolvimento, qualidade da codificaes,
na facilidade para manuteno e principalmente na estrutura que o
Spring implementa deixando somente se preocupar com a aplicao
(SOUZA, 2011).

ANDRADE, 2012) desenvolveu um trabalho, em que ele destaca as principais


tcnicas de segurana de informao. Entre as tcnicas desenvolvidas em seu
sistema (Uma aplicao para cadastrar documentos importantes e sigilosos)
ele usa, por exemplo, um sistema de segurana que limita as tentativas de
acesso pelo IP do usurio na terceira tentativa falha de login na aplicao.
Alm disso ele utiliza outros artifcios tcnicos para proteger a aplicao de
acessos indevidos, como uso de captcha, senhas fortes e tokens para
confirmao de cadastro entre outros.
Ambos os trabalhos, como tambm o material disposto nas referncias
bibliogrficas, serviram de embasamento para a produo deste trabalho, e
contriburam para o enriquecimento intelectual acerca de segurana da
informao e outros assuntos.

RESULTADOS ESPERADOS
Espera-se que ao final do trabalho tenhamos uma aplicao web

funcionando com um sistema de segurana capaz de manter protegidas as


informaes pertinentes a cada usurio do sistema. Esse sistema dever
funcionar com um mdulo de segurana implementado a partir do Spring
Security, e este, por sua vez, poder ser integrado a qualquer aplicao, visto
que tal mdulo funcionar independente da aplicao que o utilizar, bastando
que ela aplique as especificaes apresentadas. Por fim, tambm espera-se
que o mdulo de segurana possa ser disponibilizado na web para que
desenvolvedores possam ter em mos algo completo para aplicar em seus
projetos. vale salientar mais uma vez que o artefato produzido poder se
integrar a qualquer aplicao Java EE.

REFERNCIAS BIBLIOGRFICAS

SCARION, Carlo. Pro Spring Security: securing your enterprise and web spring
and grails applications. New York: Apress, 2013.

Disponvel em: <

https://books.google.com.br/books?
id=VIqInfAXFaoC&printsec=frontcover&dq=spring+security&hl=ptBR&sa=X&ei=JNUMUtb2JIfk9gSo8oDIAQ#v=onepage&q=spring
%20security&f=false>. Acesso em: 30. mai. 2015.

LOPES, Guilherme; MARCHI, Kssia R. C. Segurana no desenvolvimento


web

utilizando

framework

spring

security,

2013.

Disponvel

em:

<http://ftp.unipar.br/~seinpar/2013/artigos/Guilherme%20Baiestero
%20Lopes.pdf>. Acesso em: 30. mai. 2015.

ESPRITO SANTO, Adrielle. Segurana da informao, 2010. Disponvel em:


<http://www.ice.edu.br/TNX/encontrocomputacao/artigosinternos/aluno_adrielle_fernanda_seguranca_da_informacao.pdf>. Acesso em:
30. mai. 2015.

SOUSA, Ana. Estudo do desenvolvimento de uma aplicao web


utilizando o spring framework. 2010. 53 f. Especialista Universidade
Estadual de Maring, Maring, 2010.

ANDRADE, Rafael. Sistema online de armazenamento de documentos


sigilosos adotando padres de segurana. 2012. 41 f. Bacharel
Faculdade de tecnologia de So Jos dos Campos, 2012.

SPRING. Spring security. Disponvel em: <http://projects.spring.io/springsecurity/>. Acesso em: 30. Mai. 2015.

GUSSO, Carlos. Segurana em Java EE. Aprenda a criar aplicaes web


seguras,

2011.

Disponvel

em:

<http://www.devmedia.com.br/websys.5/webreader.asp?
cat=6&artigo=3239&revista=javamagazine_88>. Acesso em: 30. Mai. 2015.

MEDEIROS, Higor. Spring Security 3.1.Configurao e utilizao em um


exemplo web, 2014. Disponvel em: <http://www.devmedia.com.br/springsecurity-3-1-configuracao-e-utilizacao-em-um-exemplo-web/30112>.

Acesso

em: 30. mai. 2015.

HUGHES, Roger. Dez coisas que voc pode fazer com Spring Security.
Disponvel em: <http://imasters.com.br/linguagens/java/dez-coisas-que-vocepode-fazer-com-o-spring-security/>. Acesso em: 30. mai. 2015.

MARIANI, Thain; ARAJO, Everton. Revista Easy Java Magazine. Boas


prticas com JSF - Revista Easy Java Magazine. v. 28. p 29-36. 2013.
ZANINI, Michel. Revista Easy Java Magazine. Spring Security. v. 69. p 28-37.
2009.

JATOBA, Alessandro. Hibernate: Evitando problemas de mapeamento, 2015.


Disponvel em: <http://www.devmedia.com.br/hibernate-evitando-problemas-demapeamento/32531>. Acesso em: 29. mai. 2015.

WIKIPDIA. Autorizao. Disponivel em: < http://pt.wikipedia.org/wiki/Autoriza


%C3%A7%C3%A3o>. Acesso em: 02. Jun. 2015.

TOSIN,

carlos.

Segurana

em

Java

EE.

Disponvel

em:

<http://www.devmedia.com.br/seguranca-em-java-ee-java-magazine88/19334>. Acesso em: 06. Jun. 2015.

BASTOS, Daniel. O que Model-view-controller (MVC)?, 2011. Disponivl em:


<http://www.oficinadanet.com.br/artigo/desenvolvimento/o_que_e_model-viewcontroller_mvc>. Acesso em: 07. Jun. 2015.