Download - Propagação de Identidades
![Page 1: Propagação de Identidades](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/1.jpg)
<Insert Picture Here>
Propagação de Identidades em Ambientes N Camadas
MCSO 1.086/10
![Page 2: Propagação de Identidades](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/10.jpg)
D E M O N S T R A Ç Ã O
![Page 11: Propagação de Identidades](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/16.jpg)
D E M O N S T R A Ç Ã O
![Page 17: Propagação de Identidades](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/19.jpg)
D E M O N S T R A Ç Ã O
![Page 20: Propagação de Identidades](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/23.jpg)
RP&
![Page 24: Propagação de Identidades](https://reader035.vdocuments.pub/reader035/viewer/2022062319/5572c68bd8b42abb378b4aa6/html5/thumbnails/24.jpg)