2. Agenda.
• Rastreabilidade com Pool de Conexões
• Propagação de Credenciais
• CLIENT_IDENTIFIER
• PROXY USER
• ENTERPRISE USER
• Restrições
• Perguntas e Respostas
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. 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. 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. 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;
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. 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.
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. 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);
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. 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
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. 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. 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