aspectos de segurança
DESCRIPTION
Aspectos de Segurança. Autenticação e Controle de Acesso. Ricardo Cavalcanti [email protected]. Jobson Ronan [email protected]. Introdução. Um sistema seguro garante que Nenhum evento danoso pode ocorrer com seus recursos (base de dados, processos etc.) Segurança não é apenas TI - PowerPoint PPT PresentationTRANSCRIPT
Aspectos de Segurança
Autenticação e Controle de Acesso
Ricardo [email protected]
Jobson [email protected]
2
Introdução
Um sistema seguro garante que Nenhum evento danoso pode ocorrer com seus recursos
(base de dados, processos etc.) Segurança não é apenas TI
Envolve controles físicos (portas e cadeados) Políticas de não compartilhamento de senha
É difícil dizer se um sistema é seguro ou não Segurança de um sistema, na verdade, visa à
segurança do sistema Não pretende chegar num estado de segurança absoluta
IMPORTANTE: não se empolgue desenvolvendo seus próprios sistemas de segurança.
3
Conceitos Fundamentais
Autenticação Principal: a entidade autenticada Login e senha; assinatura digital;
Autorização Checar a os privilégios do Principal para o uso
dos recursos Proteção à Integridade dos Dados
Prevenir ou pelo menos detectar modifição nos dados (i.e. através de um canal de comunicação)
Proteção à confidencialidade dos Dados Prevenir divulgação imprópria da informação
4
Segurança em Webapps
Autenticação: descrita no web.xml HTTP Básico e Disgest, Form-Based ou HTTPS
Autorização Declarativa
• <sercurity-constraint> no web.xml Programática
• isUserInRole e getUserPrincipal
Confidencialidade e Integridade De alto nível no web.xml
5
Segurança em EJB
Resume-se a Autenticação e Autorização Até EJB 1.1 não havia uma maneira
portável de Autenticação Desde EJB 2.0 é possível utilizar a API JAAS
– Java Authentication and Authorization Service
Controle de acesso Através de security policies Programática ou declarativa
6
JAAS – Visão geral
Permite autenticação e autorização de usuários em java
Permite o log on de usuários no sistema sem distinção do sistema de segurança de baixo nível A implementação (i.e. do servidor de
aplicação)determina se suas credenciais são autênticas
O suporte a sistemas de segurança mais avançados depende do servidor Independentemente, não altera o código da
aplicação
7
Candidatos à utilização de JAAS
Uma aplicação stand alone que faz acesso a um EJB, cujo usuário deve prover credenciais ao sistema.
Uma aplicação web na qual o usuário fornece as credenciais através de HTTP Básico e Disgest, Form-Based, HTTPS ou um Certificado Uma vez autenticado através de JAAS o
cliente pode fazer chamadas aos métodos seguramente
8
Rede
Autenticação com JAAS
Cliente(programador)
Servidor J2EE
LoginContext(container)
Configuration(container)
Subject(container)
Config File(programador)
Um ou mais LoginModule
(programador)
1:new()
7:login()
5:new()
6:inicialize()
8:login()
9:commit()
10:add Credentials
2:getConfiguration()3:getAppConfigurationEntry()
4:return a list of loginModules ()
9
Autorização com JAAS
Após a autenticação, o cliente necessita se autorizar para ter acesso aos métodos do bean
Pode ser declarativa ou programática É necessário definir security roles
Apenas Declarativamente Papeis que relacionam permissões de
operações e usuários
10
Secutiry Roles
As permissões de executar operações são associadas a roles.
Papéis desempenhados por usuários Um usuário vinculado a uma role
recebe todas as permissões atribuídas a esta role.
11
Autorização Programática
1. Escrever lógica de segurança Métodos isCallerInRole e getCallerPrincipal a
partir do EJBContext
2. Declarar as Security Roles abstratas que o bean irá utilizar
No Deployment descriptor <security-role-ref> e <role-name> dentro do nó do bean.
3. Mapear Abstract Roles em Actual Roles O deployer deve definir os nomes reais dos Roles <role-link> dentro do nó do bean e
<security-role> dentro de <assembly-descriptor>
12
Autorização declarativa
1. Declare as permissões dos métodos Dentro de <assembly-descriptor>
2. Declare as Security Roles Semelhante ao método Programático
3. Mapear Abstract Roles em Actual Roles
Semelhante ao método Programático
13
Exemplo...
<assembly-descriptor><method-permission> <role-name>administrators</role-name> <method>
<ejb-name>BankEJB</ejb-name><method-name>*</method-name>
</method></method-permission>
<method-permission> <role-name>managers</role-name> <method>
<ejb-name>BankEJB</ejb-name><method-name>changeAccount</method-name><method-params>String</method-params>
</method></method-permission>
<security-role><role-name>managers</role-name>
</security-role></assembly-descriptor>
...</ejb-jar>
14
Propagação da segurança
A identidade do Principal é propagada por todos os beans
A identidade do cliente é ignorada e outra é propagada
<entity> (...)<security-identity> <use-caller-identity /> <security-identity></entity>
<security-identity> <run-as> <role-name>admin</role-name> </run-as> <security-identity>
15
Declarativa ou Programática?
Declarativa Vantagem: Simplicidade e menor
acoplamento Desvantagem: menor controle
Programática Quando maior controle é necessário Instance level Authorization: saegurança
ligada à regra de negócio