Workshop Segurança JEE <br />
Agenda<br /><ul><li>Apresentação
Conceitos segurança JEE
Desenvolvendo: RAD
Implementação, testes
Demo
Java Authorization Contract for Containers JACC
Demo
Infraestrutura
Introdução a segurança de serviços web</li></li></ul><li>Apresentação<br />
3o pilar da Qualidade da Aplicação<br /><ul><li> Funcionalidade
 Performance
Segurança</li></li></ul><li>Problemas<br /><ul><li>Os aplicativos Web são o alvo n° 1 dos hackers que buscam explorar vuln...
 Os aplicativos são implantados com vulnerabilidades
 Configurações de baixa segurança expõem as empresas à perdas de negócios
 Os requisitos regulatórios de PCI exigem a segurança de aplicativo
 80% dos custos de desenvolvimento são gastos na identificação e correção de defeitos</li></li></ul><li>Benefícios<br /><u...
 Assessora e monitora conformidade da política de segurança em toda a empresa
 Melhora a conformidade com as normas do setor e exigências regulatórias (por exemplo PCI)
 Melhora a capacidade de integrar aplicativos críticos do negócio
 Teste e controle automatizados durante todo o ciclo de vida do desenvolvimento, reduzindo os custos de segurança a longo ...
Impacto no ciclo de desenvolvimento da aplicação
Limitação dos componentes desenvolvido internamente
Custo e prazo de atualização dos componentes
Modelo de autorização relativamente complicado
Falta de auditoria
Usar solução de mercado
Velocidade na colocação de novas aplicações
Aumentar controle de acesso – Diminuir falhas
Transparente para as aplicações
Auditoria de acesso
Gerenciamento unificado das políticas</li></li></ul><li>Ciclo de vida da aplicação<br />
Arquitetura lógica<br />Web Container<br />WebSEAL<br />Autorização<br />Servidor Políticas<br />EJB<br />Container<br />
Conceitos de Segurança JEE<br />
Modelo de segurança JEE<br /><ul><li>A segurança das aplicações JEE é implementada usando papeis de segurança (Role)
Os papeis de segurança são aplicados nos componentes Web e EJB</li></ul> métodos EJB ou URIs Web<br /><ul><li>A Segurança ...
Modelo de autorização baseado em papel<br />Quais papeis são permitidos?<br /><ul><li>EJB: roles necessários dos métodos
Servlet/jsp: roles necessários nas security constraints</li></ul>Acesso<br />autorizado<br />Lista de papeis<br />SIM<br /...
Obter os roles atribuídos a esse usuário/grupo </li></ul>NÃO<br />Lista de papeis<br />Acesso<br />negado<br />
Mapeamento<br />Application Deployment Descriptor<br />Grupo  Mapeamento<br />               usuários<br />Usuário<br />R...
Mapeamento Processos (antigo-novo)<br />Cadastrar<br />papelRU<br />2<br />ETrust<br />Papel RA<br />Permissão<br />Papel ...
Implementando a Segurança JEE<br />
Segurança EJB declarativa<br /><ul><li>Implementação de segurança declarativa com Annotation</li></ul>Lista de annotations...
Segurança EJB declarativa<br /><ul><li>Implementação de segurança declarativa com Annotation</li></ul>Restrigir acesso ao ...
Deployment descriptor EJB<br />ejb-jar.xml (diretório DonateEJB/ejbModule/META-INF) imediatamente antes do tag </ejb-jar.x...
Segurança WEB<br />Editor de segurança do RAD:<br />	Restringir o  acesso a páginas Web com segurança declarativa<br />
Informações de segurança<br />O editor de segurança insere as seguintes informações no arquivo web.xml:<br />A restrição d...
O elemento  <auth-constraint> define quais são os roles necessários para acessar esse conjunto de recursos Web.
O elemento  <security-role> declare os nomes dos roles utilizados nos elementos security-constraint.</li></li></ul><li><se...
Configurar roles do EAR e mapeamento de roles - 1<br />Próximo slide<br />
Configurar roles do EAR e mapeamento de roles - 2<br />
Teste da segurança declarativa EJB com JUnit<br />
Código para segurança<br />System.setProperty("com.ibm.SSL.ConfigURL", propDir +"ssl.client.props");<br />System.setProper...
Teste de segurançaem EJB<br />
Teste a segurança declarativa EJB com Universal Test Client (UTC)<br />
Teste da segurança declarativa Web<br />Mapeamento<br />
Teste da segurança declarativa Webcom o usuário DGADAMS<br />
Testar o acesso com o usuário DNARMSTRONG<br />
Implementar segurança programática numa página Web<br /><h:outputTextvalue="ROLES: "/><br /><h:outputTextvalue="EDITOR"ren...
DEMO<br />
Próximos SlideShares
Carregando em…5
×

Workshop05

544 visualizações

Publicada em

Publicada em: Tecnologia, Design
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
544
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
6
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Workshop05

  1. 1. Workshop Segurança JEE <br />
  2. 2. Agenda<br /><ul><li>Apresentação
  3. 3. Conceitos segurança JEE
  4. 4. Desenvolvendo: RAD
  5. 5. Implementação, testes
  6. 6. Demo
  7. 7. Java Authorization Contract for Containers JACC
  8. 8. Demo
  9. 9. Infraestrutura
  10. 10. Introdução a segurança de serviços web</li></li></ul><li>Apresentação<br />
  11. 11. 3o pilar da Qualidade da Aplicação<br /><ul><li> Funcionalidade
  12. 12. Performance
  13. 13. Segurança</li></li></ul><li>Problemas<br /><ul><li>Os aplicativos Web são o alvo n° 1 dos hackers que buscam explorar vulnerabilidades
  14. 14. Os aplicativos são implantados com vulnerabilidades
  15. 15. Configurações de baixa segurança expõem as empresas à perdas de negócios
  16. 16. Os requisitos regulatórios de PCI exigem a segurança de aplicativo
  17. 17. 80% dos custos de desenvolvimento são gastos na identificação e correção de defeitos</li></li></ul><li>Benefícios<br /><ul><li>Reduz o risco de interrupção, desfiguração ou roubo de dados associados com aplicativos Web
  18. 18. Assessora e monitora conformidade da política de segurança em toda a empresa
  19. 19. Melhora a conformidade com as normas do setor e exigências regulatórias (por exemplo PCI)
  20. 20. Melhora a capacidade de integrar aplicativos críticos do negócio
  21. 21. Teste e controle automatizados durante todo o ciclo de vida do desenvolvimento, reduzindo os custos de segurança a longo prazo.</li></li></ul><li>Motivações e objetivos<br /><ul><li>Controle de acesso incorporado nas aplicações pode falhar
  22. 22. Impacto no ciclo de desenvolvimento da aplicação
  23. 23. Limitação dos componentes desenvolvido internamente
  24. 24. Custo e prazo de atualização dos componentes
  25. 25. Modelo de autorização relativamente complicado
  26. 26. Falta de auditoria
  27. 27. Usar solução de mercado
  28. 28. Velocidade na colocação de novas aplicações
  29. 29. Aumentar controle de acesso – Diminuir falhas
  30. 30. Transparente para as aplicações
  31. 31. Auditoria de acesso
  32. 32. Gerenciamento unificado das políticas</li></li></ul><li>Ciclo de vida da aplicação<br />
  33. 33. Arquitetura lógica<br />Web Container<br />WebSEAL<br />Autorização<br />Servidor Políticas<br />EJB<br />Container<br />
  34. 34. Conceitos de Segurança JEE<br />
  35. 35. Modelo de segurança JEE<br /><ul><li>A segurança das aplicações JEE é implementada usando papeis de segurança (Role)
  36. 36. Os papeis de segurança são aplicados nos componentes Web e EJB</li></ul> métodos EJB ou URIs Web<br /><ul><li>A Segurança pode ser especificada de 2 maneiras:</li></ul> Declarativa em tempo de configuração, através dos ‘deployment descriptors’<br /> Programática utilizando as APIS padrões em tempo de desenvolvimento<br /><ul><li>A associação dos usuários e dos grupos com os papeis JEE é geralmente feito no momento da instalação da aplicação (deploy)</li></li></ul><li>Processo<br />Método<br />EJB<br />Bob<br />Papel-Permissão<br />Ligação<br />Método<br />EJB<br />Administrador<br />Ana<br />Método<br />EJB<br />Enterprise Java Bean<br />Solicitante<br />Servlet<br />Corretores<br />jsp<br />gif,<br />css<br />Atendente<br />Segurados<br />Componentes<br />Web<br />Role Segurança JEE<br />Usuários/Grupos<br />
  37. 37. Modelo de autorização baseado em papel<br />Quais papeis são permitidos?<br /><ul><li>EJB: roles necessários dos métodos
  38. 38. Servlet/jsp: roles necessários nas security constraints</li></ul>Acesso<br />autorizado<br />Lista de papeis<br />SIM<br />Algum igual?<br />Requisição<br />autenticada<br />Quais papeis são atribuídos?<br /><ul><li> Obter nome do usuário/grupo nos credenciais
  39. 39. Obter os roles atribuídos a esse usuário/grupo </li></ul>NÃO<br />Lista de papeis<br />Acesso<br />negado<br />
  40. 40. Mapeamento<br />Application Deployment Descriptor<br />Grupo  Mapeamento<br /> usuários<br />Usuário<br />Recurso  Mapeamento Role<br />Usuário<br />Usuário<br />Usuário<br />Usuário<br />Role<br />Metodo EJB<br />Role<br />Grupo<br />URI Web<br />Grupo<br />Usuário<br />Role  Mapeamento Principal<br />Definido pelo programador da aplicação<br />Definido pelo instalador da aplicação<br />
  41. 41. Mapeamento Processos (antigo-novo)<br />Cadastrar<br />papelRU<br />2<br />ETrust<br />Papel RA<br />Permissão<br />Papel RU<br />4<br />5<br />6<br />Cadastrar usuário<br />Associar Papel RU ao usuário<br />1<br />Cadastrar permissão com descritor da aplicação<br />Cadastrar papel RA e associar permissão<br />Associar papel RA e papel RU<br />3<br />Usuário<br />GerenciadorLDAP<br />sincronização<br />Colocar usuário no grupo<br />RAD-Security Editor<br />Deploy-script<br />Role JEE<br />Recurso JEE<br />Grupo RU<br />
  42. 42. Implementando a Segurança JEE<br />
  43. 43. Segurança EJB declarativa<br /><ul><li>Implementação de segurança declarativa com Annotation</li></ul>Lista de annotations EJB<br />@DeclareRoles<br />@DenyAll<br />@PermitAll<br />@RolesAllowed<br />@RunAs<br />
  44. 44. Segurança EJB declarativa<br /><ul><li>Implementação de segurança declarativa com Annotation</li></ul>Restrigir acesso ao EJB de sessão Donate<br />import javax.annotation.security.DeclareRoles;<br />import javax.annotation.security.RolesAllowed;<br />....<br />@DeclareRoles( { "DMANAGERS_ROLE", "DUSERS_ROLE" })<br />public class DonateBean implements DonateBeanInterface, ...... {<br />@RolesAllowed( { "DMANAGERS_ROLE","DUSERS_ROLE" })<br />public void donateToFund(Employee employee, Fund fund, int hours) ...<br />......<br />@RolesAllowed( { "DMANAGERS_ROLE","DUSERS_ROLE" })<br />public String donateToFund(int employeeId, String fundName, int hours) {<br />
  45. 45. Deployment descriptor EJB<br />ejb-jar.xml (diretório DonateEJB/ejbModule/META-INF) imediatamente antes do tag </ejb-jar.xml> <br /><assembly-descriptor><br /> <security-role><br /> <role-name>DMANAGERS_ROLE</role-name><br /> </security-role><br /> <security-role><br /> <role-name>DUSERS_ROLE</role-name><br /> </security-role><br /> <method-permission><br /> <role-name>DUSERS_ROLE</role-name><br /> <role-name>DMANAGERS_ROLE</role-name><br /> <method><br /> <ejb-name>DonateBean</ejb-name><br /> <method-name>donateToFund</method-name><br /> </method><br /> </method-permission><br /></assembly-descriptor><br /><ul><li>Utilizar o editor de Segurança do RAD para auxilio</li></li></ul><li>Segurança Web declarativa<br /><ul><li>Implementação de segurança declarativa com Annotation</li></ul>Lista de annotations Web<br />@DeclareRoles<br />@RunAs<br />
  46. 46. Segurança WEB<br />Editor de segurança do RAD:<br /> Restringir o acesso a páginas Web com segurança declarativa<br />
  47. 47. Informações de segurança<br />O editor de segurança insere as seguintes informações no arquivo web.xml:<br />A restrição de segurança <security-constraint> é o elemento base que contém:<br /><ul><li>O elemento <web-resource-collection> define os privilegios de acesso a um conjunto de recursos. Este elemento pode especificar padrões de URL e métodos HTTP.
  48. 48. O elemento <auth-constraint> define quais são os roles necessários para acessar esse conjunto de recursos Web.
  49. 49. O elemento <security-role> declare os nomes dos roles utilizados nos elementos security-constraint.</li></li></ul><li><security-constraint><br /> <display-name>ALLAUTHENTICATED_ROLEConstraint</display-name><br /> <web-resource-collection><br /> <web-resource-name>ALLAUTHENTICATED_ROLECollection</web-resource-name><br /> <url-pattern>/faces/FindEmployee.jsp</url-pattern><br /> <url-pattern>/FindEmployee.faces</url-pattern><br /> <url-pattern>/FindEmployee.jsp</url-pattern><br /> <http-method>GET</http-method><br /> <http-method>PUT</http-method><br /> <http-method>HEAD</http-method><br /> <http-method>TRACE</http-method><br /> <http-method>POST</http-method><br /> <http-method>DELETE</http-method><br /> <http-method>OPTIONS</http-method><br /> </web-resource-collection><br /> <auth-constraint><br /> <description>Auto generated Authorization Constraint</description><br /> <role-name>ALLAUTHENTICATED_ROLE</role-name><br /> </auth-constraint><br /></security-constraint><br /><security-role><br /> <description><br /> </description><br /> <role-name>DUSERS_ROLE</role-name><br /></security-role><br />web.xml<br />
  50. 50. Configurar roles do EAR e mapeamento de roles - 1<br />Próximo slide<br />
  51. 51. Configurar roles do EAR e mapeamento de roles - 2<br />
  52. 52. Teste da segurança declarativa EJB com JUnit<br />
  53. 53. Código para segurança<br />System.setProperty("com.ibm.SSL.ConfigURL", propDir +"ssl.client.props");<br />System.setProperty("java.security.auth.login.config", propDir +"wsjaas_client.conf");<br />System.setProperty("com.ibm.CORBA.ConfigURL",propDir +"sas.client.props");<br />Definir SSL, JAAS e SAS (Secure Authentication Services)<br />Propriedades necessárias para acessar o servidor<br />ctx.lookup("");<br />Conectar ao Contexto inicial para carregar o Realm default e carregar as informações necessárias ao Security Server<br />LoginContext lc = new LoginContext("WSLogin",<br />new WSCallbackHandlerImpl("DNARMSTRONG", "xxxxxxxx"));<br />lc.login();<br />final Subject subject = lc.getSubject();<br />System.out.println("subject=" + subject.toString());<br />WSSubject.setRunAsSubject(subject);<br />Criar o contexto do login, fazer o login, e colocar o usuário autenticado como o usuário default para este thread de execução<br />
  54. 54. Teste de segurançaem EJB<br />
  55. 55. Teste a segurança declarativa EJB com Universal Test Client (UTC)<br />
  56. 56. Teste da segurança declarativa Web<br />Mapeamento<br />
  57. 57. Teste da segurança declarativa Webcom o usuário DGADAMS<br />
  58. 58. Testar o acesso com o usuário DNARMSTRONG<br />
  59. 59. Implementar segurança programática numa página Web<br /><h:outputTextvalue="ROLES: "/><br /><h:outputTextvalue="EDITOR"rendered="#{rich:isUserInRole('EDITOR')}"/><br /><h:outputTextvalue="LEITOR"rendered="#{rich:isUserInRole('LEITOR')}"/><br /><h:outputTextvalue="DIRETOR"rendered="#{rich:isUserInRole('DIRETOR')}"/><br /><h:outputTextvalue="GERENTE"rendered="#{rich:isUserInRole('GERENTE')}"/><br />
  60. 60. DEMO<br />
  61. 61. Java Authorization Contract for Containers<br />JACC<br />
  62. 62. Introdução a JACC<br /><ul><li>JACC permite aos servidores de aplicação interagir com fornecedores de autorização externos usando interfaces padronizadas para tomar as decisões de autorização
  63. 63. JACC define as classes de permissão para os ContainersEJB e Web
  64. 64. JACC não específica como atribuir roles aos principais (grupos e usuários)</li></li></ul><li>Java Authorization Contract for Containers (JACC)<br />Administrador<br />Aplicação<br />WebSphere Application Server: Container J2EE<br />Usuário<br />Administração Aplicação(deploy, undeploy)<br />Controle de acesso<br />Gerencia recursos, roles, mapeamentos<br />Acesso permitido?<br />Tivoli Access Manager: Provedor JACC <br />Configuração Políticas<br />Decisão de acesso<br />Repositório provedor<br />
  65. 65. Adição WebSphere<br /><ul><li>WebSphere suporta 2 “principals” especiais para o mapeamento Role  Principal:
  66. 66. All Authenticated – role mapeado para All Authenticatedé atribuido a qualquer usuário autenticado
  67. 67. Everyone – role mapeado para Everyone é atribuido a qualquer requisitante</li></li></ul><li>Integração TAM com WAS<br /><ul><li>Os componentes do cliente TAM são embutidos no WebSphere Application Server
  68. 68. TAM é o provedor default JACC para WebSphere
  69. 69. O cliente TAM pode ser configurado usando scripts ou a console de administração
  70. 70. O servidor TAM pode fornecer função de autenticação</li></li></ul><li>Provedor TAM JACCConfiguração - 1<br />Próximo slide<br />
  71. 71. Provedor TAM JACCConfiguração - 2<br />Aceitartodos osDefaults<br />Próximo slide<br />
  72. 72. Provedor TAM JACCConfiguração - 3<br />Servidor<br />Politicas<br />Servidor<br />Autorização<br />Porta usado para escutar as atualizações da base de Politicas<br />Criado durante a configuração da Segurança WAS<br />
  73. 73. Provedor TAM JACCMapeamento Role para Principal<br />
  74. 74. Habilitar a segurança das aplicações Java EE<br />
  75. 75. DEMO<br />
  76. 76. Infraestrutura<br />
  77. 77. Integração com Portal<br />LDAP<br />Portal Legado<br />App-Legado<br />WebSEAL<br />Vignette<br />App-Arq3.0<br />TAM<br />
  78. 78. Modelo antigo-novo<br />Usuário<br />PapelRA<br />F0104158<br />RARHUFuncionario<br />prhucontroleponto<br />prhuconsultahol<br />RUPSGFuncionario<br />RUPSGColaborador<br />PapelRU<br />Permissão<br />RUPSGFuncionario<br />prhucontroleponto<br />RARHUFuncionario<br />RASYSFuncionario<br />prhuregistrarponto<br />prhuiniciarweb<br />RUPSGFuncionario<br />ROLE_RHUPontoApp<br />Mesma<br />URL<br />F0104158<br />F3400321<br />/rhuapp/registrarponto.do<br />/rhuapp/consultalista.do<br />Grupo<br />RUPSGColaborador<br />ROLE_RHUPontoApp<br />RoleJEE<br />F0104158<br />F3400321<br />RUPSGFuncionario<br />RUPSGColaborador<br />
  79. 79. Configuração TAM: grupo<br />Referência para grupo LDAP<br />
  80. 80. Configuração TAM: user<br />Referência para usuário LDAP<br />
  81. 81. Nomenclatura<br /><ul><li>Sintaxe</li></ul>Papel: RUXXXColaborador, RAYYYAdministrador<br />XXX: empresa, diretória, área de negócio<br />YYY: identificação do sistema<br />Role J2EE: ROLE_YYYAdministrador<br />Grupo: RUXXXColaborador<br />
  82. 82. Configuração servidores<br />li450<br />li413<br />li412<br />TAM<br />TAM<br />Web SEAL<br />Web SEAL<br />Dmgr<br />Authorization Server<br />Authorization Server<br />Catalog Server<br />Catalog Server<br />WAS-Cluster<br />Session Manager<br />Session Manager<br />WAS-Cluster<br />Policy Server<br />Policy Server<br />RHEL-luci<br />TSPM<br />TSPM<br />Dmgr<br />TSPM<br />TSPM<br />WAS-Cluster<br />DB2<br />DB2<br />DB2-Cluster<br />TIP<br />TIP<br />
  83. 83. Introdução a Segurança Web Services<br />
  84. 84. Motivos para DataPower<br /><ul><li>XML é a linguagem de web services e SOA
  85. 85. XML é onipresente – Em alguns anos, XML estará em qualquer aplicação, equipamento e documento presente nas redes das empresas.
  86. 86. Desafios do XML
  87. 87. XML é muito ‘falante’
  88. 88. XML precisa de muito banda.
  89. 89. Tem um impacto direito sobre a performance do servidor de aplicação.
  90. 90. O processamento XML precisa de um número significativos de ciclos de processador e de recursos de memória.
  91. 91. XML é um texto efetivamente legível por humano
  92. 92. Não tem mecanismo nativo de segurança.
  93. 93. Fácil de entender e vulnerável a intercepção.
  94. 94. A segurança pode ser implementada no servidor de aplicação, mas é um processamento adicional e aumenta o problema de performance.
  95. 95. SOA não é somente Web Services e XML
  96. 96. Empresas precisam integrar sistemas legados, formatos de mensagens e protocolos numa arquitetura SOA.
  97. 97. Necessidade de uma habilidade para transformar sistemas legados em formato XML.</li></li></ul><li>O que o DataPower endereça ?<br /><ul><li>Performance XML
  98. 98. Como? – transferindo o processamento do XML do servidor de aplicação para o hardware otimizado do DataPower.
  99. 99. Por conseqüência, reduzindo o número necessário de servidores de aplicação
  100. 100. Segurança XML
  101. 101. Como? – transferindo a segurança XML para o DataPower
  102. 102. Fornece a segurança padronizada – WS Security
  103. 103. Integração XML e sistemas legados
  104. 104. Como ? – usando DataPower para transformar XML em formato e protocolo legados de mensagem:
  105. 105. XML -> HMTL (renderiza conteúdo HTML para Portal)
  106. 106. XML <-> Mensagem MQ
  107. 107. Tudo é feito a velocidade de rede</li></li></ul><li>Arquitetura com DataPower<br />Internet<br />Intranet<br />DMZ<br />Cliente<br />Applicações<br /><ul><li> Transformação
  108. 108. Integração
  109. 109. Roteamento
  110. 110. Ameaças XML
  111. 111. Controle Acesso
  112. 112. SLA</li></ul>Cliente<br />
  113. 113. Exposição seletiva<br />
  114. 114. XSLT Processor<br />XG3 or XG4<br />WebSphere DataPower XI50<br />Crypto<br />Processor<br />2 x 160 GB<br /> HDD<br />4GB RAM<br />512MB Flash Memory<br />512MB Flash Memory<br />Serial Port<br />4 x 10/100/1000 Ethernet Ports<br />
  115. 115. Referência<br />Portonet: Home > Departamentos > Informática - Arquitetura de TI > Arquitetura de Software > DocumentosPadrão de Arquitetura de Segurança Java.pdf<br />Contatos:<br /> jose.cardoso@escalainfo.com.br<br /> philippe.guillaume@portoseguro.com.br<br />
  116. 116. Obrigado<br />

×