Propagação de Identidades

24
<Insert Picture Here> Propagação de Identidades em Ambientes N Camadas [email protected] MCSO 1.086/10

description

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

Transcript of Propagação de Identidades

Page 1: Propagação de Identidades

<Insert Picture Here>

Propagação de Identidades em Ambientes N Camadas

[email protected]

MCSO 1.086/10

Page 2: Propagação de Identidades

Agenda.

• Rastreabilidade com Pool de Conexões• Propagação de Credenciais

• CLIENT_IDENTIFIER• PROXY USER• ENTERPRISE USER

• Restrições• Perguntas e Respostas

Page 3: Propagação de Identidades

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

DatabaseDatabaseApplication Application

ServerServer

Page 4: Propagação de Identidades

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

Page 5: Propagação de Identidades

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

Page 6: Propagação de Identidades

CLIENT_IDENTIFIER

• PL/SQL• DBMS_SESSION.SET_IDENTIFIER

CREATE OR REPLACE TRIGGER LOGON_TRIGGERAFTER LOGON ON DATABASEDECLARE

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;

Page 7: Propagação de Identidades

CLIENT_IDENTIFIER

• C/C++• OCIAttrSet()• OCI_ATTR_CLIENT_IDENTIFIER

• Exemplos• Oracle® Call Interface Programmer's Guide,

10g Release 2 (10.2)

• Capítulo 8

Page 8: Propagação de Identidades

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

Page 9: Propagação de Identidades

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””););

Page 10: Propagação de Identidades

D E M O N S T R A Ç Ã O

Page 11: Propagação de Identidades

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

Page 12: Propagação de Identidades

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.

Page 13: Propagação de Identidades

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

Page 14: Propagação de Identidades

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

Page 15: Propagação de Identidades

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

Page 16: Propagação de Identidades

D E M O N S T R A Ç Ã O

Page 17: Propagação de Identidades

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

Page 18: Propagação de Identidades

Enterprise User

• Usuário e privilégios administrados partir de um diretório LDAP.

APP_GUESTAPP_GUESTSHARED SCHEMASHARED SCHEMA

HR_SCHEMAHR_SCHEMA

EO_SCHEMAEO_SCHEMA

FREDEnterprise User

HR_MGREnterprise Role

MaryEnterprise User

OE_MGREnterpise Role

LDAPLDAP

Enterprise UsersEnterprise UsersEnterprise RolesEnterprise Roles

Global RolesGlobal Roles

Global RolesGlobal Roles

Page 19: Propagação de Identidades

D E M O N S T R A Ç Ã O

Page 20: Propagação de Identidades

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

Page 21: Propagação de Identidades

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

Page 22: Propagação de Identidades

Sugestão de ImplementaçãoOracle Identity Manager + Enterprise Users

HRMS Reconciliação

Regras WorkflowGruposMeta-diretório

Auto Atendimento

Gestor Aprovador

Solicitação Eletrônica

ColaboradorExterno

Active Directory

ExchangeServidor ANS

OID

Page 23: Propagação de Identidades

RP&

Page 24: Propagação de Identidades