Propagação de Identidades

753 views

Published on

Propagação de identidades do browser até o banco de dados em ambientes n camadas

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
753
On SlideShare
0
From Embeds
0
Number of Embeds
45
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Propagação de Identidades

  1. 1. <Insert Picture Here> Propagação de Identidades em Ambientes N Camadas alexandre.viana@oracle.com MCSO 1.086/10
  2. 2. Agenda. • Rastreabilidade com Pool de Conexões • Propagação de Credenciais • CLIENT_IDENTIFIER • PROXY USER • ENTERPRISE USER • Restrições • Perguntas e Respostas
  3. 3. Rastreabilidade com pool de conexões ? • Quem é o usuário real ? • O usuário do pool possui privilégios em excesso ? • Posso evitar que os usuários acessem os dados diretamente ? • Como/Quem devo auditar ? Client A Client A, B, or C? Client B Client C DatabaseDatabase ApplicationApplication ServerServer
  4. 4. Propagação de Credenciais • Oracle Database possui vários mecanismos para propagação de credenciais a partir de um pool de conexões • CLIENT_IDENTIFIER • Proxy User • Enterprise User • Disponível em várias linguagens • PL/SQL • C/C++ • .NET e VB • Java
  5. 5. CLIENT_IDENTIFIER • Viabiliza a propagação da credencial do usuário através de variável de contexto • Aplicação é responsável pelo valor da variável de contexto CLIENT_IDENTIFER • Variável de contexto CLIENT_IDENTIFIER é propagada para as trilhas de auditoria do Oracle Database • Compatível com aplicações client/server ou n-tier
  6. 6. CLIENT_IDENTIFIER • PL/SQL • DBMS_SESSION.SET_IDENTIFIER CREATE OR REPLACE TRIGGER LOGON_TRIGGER AFTER LOGON ON DATABASE DECLARE UID VARCHAR2(64); BEGIN SELECT SYS_CONTEXT('USERENV', 'OS_USER') INTO UID FROM DUAL; DBMS_SESSION.SET_IDENTIFIER(UID);DBMS_SESSION.SET_IDENTIFIER(UID); END LOGON_TRIGGER;
  7. 7. CLIENT_IDENTIFIER • C/C++ • OCIAttrSet() • OCI_ATTR_CLIENT_IDENTIFIER • Exemplos • Oracle® Call Interface Programmer's Guide, 10g Release 2 (10.2) • Capítulo 8
  8. 8. CLIENT_IDENTIFIER • ODP.NET • OracleConnection • Pool de Conexões OracleConnection con = new OracleConnection(); con.ConnectionString = “UserId=scott; Password=tiger; DataSource=oracle;” + “ClientId=AVIANAClientId=AVIANA"; con.Open();
  9. 9. CLIENT_IDENTIFIER • JDBC 10g e 11g • OracleConnection.setClientIdentifier(); • OracleConnection.clearClientIdentifier(); Context ctx = new InitialContext(); ds = (OracleDataSource) ctx.lookup("jdbc/HRCoreDS"); conn = (OracleConnection) ds.getConnection(); conn.setClientIdentifier(conn.setClientIdentifier(““AVIANAAVIANA””);); … conn.clearClientIdentifier(conn.clearClientIdentifier(““AVIANAAVIANA””););
  10. 10. D E M O N S T R A Ç Ã O
  11. 11. CLIENT_IDENTIFIER • Baixo impacto • Fácil implementação • Não permite o controle de privilégios, somente propagação das credenciais • Habilita recursos avançados do Oracle Database • Virtual Private Database • Label Security • Log Miner
  12. 12. Proxy User • Aplicação estabelece pool de conexão através de um usuário proxy com privilégios restritos • Durante execução aplicação conecta o usuário real através do usuário proxy • Privilégios podem ser configurados pela aplicação no momento da conexão do usuário real • Proxy Connections podem ser reutilizadas pelo mesmo usuário real • Informações sobre o usuário real são propagadas para as trilhas de auditoria do Oracle Database.
  13. 13. Proxy User • C/C++ • OCIAttrSet() • OCI_ATTR_USERNAME • OCI_ATTR_PROXY_CREDENTIALS • OCI_ATTR_INITIAL_CLIENT_ROLES • Exemplos • Oracle® Call Interface Programmer's Guide, 10g Release 2 (10.2) • Capítulo 8
  14. 14. Proxy User • ODP.NET • OracleConnection • Pool de Conexões OracleConnection con = new OracleConnection(); con.ConnectionString = "User Id=sinesio;Password=welcome1;" + "Data Source=oracle; Proxy User Id=proxy; Proxy Password=welcome1; "; con.Open();
  15. 15. Proxy User • JDBC Pré 10g • OracleOCIConnectionPool • JDBC 10g e 11g • OracleConnection.openProxySession(); Context ctx = new InitialContext(); ds = (OracleDataSource) ctx.lookup("jdbc/HRCoreDS"); conn = (OracleConnection) ds.getConnection(); Properties prop = new Properties(); prop.put(OracleConnection.PROXY_USER_NAME,username); conn.openProxySessionconn.openProxySession (OracleConnection.PROXYTYPE_USER_NAME, prop);(OracleConnection.PROXYTYPE_USER_NAME, prop);
  16. 16. D E M O N S T R A Ç Ã O
  17. 17. Proxy User • Implementação mais trabalhosa • Requer alteração nas aplicações • Requer alteração no banco de dados • Viabiliza o controle de privilégios via aplicação • Habilita recursos avançados do Oracle Database • Virtual Private Database • Label Security • Log Miner
  18. 18. Enterprise User • Usuário e privilégios administrados partir de um diretório LDAP. APP_GUESTAPP_GUEST SHARED SCHEMASHARED SCHEMA HR_SCHEMAHR_SCHEMA EO_SCHEMAEO_SCHEMA FRED Enterprise User HR_MGR Enterprise Role Mary Enterprise User OE_MGR Enterpise Role LDAPLDAP Enterprise UsersEnterprise Users Enterprise RolesEnterprise Roles Global RolesGlobal Roles Global RolesGlobal Roles
  19. 19. D E M O N S T R A Ç Ã O
  20. 20. Enterprise User • Implementação mais trabalhosa • Requer alteração nas aplicações • Requer alteração no banco de dados • Requer implantação do Oracle Internet Directory • Ganhos significativos de administração • Usuários • Privilégios • Administração Unificada a partir de um LDAP • Habilita recursos avançados do Oracle Database • Virtual Private Database • Label Security • Log Miner
  21. 21. Observações e Restrições • Pool de Conexões • Gerenciado pelo Servidor • Servidor deve suporta driver nativo oracle • Gerenciado pela Aplicação • Simples customização • EJB • Implementação viável somente para BMP • Frameworks de Persistência • Oracle TopLink (EclipseLink) • Suporte Nativo • Hibernate • Via customização do ConnectionProvider
  22. 22. Sugestão de Implementação Oracle Identity Manager + Enterprise Users HRMS Reconciliação Regras WorkflowGruposMeta-diretório Auto Atendimento Gestor Aprovador Solicitação Eletrônica Colaborador Externo Active Directory ExchangeServidor ANS OID
  23. 23. R P&

×