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