aspectos de segurança

15
Aspectos de Segurança Autenticação e Controle de Acesso Ricardo Cavalcanti [email protected] Jobson Ronan [email protected]

Upload: aretha-rivera

Post on 30-Dec-2015

19 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: Aspectos de Segurança

Aspectos de Segurança

Autenticação e Controle de Acesso

Ricardo [email protected]

Jobson [email protected]

Page 2: Aspectos de Segurança

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.

Page 3: Aspectos 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

Page 4: Aspectos de Segurança

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

Page 5: Aspectos de Segurança

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

Page 6: Aspectos de Segurança

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

Page 7: Aspectos de Segurança

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

Page 8: Aspectos de Segurança

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 ()

Page 9: Aspectos de Segurança

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

Page 10: Aspectos de Segurança

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.

Page 11: Aspectos de Segurança

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>

Page 12: Aspectos de Segurança

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

Page 13: Aspectos de Segurança

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>

Page 14: Aspectos de Segurança

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>

Page 15: Aspectos de Segurança

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