Com exceção de ambientes OCI onde todos os bancos de dados são criptografados com o TDE. Para ambientes on premisse, o TDE é um recurso do Oracle Enterprise Edition, sendo parte da opção Oracle Advanced Security. Ou seja é uma option que necessita de um licenciamento a parte (extra cost).
No exemplo abaixo, estarei criando uma tabela chamada usuário na tablespace lamim e inserindo alguns dados para demonstração. Posteriormente com o comando strings do linux, irei mostrar como é possível verificar algumas informações contidas no arquivo de dados, uma vez que o mesmo não esta com a criptografia TDE ativa.
SQL> select tablespace_name, encrypted from dba_tablespaces;
TABLESPACE_NAME ENC
------------------------------ ---
SYSTEM NO
SYSAUX NO
UNDOTBS1 NO
TEMP NO
USERS NO
SQL> create tablespace lamim datafile size 100m autoextend on next 100m;
Tablespace created.
SQL> select tablespace_name, encrypted from dba_tablespaces;
TABLESPACE_NAME ENC
------------------------------ ---
SYSTEM NO
SYSAUX NO
UNDOTBS1 NO
TEMP NO
USERS NO
LAMIM NO
6 rows selected.
SQL>
SQL> create table usuario (nome varchar2(200), sobrenome varchar2(200), cpf number(11), nascimento date ) tablespace lamim;
Table created.
SQL> insert into usuario values ('Jhonata','Lamim','00087654123',sysdate);
1 row created.
SQL> insert into usuario values ('Joao','Silva',09876543219,to_date('01/01/1900','dd/mm/yyyy'));
1 row created.
SQL> insert into usuario values ('Maria','Santos',1111111111,to_date('10/02/2001','dd/mm/yyyy'));
1 row created.
insert into usuario values ('Eduardo','Souza',2222222222,to_date('25/05/1998','dd/mm/yyyy'));
1 row created.
SQL> commit;
Commit complete.
set lines 210
col nome for a60
col sobrenome for a60
select * from usuario;SQL> SQL> SQL>
NOME SOBRENOME CPF NASCIMENT
------------------------------------------------------------ ------------------------------------------------------------ ---------- ---------
Jhonata Lamim 87654123 28-SEP-24
Joao Silva 9876543219 01-JAN-00
Maria Santos 1111111111 10-FEB-01
Eduardo Souza 2222222222 25-MAY-98
SQL> select FILE_NAME,FILE_ID from dba_data_files where tablespace_name='LAMIM'; FILE_NAME FILE_ID ------------------------------------------------------------ ---------- +DGDATA/LADMIMDB/DATAFILE/lamim.276.1180858405 12
Estarei copiando o datafile do ASM para uma unidade local para consultar os dados no arquivo com o comando strings.
[grid@lamim19c ~]$ asmcmd
ASMCMD>
ASMCMD> cp +DGDATA/LADMIMDB/DATAFILE/lamim.276.1180858405 /tmp/lamim.dbf
copying +DGDATA/LADMIMDB/DATAFILE/lamim.276.1180858405 -> /tmp/lamim.dbf
ASMCMD>
ASMCMD> exit
[grid@lamim19c ~]$
[grid@lamim19c ~]$ strings /tmp/lamim.dbf
}|{z
TLADMIMDB
$xbF
LAMIM
AAAAAAAA
h!
! h#
Eduardo
Souza
Maria
Santos
Joao
Silva
cM7!
Jhonata
Lamim
[grid@lamim19c ~]$Veja que através do comando strings do sistema operacional, foi possível trazer informações inseridas anteriormente na tabela usuário e que estavam contidas no arquivo de dados (datafile).
Agora irei mostrar o mesmo processo em um ambiente com o TDE ativo, afim de demonstrar a diferença.
SQL> select tablespace_name, encrypted from dba_tablespaces;
TABLESPACE_NAME ENC
------------------------------ ---
SYSTEM YES
SYSAUX YES
UNDOTBS1 YES
TEMP YES
USERS YES
SQL> create tablespace lamim datafile size 100m autoextend on next 100m;
Tablespace created.
SQL> select tablespace_name, encrypted from dba_tablespaces;
TABLESPACE_NAME ENC
------------------------------ ---
SYSTEM YES
SYSAUX YES
UNDOTBS1 YES
TEMP YES
USERS YES
LAMIM YES
6 rows selected.
SQL> create table usuario (nome varchar2(200), sobrenome varchar2(200), cpf number(11), nascimento date ) tablespace lamim;
Table created.
SQL> insert into usuario values ('Jhonata','Lamim','00087654123',sysdate);
1 row created.
SQL> insert into usuario values ('Joao','Silva',09876543219,to_date('01/01/1900','dd/mm/yyyy'));
1 row created.
SQL> insert into usuario values ('Maria','Santos',1111111111,to_date('10/02/2001','dd/mm/yyyy'));
1 row created.
SQL> insert into usuario values ('Eduardo','Souza',2222222222,to_date('25/05/1998','dd/mm/yyyy'));
1 row created.
SQL> commit;
Commit complete.
SQL> set lines 210
col nome for a60
col sobrenome for a60
select * from usuario;SQL> SQL> SQL>
NOME SOBRENOME CPF NASCIMENT
------------------------------------------------------------ ------------------------------------------------------------ ---------- ---------
Jhonata Lamim 87654123 28-SEP-24
Joao Silva 9876543219 01-JAN-00
Maria Santos 1111111111 10-FEB-01
Eduardo Souza 2222222222 25-MAY-98
SQL> col file_name for a90
SQL> select FILE_NAME,FILE_ID from dba_data_files where tablespace_name='LAMIM';
FILE_NAME FILE_ID
------------------------------------------------------------------------------------------ ----------
/u02/app/oracle/oradata/lamimdb_6xp_gru/LAMIMDB_6XP_GRU/datafile/o1_mf_lamim_mhhxxvyg_.dbf 13
SQL> !
[oracle@lamimdb ~]$ strings /u02/app/oracle/oradata/lamimdb_6xp_gru/LAMIMDB_6XP_GRU/datafile/o1_mf_lamim_mhhxxvyg_.dbf
}|{z
WLAMIMDB
LAMIM
[oracle@lamimdb ~]$Veja que no exemplo executado em um ambiente com o TDE ativo, não foi possível através do comando strings ver informações existentes no datafile.
O TDE desempenha um papel crítico na proteção de dados em ambientes corporativos, onde a segurança da informação é uma prioridade, sem comprometer a usabilidade das aplicações ou a conformidade com normas legais.
Artigos Relacionados:
Passo a Passo para Configurar o Oracle TDE no Oracle Database 19c
Fonte:
https://docs.oracle.com/pt-br/iaas/Content/Security/Reference/dbaas_security.htm
https://docs.oracle.com/en/database/oracle/oracle-database/21/asoag/introduction-to-transparent-data-encryption.html#GUID-AAE3C965-C6A8-45D6-BA5D-F88B300A301A
Comentários
Postar um comentário