Para essa verificação utilize as seguintes consultas:
SELECT PARAMETER, VALUE FROM V$OPTION WHERE PARAMETER IN ('Oracle Label Security','Oracle Database Vault');
PARAMETER VALUE
________________________ ________
Oracle Label Security FALSE
Oracle Database Vault FALSE
SELECT COMP_NAME, STATUS FROM DBA_REGISTRY WHERE COMP_NAME IN ('Oracle Label Security','Oracle Database Vault');
COMP_NAME STATUS
________________________ _________
Oracle Label Security VALID
Oracle Database Vault VALID
col DESCRIPTION format a40
set lines 900
SELECT * FROM DBA_DV_STATUS;
NAME STATUS
______________________ _________________
DV_APP_PROTECTION NOT CONFIGURED
DV_CONFIGURE_STATUS FALSE
DV_ENABLE_STATUS FALSE
SELECT * FROM DBA_OLS_STATUS;
NAME STATUS DESCRIPTION
__________________________ _________ ________________________________________
OLS_CONFIGURE_STATUS FALSE Determines if OLS is configured
OLS_DIRECTORY_STATUS FALSE Determines if OID is enabled with OLS
OLS_ENABLE_STATUS FALSE Determines if OLS is enabled
SELECT S.NAME, STATUS, C.NAME FROM V$CONTAINERS C INNER JOIN CDB_DV_STATUS S ON S.CON_ID=C.CON_ID ORDER BY 3;
NAME STATUS NAME
__________________________ ______________________ ____________
DV_APP_PROTECTION NOT CONFIGURED CDB$ROOT
DV_CONFIGURE_STATUS FALSE CDB$ROOT
DV_ENABLE_STATUS FALSE CDB$ROOT
DV_APP_PROTECTION NOT CONFIGURED PROD
DV_ENABLE_STATUS FALSE PROD
DV_CONFIGURE_STATUS FALSE PROD
1.1 Verificar compatibilidade:
SHOW PDBS;
ALTER SESSION SET CONTAINER=PROD;
SELECT * FROM DBA_DV_STATUS;
NAME STATUS
______________________ _________________
DV_APP_PROTECTION NOT CONFIGURED
DV_CONFIGURE_STATUS FALSE
DV_ENABLE_STATUS FALSE
Para essa tarefa será necessário criar 4 novos usuários distribuídos em dois grupos:
CONNECT SYS AS SYSDBA
ALTER SESSION SET CONTAINER = CDB$ROOT;
GRANT CREATE SESSION, SET CONTAINER TO C##DBV_OWNER_ROOT IDENTIFIED BY CONTAINER = ALL;
GRANT CREATE SESSION, SET CONTAINER TO C##DBV_OWNER_BKP IDENTIFIED BY CONTAINER = ALL;
GRANT CREATE SESSION, SET CONTAINER TO C##DBV_ACCTMGR_ROOT IDENTIFIED BY CONTAINER = ALL;
GRANT CREATE SESSION, SET CONTAINER TO C##DBV_ACCTMGR_BKP IDENTIFIED BY CONTAINER = ALL;
Verificar a criação:
SELECT username, account_status from dba_users where username like 'C##DBV%';
USERNAME ACCOUNT_STATUS
______________________ _________________
C##DBV_OWNER_BKP OPEN
C##DBV_OWNER_ROOT OPEN
C##DBV_ACCTMGR_ROOT OPEN
C##DBV_ACCTMGR_BKP OPEN
GRANT SELECT ANY DICTIONARY TO C##DBV_OWNER_ROOT CONTAINER = ALL;
GRANT SELECT ANY DICTIONARY TO C##DBV_OWNER_BKP CONTAINER = ALL;
GRANT SELECT ANY DICTIONARY TO C##DBV_ACCTMGR_ROOT CONTAINER = ALL;
GRANT SELECT ANY DICTIONARY TO C##DBV_ACCTMGR_BKP CONTAINER = ALL;
Execute os comandos para criação e vinculação do perfil.
CREATE PROFILE C##DV_PROFILE LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_VERIFY_FUNCTION ORA12C_VERIFY_FUNCTION PASSWORD_LOCK_TIME UNLIMITED CONTAINER=ALL;
ALTER USER C##DBV_OWNER_ROOT PROFILE C##DV_PROFILE CONTAINER=ALL;
ALTER USER C##DBV_OWNER_BKP PROFILE C##DV_PROFILE CONTAINER=ALL;
ALTER USER C##DBV_ACCTMGR_ROOT PROFILE C##DV_PROFILE CONTAINER=ALL;
ALTER USER C##DBV_ACCTMGR_BKP PROFILE C##DV_PROFILE CONTAINER=ALL;
Realize a conexão como o usuário SYS e execute o comando:
EXEC CONFIGURE_DV('C##DBV_OWNER_ROOT','C##DBV_ACCTMGR_ROOT');
-- COMANDO ALTERNATIVO: --
BEGIN
CONFIGURE_DV (
DVOWNER_UNAME => 'C##DBV_OWNER_ROOT',
DVACCTMGR_UNAME => 'C##DBV_ACCTMGR_ROOT',
FORCE_LOCAL_DVOWNER => FALSE);
END;
/
Observação: Neste comando, definir FORCE_LOCAL_DVOWNER como FALSE permite que os usuários comuns tenham privilégios DV_OWNER para os PDBs associados a esta raiz do CDB.
Realize a conexão como o usuário SYS
@?/rdbms/admin/utlrp.sql
Para essa verificação utilize as seguintes consultas:
col DESCRIPTION format a40
set lines 900
SELECT * FROM DBA_DV_STATUS;
NAME STATUS
________________________ _________________
DV_APP_PROTECTION NOT CONFIGURED
DV_CONFIGURE_STATUS TRUE
DV_ENABLE_STATUS FALSE
SELECT *FROM DBA_OLS_STATUS;
NAME STATUS DESCRIPTION
_____________________________ ___________ _____________________________________
OLS_CONFIGURE_STATUS TRUE Determines if OLS is configured
OLS_DIRECTORY_STATUS FALSE Determines if OID is enabled with OLS
OLS_ENABLE_STATUS FALSE Determines if OLS is enabled
O status TRUE Informa que o recurso está habilitado.
Para habilitar o Oracle Database Vault, (será feito com outro usuário) execute o comando:
CONNECT C##DBV_OWNER_ROOT
EXEC DBMS_MACADM.ENABLE_DV;
Observação 1: Será necessário habilitar cada um desses PDBs após concluir este procedimento.
Passo 12. Configurando o Database Vault no PDB.
Observação 2: Se cada PDB precisar ter o Database Vault habilitado neste banco de dados, use o seguinte comando:
EXEC DBMS_MACADM.ENABLE_DV (strict_mode => 'y');
Os PDBs que não possuem o Database Vault habilitado ficarão no modo restrito após o banco de dados ser reiniciado e até que o Database Vault seja habilitado no PDB:
Realize a conexão como o usuário SYS:
CONN / AS SYSDBA
SHUTDOWN IMMEDIATE
STARTUP
Para essa verificação utilize o comando:
SELECT *FROM DBA_DV_STATUS;
NAME STATUS CON_ID
______________________ _________________ _________
DV_APP_PROTECTION NOT CONFIGURED 1
DV_CONFIGURE_STATUS TRUE 1
DV_ENABLE_STATUS TRUE 1
SELECT *FROM DBA_OLS_STATUS;
NAME STATUS DESCRIPTION CON_ID
___________________________ ________ _______________________________ _________
OLS_CONFIGURE_STATUS TRUE Determines if OLS is configured 1
OLS_DIRECTORY_STATUS FALSE Determines if OID is enabled with OLS 1
OLS_ENABLE_STATUS TRUE Determines if OLS is enabled 1
CONNECT C##DBV_OWNER_ROOT;
GRANT DV_OWNER TO C##DBV_OWNER_BKP WITH ADMIN OPTION CONTAINER= ALL;
CONNECT C##DBV_ACCTMGR_ROOT
GRANT DV_ACCTMGR TO C##DBV_ACCTMGR_BKP WITH ADMIN OPTION CONTAINER = ALL;
Acesse o pdb como SYS:
CONN / AS SYSDBA
ALTER SESSION SET CONTAINER=PROD;
-- COMANDO ALTERNATIVO --
CONNECT SYS@PDB_NAME
Execute os seguintes comando para a verificação:
SELECT *FROM CDB_DV_STATUS;
NAME STATUS CON_ID
______________________ __________________ _________
DV_APP_PROTECTION NOT CONFIGURED 3
DV_CONFIGURE_STATUS FALSE 3
DV_ENABLE_STATUS FALSE 3
SELECT *FROM CDB_OLS_STATUS;
NAME STATUS DESCRIPTION CON_ID
_______________________ _________ ________________________________________ __________
OLS_CONFIGURE_STATUS FALSE Determines if OLS is configured 3
OLS_DIRECTORY_STATUS FALSE Determines if OID is enabled with OLS 3
OLS_ENABLE_STATUS FALSE Determines if OLS is enabled 3
Realize a conexão como o usuário: C##DBV_OWNER_ROOT e execute o comando:
Observação: o parâmetro force_local_dvoner foi omitido porque é desnecessário. Todos os usuários comuns configurados em um PDB são restritos ao escopo do PDB.
BEGIN
CONFIGURE_DV (
DVOWNER_UNAME => 'C##DBV_OWNER_ROOT',
DVACCTMGR_UNAME => 'C##DBV_ACCTMGR_ROOT');
END;
/
-- COMANDO ALTERNATIVO --
EXEC CONFIGURE_DV('C##DBV_OWNER_ROOT','C##DBV_ACCTMGR_ROOT');
Realize a conexão como o usuário SYS
@?/rdbms/admin/utlrp.sql
Para habilitar o Oracle Database Vault execute o comando:
Ainda com o usuário "C##DBV_OWNER_ROOT"
ALTER SESSION SET CONTAINER=PROD;
EXEC DBMS_MACADM.ENABLE_DV;
Realize a conexão como o usuário SYS:
CONN / AS SYSDBA
ALTER SESSION SET CONTAINER=PROD;
ALTER PLUGGABLE DATABASE PROD CLOSE IMMEDIATE;
ALTER PLUGGABLE DATABASE PROD OPEN;
SHOW PDBS;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------- ----------- ----------
4 PROD READ WRITE NO
Digite o seguinte comando:
SELECT *FROM DBA_DV_STATUS;
NAME STATUS
______________________ _________________
DV_APP_PROTECTION NOT CONFIGURED
DV_CONFIGURE_STATUS TRUE
DV_ENABLE_STATUS TRUE
Digite os seguintes comandos:
SELECT PARAMETER, VALUE FROM V$OPTION WHERE PARAMETER IN ('Oracle Label Security','Oracle Database Vault');
PARAMETER VALUE
________________________ ________
Oracle Label Security TRUE
Oracle Database Vault TRUE
SELECT COMP_NAME, STATUS FROM DBA_REGISTRY WHERE COMP_NAME IN ('Oracle Label Security','Oracle Database Vault');
COMP_NAME STATUS
________________________ _________
Oracle Label Security VALID
Oracle Database Vault VALID
Efetue login na instância do banco de dados como um usuário que recebeu a função DV_OWNER (C##DBV_OWNER_ROOT).
CONNECT C##DBV_OWNER_ROOT@ PROD
EXEC DBMS_MACADM.AUTHORIZE_DATAPUMP_USER('USUARIO', 'SCHEMA', 'ObjetoProtegido');
DESAUTORIZAR
EXEC DBMS_MACADM.UNAUTHORIZE_DATAPUMP_USER('USUARIO', 'SCHEMA', 'ObjetoProtegido');
Observação: O usuário precisa ter privilégios para realizar a exportação e/ou importação. Para verificar se o usuário pode realizar esse procedimento, utilize o seguinte comando:
SELECT GRANTEE, GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE LIKE '%FULL%' ORDER BY 1;
Caso não tenha, utilize o comando para conceder permissão para exportar e importar
GRANT EXP_FULL_DATABASE TO USUARIO;
GRANT IMP_FULL_DATABASE TO USUARIO;
Na página inicial do Cloud Control, no menu Targets, selecione Databases.
É necessario ter o privilégio SELECT ANY DICTIONARY, para não apresentar o erro:
Caso necessite, Conceda as seguintes permissões:
sqlplus /nolog
CONN / AS SYSDBA
ALTER SESSION SET CONTAINER=PROD;
GRANT CREATE SESSION, SET CONTAINER TO C##DBV_OWNER_ROOT CONTAINER = CURRENT;
GRANT CREATE SESSION, SET CONTAINER TO C##DBV_ACCTMGR_ROOT CONTAINER = CURRENT;
GRANT SELECT ANY DICTIONARY TO C##DBV_OWNER_ROOT;
GRANT SELECT ANY DICTIONARY TO C##DBV_ACCTMGR_ROOT;
Após logar com o usuário C##DBV_OWNER_ROOT
Para criar o realm, clique na guia criar Administração e no submenu Realms em Segurança
Passo 1: Insira um nome e uma descrição, seu status original e o que você deseja auditar:
Passo 2: Escolha os objetos que você gostaria de proteger:
Passo 3: Autorize o acesso as informações
Passo 4: Confira e finalize o processo de criação.
Comando Alternativo para uso no sqlplus, porém incentivamos a usar a ferramenta gráfica.
CONNECT C##DBV_OWNER_ROOT @PROD;
BEGIN
DBMS_MACADM.CREATE_REALM(
realm_name => 'HR_REALM',
description => 'Realm for HR Schema',
enabled => DBMS_MACUTL.G_YES,
audit_options => DBMS_MACUTL.G_REALM_AUDIT_FAIL + DBMS_MACUTL.G_REALM_AUDIT_SUCCESS);
END;
/
BEGIN
DBMS_MACADM.ADD_OBJECT_TO_REALM(
realm_name => 'HR_REALM',
object_owner => 'HR',
object_name => '%',
object_type => '%');
END;
/
Teste após a configuração:
SELECT * FROM CDB_DV_STATUS;
NAME STATUS CON_ID
______________________ _________________ _________
DV_APP_PROTECTION NOT CONFIGURED 1
DV_CONFIGURE_STATUS TRUE 1
DV_ENABLE_STATUS TRUE 1
DV_APP_PROTECTION NOT CONFIGURED 4
DV_CONFIGURE_STATUS TRUE 4
DV_ENABLE_STATUS TRUE 4
23.2 Consultando autorizações para usar o Oracle Data Pump
SELECT * FROM DBA_DV_DATAPUMP_AUTH;
23.3 Lista os usuários e esquemas que reberam autorização para executar instruções DDL.
SELECT * FROM DBA_DV_DDL_AUTH;
23.4 Lista a trilha de auditoria
Essa listagem inclui registros relacionados a alterações de configuração bem-sucedidas e com falha feitas em domínios, regras, conjuntos de regras, fatores e outras atividades de configuração de política do Vault.
col username FOR a10
col action_name FOR a30
col action_object_name FOR a20
SET pages 100
ALTER SESSION SET nls_date_format="dd-mon-yyyy hh24:mi:ss";
SELECT username,TIMESTAMP,action_name,action_object_name FROM dvsys.dv$configuration_audit ORDER BY id# DESC;
23.5 Lista a trilha de auditorias relacionadas a violações do usuário em regras de comando, domínios e fatores.
SELECT username,TIMESTAMP,action_name,action_object_name,action_command FROM dvsys.dv$enforcement_audit ORDER BY id# DESC;
As violações também são informadas no segundo gráfico da tela de configuração do OEMCC.
Para desabilitar o Oracle Database Vault execute o comando:
CONNECT C##DBV_OWNER_ROOT@PROD
EXEC DBMS_MACADM.DISABLE_DV;
Para remover os usuários e o perfil, execute o comando:
DROP USER C##DBV_OWNER_ROOT CASCADE;
DROP USER C##DBV_OWNER_BKP CASCADE;
DROP USER C##DBV_ACCTMGR_ROOT CASCADE;
DROP USER C##DBV_ACCTMGR_BKP CASCADE;
DROP PROFILE C##DV_PROFILE CASCADE;
Esse procedimento necessita que o banco de dados seja reiniciado. Realize a conexão como o usuário SYS:
CONN / AS SYSDBA
SHUTDOWN IMMEDIATE
STARTUP