Revisado por Marcelo Pivovar
O Oracle Database Vault é um framework de segurança diretamente integrado ao Kernel do banco de dados Oracle. Ele tem por objetivo garantir que os DBAs consigam realizar seu trabalho sem acesso às informações que estão nas tabelas da aplicação.
Para monitorar o Orale Database Vault com o Oracle Enterprise Manager Total Cloud Control 12c o usuário dbsmnp deve possuir o privilégio DV_MONITOR.
Para isso, execute os comandos abaixo:
[oracle@emnode bin]$ $ORACLE_HOME/bin/sqlplus c##dv_acctmgr/Next1234#
SQL*Plus: Release 12.1.0.2.0 Production on Sun Jun 26 16:04:27 2016
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Advanced Analytics,
Oracle Database Vault and Real Application Testing options
SQL> alter user dbsnmp identified by “db%1345T” account unlock;
User altered.
SQL> conn c##dv_admin/Next1234#
Connected.
SQL> grant dv_monitor to dbsnmp;
Grant succeeded.
Abra o Oracle Enterprise Manager Total Cloud Control 12c e adicione o banco de dados criado utilizando o processo manual:
Selecione o Host conforme abaixo:
Clique em “Next”:
Selecione o banco de dados ORCL e clique em “Configure”:
Informe a senha do utilizador dbsnmp, que é “db%1345T” e clique em “Test Connection”.
Após isso, clique no botão “Save”:
Na tela abaixo podemos verificar que o banco de dados ORCL, juntamente com o container ORCL_ORCL1_1 foram descobertos pelo OEM 12c:
Clique no botão ”Save” e o processo será finalizado.
O banco de dados será adicionado ao OEM 12c:
Acessando a interface do Oracle Database Vault no Oracle Enterprise Manager Total Cloud Control 12c
Selecione o Pluggable Database ORCL1_1:
No menu “Security” selecione “Database Vault”:
Informe o usuário c##dv_admin, que é o Database Vault Administrator:
A interface do Oracle Database Vault será aberta:
Na aba “Administration” é possível configurar o Oracle Database Vault e definir suas regras:
Na aba “Authorizations” podemos definir regras para o Data Pump, Scheduler, Streams, GoldenGate, Aplicação de Patches, Parâmetros de inicialização e Oradebug.
Iremos demonstrar como definir regras para o Data Pump e desabilitar o Oradebug, que é uma nova característica do Oracle Database 12.1.0.2.
Configurando o Database Operation Authorization para o Data Pump
Crie uma entrada no tnsnames.ora chamada ORCL1_1 e tente realizar um full database export com o usuário SYSTEM:
expdp system/sys@orcl1_1 dumpfile=export:export_full.dmp logfile=export:export_full.log full=y
Export: Release 12.1.0.2.0 - Production on Sun Jun 26 16:45:49 2016
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Advanced Analytics,
Oracle Database Vault and Real Application Testing options
Starting "SYSTEM"."SYS_EXPORT_FULL_01": system/********@orcl1_1 dumpfile=export:export_full.dmp
logfile=export:export_full.log full=y
ORA-39327: Oracle Database Vault data is being stored unencrypted in dump file set.
Estimate in progress using BLOCKS method...
Processing object type DATABASE_EXPORT/EARLY_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA
Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/TABLE_DATA
Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 4.265 MB
Processing object type DATABASE_EXPORT/PRE_SYSTEM_IMPCALLOUT/MARKER
Processing object type DATABASE_EXPORT/PRE_INSTANCE_IMPCALLOUT/MARKER
ORA-39126: Worker unexpected fatal error in KUPW$WORKER.FETCH_XML_OBJECTS [MARKER]
ORA-01031: insufficient privileges ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
ORA-06512: at "SYS.KUPW$WORKER", line 11259
----- PL/SQL Call Stack -----
object line object
handle number name
0x124772758 27116 package body SYS.KUPW$WORKER
0x124772758 11286 package body SYS.KUPW$WORKER
0x124772758 13515 package body SYS.KUPW$WORKER
0x124772758 3173 package body SYS.KUPW$WORKER
Você irá verificar que a operação falhou.
Quando o Oracle Database Vault estiver habilitado é necessário autorizar o usuário do SYSTEM a executar este tipo de operação. Para isto, navegue até a aba “Authorizations” e clique em Data Pump.
No painel direito, clique no botão B “Add”:
Selecione o usuário SYSTEM e marque as opções “Allow Full database” e “Grant DV_OWNER role”:
Agora tente realizar o export novamente com o usuário SYSTEM:
expdp system/sys@orcl1_1 dumpfile=export:export_full.dmp logfile=export:export_full.log full=y
Export: Release 12.1.0.2.0 - Production on Sun Jun 26 17:09:14 2016
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Advanced Analytics,
Oracle Database Vault and Real Application Testing options
Starting "SYSTEM"."SYS_EXPORT_FULL_03": system/********@orcl1_1 dumpfile=export:export_full.dmp
logfile=export:export_full.log full=y
ORA-39327: Oracle Database Vault data is being stored unencrypted in dump file set.
Estimate in progress using BLOCKS method...
Processing object type DATABASE_EXPORT/EARLY_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA
Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/TABLE_DATA
Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 5.578 MB
Processing object type DATABASE_EXPORT/PRE_SYSTEM_IMPCALLOUT/MARKER
Processing object type DATABASE_EXPORT/PRE_INSTANCE_IMPCALLOUT/MARKER
Processing object type DATABASE_EXPORT/TABLESPACE
Processing object type DATABASE_EXPORT/PROFILE
Processing object type DATABASE_EXPORT/SYS_USER/USER
Processing object type DATABASE_EXPORT/SCHEMA/USER
Processing object type DATABASE_EXPORT/RADM_FPTM
Processing object type DATABASE_EXPORT/GRANT/SYSTEM_GRANT/PROC_SYSTEM_GRANT
Processing object type DATABASE_EXPORT/SCHEMA/GRANT/SYSTEM_GRANT
Processing object type DATABASE_EXPORT/SCHEMA/ROLE_GRANT
Processing object type DATABASE_EXPORT/SCHEMA/DEFAULT_ROLE
Processing object type DATABASE_EXPORT/SCHEMA/ON_USER_GRANT
Processing object type DATABASE_EXPORT/SCHEMA/TABLESPACE_QUOTA
Processing object type DATABASE_EXPORT/RESOURCE_COST
Processing object type DATABASE_EXPORT/TRUSTED_DB_LINK
Processing object type DATABASE_EXPORT/DIRECTORY/DIRECTORY
Processing object type DATABASE_EXPORT/DIRECTORY/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type DATABASE_EXPORT/SYSTEM_PROCOBJACT/PRE_SYSTEM_ACTIONS/PROCACT_SYSTEM
…...........................................................................................
Master table "SYSTEM"."SYS_EXPORT_FULL_03" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_FULL_03 is:
/kit/export_full.dmp
Job "SYSTEM"."SYS_EXPORT_FULL_03" completed with 1 error(s) at Sun Jun 26 17:12:01 2016 elapsed 0 00:02:46
O utilitário oradebug é usado principalmente pelo suporte da Oracle. Ele interage diretamente com o kernel do Oracle e pode ser usado para geração traces, dumps e suspenção de processos. Do ponto de vista de segurança, é uma boa prática deixá-lo desativado e somente ativá-lo quando for realmente necessário.
A partir da versão 12.1.0.2 podemos desabilitar / habilitar o oradebug utilizando o Oracle Database Vault.
Navegue até a aba “Authorizations” e clique em Oradebug.
Após isso, clique no botão “Disable”:
Conecte no pluggable database ORCL1_1 como SYSDBA e tente utilizar o oradebug:
[oracle@emnode bin]$ sqlplus sys/sys@orcl1_1 as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Mon Jun 27 14:01:31 2016
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Advanced Analytics,
Oracle Database Vault and Real Application Testing options
SQL> oradebug setmypid ORA-47411: Cannot use ORADEBUG due to Oracle Database Vault policy.
Como você pode ver, o oradebug está desabilitado através do Oracle Database Vault.
Antes do Oracle Database 12c, para desabilitar o Oracle Database Vault era necessário executar shutdown no banco de dados e “relinkar” o executável utilizando a opção “dv_off”. No Oracle Database 12c existe a procedure DBMS_MACADM.DISABLE_DV.
Isto também pode ser feito através do Oracle Enterprise Manager Total Cloud Control 12c:
Após isso, será necessário reiniciar o Pluggable Database para completar a operação:
SQL> alter pluggable database orcl1_1 close;
Pluggable database altered.
SQL> alter pluggable database orcl1_1 open;
Pluggable database altered.
Para comprovar que o Oracle Database Vault foi desativado, podemos tentar usar novamente o oradebug (que foi desabilitado através de configuração no Oracle Database Vault):
[oracle@emnode bin]$ sqlplus sys/sys@orcl1_1 as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Mon Jun 27 14:12:38 2016
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Advanced Analytics and Real
Application Testing options SQL> oradebug setmypid Statement processed.
[oracle@emnode bin]$ sqlplus sys/sys@orcl1_1 as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Mon Jun 27 14:12:38 2016
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Nota: Se você desativar o Oracle Database Vault no Root Container, ele será desativado para todos os outros containers.
Agora vamos habilitar o Oracle Database Vault utilizando a procedure DBMS_MACADM.ENABLE_DV:
SQL> conn c##dv_Admin/Next1234#@orcl1_1 Connected. SQL> exec DBMS_MACADM.ENABLE_DV; PL/SQL procedure successfully completed.
Reinicie o banco de dados e tente utilizar o oradebug novamente:
[oracle@emnode bin]$ sqlplus sys/sys@orcl1_1 as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Mon Jun 27 14:22:15 2016
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Advanced Analytics,
Oracle Database Vault and Real Application Testing options
SQL> oradebug setmypid;
ORA-47411: Cannot use ORADEBUG due to Oracle Database Vault policy.
O Oracle Database Vault é uma excelente solução para proteger os dados armazenados no banco de dados. Ele acrescenta uma camada de segurança que pode inclusive bloquear o acesso do DBA aos dados de aplicação. Diversas operações administrativas também podem ser bloqueadas para limitar a execução de determinadas atividades ou para obter melhor segregação de funções. Neste artigo utilizamos o DBCA para criar um banco de dados chamado ORCL, com um Pluggable Database chamado ORCL1_1. Utilizamos este CDB para demostrar a atuação do Oracle Database Vault no bloqueio de algumas atividades como a execução do Data Pump e do Oradebug. As configurações foram realizadas através do Oracle Enterprise Manager Total Cloud Control 12c e da API API DBMS_MACADM. Esta última trouxe uma nova e importante funcionalidade ao Oracle 12c, pois elimina a necessidade de recompilação dos binários do Oracle para ativar ou desativar o Oracle Database Vault.
Yenugula Venkata Ravikumar é um DBA com mais de 15 anos de experiencia com Oracle e em ambientes de alta disponibilidade (RAC, Data Guard, dentre outros), tuning e desempenho, migrações, backup e recover, Oracle Exadata X2 e X3, é Expert em sistemas operacionais tais como como AIX, HP-UX e Linux. Já participou como conferencista de Oracle pela India, onde mora atualmente. Obteve o título de "Oracle Certified Master (OCM 10g)" em 2009.
Adrian Neagu é um DBA com mais de 15 anos de experiência em diversas tecnologias de banco de dados. Ele é Oracle Certified Master 10g e 11g, Oracle Certified Professional 9i, 10g, e 11g, Cloudera Certified Administrator for Apache Hadoop, IBM DB2 Certified Administrator version 8.1.2 e 9, IBM DB2 9 Advanced Certified Administrator 9, e Sun Certified System Administrator Solaris 10.
Alex Zaballa, formado em Análise de Sistemas, é especialista em Banco de Dados Oracle com sólidos conhecimentos em Servidores de Aplicação e Sistemas Operacionais; trabalha com Oracle há 17 anos, é Oracle ACE Director, certificado OCM Database 12c/MAA/11G/Cloud e conta com mais de 200 outras certificações em produtos da Oracle. Alex também é membro do Grupo de Usuários Oracle do Brasil (GUOB), fundador do Grupo de Usuários Oracle de Angola (GUOA) e membro do time OraWorld.
Este artigo foi revisto pela equipe de produtos Oracle e está em conformidade com as normas e práticas para o uso de produtos Oracle.