Revisado por Francisco Riccio
Database link é um objeto do esquema que permite que os DBAs acessem objetos em bancos diferentes. Em versões anteriores, a senha do DB link era ofuscado o que podia certas vezes ser comprometida. Iniciando com o 18c, o Oracle habilita a criptografia de credenciais da senha do DB link no PDB bem como no arquivo de dump do dicionário do CDB root. Aqui, a senha real pode ser substituída por “x” em vez de ofuscá-la. Isso reduz as chances da senha do DB link ser hackeada.
A seção a seguir demonstra a implementação do recurso mencionado acima.
Este exemplo fornece uma demonstração do passo a passo das tarefas necessárias para criar tipos de PTTs no banco Oracle 18c.
Requisitos
1. Logue no PDB18C1 com o usuário SYSTEM e crie um DB link com um usuário fixo apontando para o PDB18C2.
[oracle@oracle18c ~]$ sqlplus system/password@PDB18C1
SQL> CREATE DATABASE LINK db_link_user CONNECT TO system IDENTIFIED BY oracle USING 'PDB18C2';
Database link created.
SQL> SELECT * FROM dual@db_link_user;
D
-
X
2. Teste o DB link fazendo uma consulta na tabela DBLTEST e verifique o enforcement status no dicionário.
SQL> SELECT count FROM system.dbltest@db_link_user;
COUNT (*)
----------
100
SQL> SELECT enforcement FROM dictionary_credentials_encrypt;
ENFORCEM
--------
DISABLED
3. Crie um diretório para exportar o arquivo de dump e saia da seção.
SQL> CREATE OR REPLACE DIRECTORY dpump AS '/tmp';
Directory created.
SQL> EXIT
4. Execute a exportação(expdp) que irá conter o DB link com o usuário fixo.
[oracle@oracle18c ~]$ expdp system@PDB18C1 directory=dpump dumpfile=dptest
Export: Release 18.0.0.0.0 - Production on Thu Jul 19 19:57:29 2018
Version 18.1.0.0.0
Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.
Password:
Connected to: Oracle Database 18c EE Extreme Perf Release 18.0.0.0.0 - Production
Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01": system/********@PDB18C1 directory=dpump
dumpfile=dptest
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/DB_LINK
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Master table "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is:
/tmp/dptest.dmp
Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at Thu Jul 19 19:58:26
2018 elapsed 0 00:00:47
5. Agora, podemos dropar(remover) o DB link e importá-lo de volta com o arquivo de dump.
[oracle@oracle18c ~]$ sqlplus system@PDB18C1
SQL> DROP DATABASE LINK db_link_user;
Database link dropped.
SQL> EXIT
[oracle@oracle18c ~]$ impdp system@PDB18C1 directory=dpump dumpfile=dptest
Import: Release 18.0.0.0.0 - Production on Thu Jul 19 19:59:58 2018
Version 18.1.0.0.0
Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.
Password:
Connected to: Oracle Database 18c EE Extreme Perf Release 18.0.0.0.0 - Production
Master table "SYSTEM"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_FULL_01": system/********@PDB1 directory=dp_dump
dumpfile=dp_test
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/DB_LINK
Job "SYSTEM"."SYS_IMPORT_FULL_01" successfully completed at Thu Jul 19 20:00:10
2018 elapsed 0 00:00:06
[oracle@oracle18c ~]$
6. Logue no PDB e teste se o DB link esta funcionando ou não.
SQL> SELECT count FROM system.dbltest@db_link_user;
COUNT (*)
----------
100
7. Para evitar esse risco de segurança precisamos ativar a criptografia de credenciais no nível do banco. Para habilitar, vamos criar um usuário e atribuir o privilégio SYSKM.
SQL> CONNECT sys@PDB18C1 AS SYSDBA
Enter password:
Connected.
SQL> ALTER DATABASE dictionary encrypt credentials;
ALTER DATABASE dictionary encrypt credentials
*
ERROR at line 1:
ORA-28447: insufficient privilege to execute ALTER DATABASE
DICTIONARY statement
SQL> CREATE USER enc IDENTIFIED BY password;
User created.
SQL> GRANT create session, syskm TO enc;
Grant succeeded.
Nota: Pode acontecer um erro ao tentar ativar a criptografia de credenciais, mesmo logando com a role SYSDBA. Então, para esta demonstração, foi criado um usuário com a role SYSKM.
8. Logue como SYSKM e ative a criptografia de credenciais
SQL> CONNECT enc@PDB18C1 AS SYSKM
Enter password:
SQL> ALTER DATABASE dictionary encrypt credentials;
Database dictionary altered.
SQL> SELECT enforcement FROM dictionary_credentials_encrypt;
ENFORCEM
--------
ENABLED
9. Faça um novo dump(expdp) que contenha o DB Link com o usuário fixo.
[oracle@oracle18c ~]$ expdp system@PDB18C1 directory=dpump dumpfile=dptest1
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is:
/tmp/dptest1.dmp
Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at Thu
Jul 19 20:05:26 2018 elapsed 0 00:00:47
10. Agora podemos dropar o DB link e importar novamente com o arquivo de dump.
[oracle@oracle18c ~]$ sqlplus system@PDB18C1
SQL> DROP DATABASE LINK db_link_user;
Database link dropped.
SQL> EXIT
[oracle@oracle18c ~]$ impdp system@PDB18C1 directory=dpump dumpfile=dptest1
Import: Release 18.0.0.0.0 - Production on Thu Jul 19 20:08:00 2018
Version 18.1.0.0.0
Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.
Password:
Connected to: Oracle Database 18c EE Extreme Perf Release 18.0.0.0.0 - Production
Master table "SYSTEM"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_FULL_01": system/********@PDB1 directory=dp_dump
dumpfile=dp_test
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/DB_LINK
ORA-39395: Warning: object SYSTEM.DB_LINK_USER requires password reset after import
Job "SYSTEM"."SYS_IMPORT_FULL_01" completed with 1 error(s) at Thu
Jul 19 20:08:09 2018 elapsed 0 00:00:05
Nota: Durante a importação do DB link, você poderá ver a mensagem de aviso dizendo que será necessário resetar a senha do DB link.
11. Logue no PDB e teste se o DB link está funcionando ou não.
SQL> SELECT * FROM system.dbltest@db_link_user;
SELECT * FROM system.dbltest@db_link_user
*
ERROR at line 1:
ORA-28449: cannot use an invalidated database link
12. Será necessário alterar o DB link para fazê-lo funcionar.
SQL> ALTER DATABASE LINK test CONNECT TO system IDENTIFIED BY oracle;
Database link altered.
SQL> SELECT * FROM system.dbltest@db_link_user;
COUNT(*)
----------
100
No exemplo acima, foi ativada a criptografia de credenciais no banco. Além disso, é importante notar que o Data Pump Export(expdp) armazena uma senha inválida para o DB link no arquivo de dump.
Tércio Costa Formado em Ciências da Computação pela UFPB com experiência em Servidores Windows Server e Linux e banco de dados Oracle desde 2008 juntamente com os seus serviços. Desenvolvimento de Sistemas em Java SE com banco de dados Oracle e MySQL. Certificado Oracle Certified SQL Expert, mantendo o blog https://oraclepress.wordpress.com/ reconhecido pela OTN e articulista no portal http://www.profissionaloracle.com.br/gpo
Skant Gupta é um Oracle Certified Cloud Professional 12c, OCE RAC 11g and Oracle Certified Professional (10g, 11g, 12c). Atualmente trabalha na Vodafone no Reino Unido e trabalhava anteriormente como DBA Sênior na Etisalat em Dubai. Tem 6 anos de experiência em diferentes tecnologias Oracle, focando principalmente em banco de dados, nuvem, soluções de alta disponibilidade, WebLogic e GoldenGate. Elejá esteve presente em vários grupos de usuários Oracle ao redor do mundo e maisrecentemente nos EUA, Emirados Árabes e Índia. Perfil de Skant Gupta no LinkedIn - https://www.linkedin.com/in/ skantali, Blog: http://oracle-help.com/
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.