segurança j2ee

24
Rodrigo Cândido da Silva

Upload: rodrigo-candido-da-silva

Post on 17-May-2015

1.471 views

Category:

Technology


1 download

DESCRIPTION

Segurança J2EE

TRANSCRIPT

Page 1: Segurança J2EE

Rodrigo Cândido da Silva

Page 2: Segurança J2EE

Comentar os principais conceitos sobre segurança e demonstrar a implementação de segurança da plataforma Java EE.

Page 3: Segurança J2EE

Segurança◦ Objetivos da Segurança◦ Princípios de Segurança◦ Algumas Soluções de Segurança

Plataforma Java EE JAAS

◦ Autenticação◦ Autorização◦ Utilização

Conclusões

Page 4: Segurança J2EE

“Um mecanismo de Segurança da Informação providencia meios para reduzir as vulnerabilidades existentes em um Sistema de Informação.”

Page 5: Segurança J2EE

Autenticação Autorização Auditoria Confidencialidade Integridade Disponibilidade Não Repudiação

Page 6: Segurança J2EE

Proteger os ativos; Garantir os princípios da segurança durante

todo o ciclo de vida da informação; Evitar que ameaças explorem as

vulnerabilidades; Evitar ou conter os ataques; Gerenciar e reduzir os riscos; Garantir a segurança da informação em

qualquer meio.

Page 7: Segurança J2EE

F DFonte de

InformaçãoDestino daInformação

Fluxo Normal

F D

Interrupção

F D

InterceptaçãoI

F D

Modificação

M

F D

Fabricação

F

Page 8: Segurança J2EE

IP Filtering Network Address Translation (NAT) IP Security (IPSec) SOCKS Secure Sockets Layer (SSL) Application Proxies Firewalls Secure Electronic Transactions (SET) …

Page 9: Segurança J2EE
Page 10: Segurança J2EE
Page 11: Segurança J2EE
Page 12: Segurança J2EE

Serviços oferecidos pelos containers:◦ Escalabilidade◦ Gestão de memória, ciclo de vida de objetos e estado de

objetos◦ Conexões, Transações, Serviço de nomes

◦Segurança◦ Tolerância a falhas◦ Integração◦ WebServices◦ Clustering◦ Alta disponibilidade ◦ Confiabilidade◦ …

Page 13: Segurança J2EE

Java Authentication and Authorization Service (JAAS); Mecanismo de Autenticação e Autorização de

Usuários, baseado em uma identidade e role(s) (perfil de acesso) associado(s);

Totalmente compatível com o padrão Java EE; Restringe o acesso a uma aplicação Java, limitando

acesso a uma url, método de um componente EJB ou Conteúdo de uma tela do usuário;

Possibilita uma abordagem declarativa ou programática, dando a possibilidade de um desacoplamento entre segurança e regras de negócio.

Page 14: Segurança J2EE

Aplicação

Login Context

Login Modules – São “plugáveis” e não interferem nos algorítimos de negócio implementados...

LDAPLoginModule

DataBaseLoginModule

NTLoginModule

Active Directory MySQL NT Server

Page 15: Segurança J2EE
Page 16: Segurança J2EE

HTTP Basic Authentication

Form-Based Authentication

Page 17: Segurança J2EE

HTTPS Client Authentication

Digest Authentication

Page 18: Segurança J2EE
Page 19: Segurança J2EE

Passo 1 - Configurando o LoginModule

<!-- Exemplo: File Login Module Arquivo: %JBOSS_HOME%\server\default\conf\login-config.xml--><application-policy name="exemplojaas">

<authentication> <login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule" flag="required">

<module-option name="usersProperties">props/exemplo-jaas-users.properties</module-option> <module-option name="rolesProperties">props/exemplo-jaas-roles.properties</module-option>

</login-module> </authentication>

</application-policy>

Page 20: Segurança J2EE

Passo 2 – Definindo o Tipo de Autenticação

<!— Define Formulário de login (login-config). Arquivo: WEB-INF\web.xml-->

<login-config>

<auth-method>FORM</auth-method> <realm-name>ExemploJAAS</realm-name>

<form-login-config> <form-login-page>/loginpage.do</form-login-page> <form-error-page>/loginfail.do</form-error-page> </form-login-config>

</login-config>

Page 21: Segurança J2EE

Passo 3 – Protegendo o Web Container

<!— Define a constraint de seguranca para as actions do sistema. Arquivo: WEB-INF\web.xml<security-constraint>

<web-resource-collection> <web-resource-name>ExemploJAAS</web-resource-name> <description>Mapeamento da acoes do sistema</description> <url-pattern>/homepage.do</url-pattern> <url-pattern>/funcionario.do</url-pattern> </web-resource-collection>

<auth-constraint> <role-name>supervisor</role-name> <role-name>gerente</role-name> </auth-constraint>

</security-constraint>

Page 22: Segurança J2EE

Passo 4 – Protegendo o EJB Container

<!— EJB 3.0 - Via annotation (Java5 ou superior) Definição da classe-->@Stateless@DeclareRoles({"supervisor","gerente","operador"})public class FuncionarioServiceImpl implements FuncionarioService {

@RolesAllowed("supervisor")public void delete(Integer idFuncionario) {}

@RolesAllowed({"supervisor","gerente"})public void save(Funcionario funcionario) throws LimiteSalarioException { if ((!context.isCallerInRole("supervisor") && (funcionario.getSalario() > 10000.0d))){ throw new LimiteSalarioException("limite.salario.exception");}}

}

Page 23: Segurança J2EE

JAAS fornece uma estrutura simples, produtiva e integrada com a plataforma Java;

JAAS não implementa toda estrutura de segurança necessária à uma aplicação. Portanto, ele deve ser combinado com outros mecanismos (SSL, Firewalls, Proxies, etc).

Page 24: Segurança J2EE

?