Configuração e Administração do Oracle Database Vault 12c em Multitenant utilizando o Oracle Enterprise Manager Total Cloud Control 12c

Por Yenugula Venkata Ravi Kumar O ACE director, Adrian Neagu e Alex Zaballa O ACE director
Publicado en Setembro 2017

Revisado por Marcelo Pivovar

Introdução

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.

Ambiente

  • Oracle Virtual Box com Oracle Enterprise Linux 6.5
  • Oracle Database 12.1.0.2.0 Enterprise Edition
  • Oracle Enterprise Manager Total Cloud Control 12c

Instalação e configuração

  • Inicie o dbca, marque a opção “Create database” e clique em “Next”
  • Marque a opção “Advanced mode” e clique em “Next”
  • Marque a opção “General purpose or transaction processing” e clique em “Next”
  • Em “Database Identification” preencha o seguinte:
    • Global Database Name: ORCL
    • SID: ORCL
    • Marque a opção “Create as Container Database”
    • Selecione “Create a Container Database with one or more PDBs”
    • Number of PDBs: 1
    • PDB Name: ORCL1_1
    • Clique em “Next”

    01

  • Em “Database Options”, na aba “Database Vault & Label Security” preencha o seguinte:
    • Marque a opção “Configure Database Vault”
    • Em “Database Vault Owner”: c##dv_admin
    • Password: Next1234#
    • Marque a opção “Create a Separate Account Manager”
    • Em “Account Manager”: c##dv_acctmgr
    • Password: Next1234#
    • Clique em “Next”:

    02

  • Os usuários do Oracle Database Vault são criados no Container Root.
  • O usuário c##dv_admin é um usuário administrativo e é utilizado para criar as políticas do Database Vault.
  • O usuário c##dv_acctmgr é utilizado para gerenciar contas de usuários.

Configurando o usuário DBSNMP para monitorar o Database Vault

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.	

Adicionando o banco no Oracle Enterprise Manager Total Cloud Control 12c

Abra o Oracle Enterprise Manager Total Cloud Control 12c e adicione o banco de dados criado utilizando o processo manual:

  • Menu Setup
  • “Add Targets”
  • “Add Targets Manually”
  • Clique em “Next”
  • Selecione “Add Targets Using Guided Process”
  • Em “Target Types” selecione “Oracle database, listener and Automatic Storage Management”

03

Selecione o Host conforme abaixo:

04

Clique em “Next”:

05

Selecione o banco de dados ORCL e clique em “Configure”:

06

Informe a senha do utilizador dbsnmp, que é “db%1345T” e clique em “Test Connection”.
Após isso, clique no botão “Save”:

07

Na tela abaixo podemos verificar que o banco de dados ORCL, juntamente com o container ORCL_ORCL1_1 foram descobertos pelo OEM 12c:

08

Clique no botão ”Save” e o processo será finalizado.
O banco de dados será adicionado ao OEM 12c:

09

Acessando a interface do Oracle Database Vault no Oracle Enterprise Manager Total Cloud Control 12c

Selecione o Pluggable Database ORCL1_1:

10

No menu “Security” selecione “Database Vault”:

11

Informe o usuário c##dv_admin, que é o Database Vault Administrator:

12

A interface do Oracle Database Vault será aberta:

13

Na aba “Administration” é possível configurar o Oracle Database Vault e definir suas regras:

14

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.

15

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”:

16

Selecione o usuário SYSTEM e marque as opções “Allow Full database” e “Grant DV_OWNER role”:

17

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	

Configurando o Database Operation Authorization para o Oradebug

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”:

18

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.

Habilitando e Desabilitando o 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:

19

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.	

Sumário

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.