O TDE (Transparent Data Encryption) criptografa de forma transparente os dados em repouso em um Oracle Database. Ele interrompe tentativas não autorizadas do sistema operacional de acessar dados do banco de dados armazenados em arquivos, sem afetar a forma como os aplicativos acessam os dados usando SQL.
O TDE está totalmente integrado ao Oracle Database e pode criptografar backups inteiros do banco de dados (RMAN), exportações do Data Pump, tablespaces inteiros da aplicação ou colunas confidenciais específicas. Os dados criptografados permanecem criptografados no banco de dados, seja em arquivos de armazenamento de tablespaces, tablespaces temporários, tablespaces de undo ou outros arquivos, como redo logs.
Neste artigo será abordado como ativar o Oracle TDE em um Oracle Database 19c sigle instance e realizar a criptografia de colunas e tablaspaces, através de um guia prático, passo a passo, para a implementação.
Pre-requisitos para configuração do TDE
- Utilização da versão Enterprise Edition e aquisição da option Advanced Security.
- No diretório $ORACLE_BASE do banco de dados, deve-se criar um novo diretório chamado wallet.
[oracle@lamim19c /]$ cd $ORACLE_BASE [oracle@lamim19c oracle]$ pwd /orabin01/app/oracle [oracle@lamim19c oracle]$ mkdir wallet [oracle@lamim19c oracle]$ cd wallet/ [oracle@lamim19c wallet]$ pwd /orabin01/app/oracle/wallet [oracle@lamim19c wallet]$
- Atualizar o arquivo sqlnet.ora com a localização do wallet, através da adição do ENCRYPTION_WALLET_LOCATION.
ENCRYPTION_WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /orabin01/app/oracle/wallet) ) )
[grid@lamim19c ~]$ cat /orabin01/app/19.0.0/grid/network/admin/sqlnet.ora # sqlnet.ora Network Configuration File: /orabin01/app/19.0.0/grid/network/admin/sqlnet.ora # Generated by Oracle configuration tools. NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT) ENCRYPTION_WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /orabin01/app/oracle/wallet) ) ) [grid@lamim19c ~]$
- Definir no banco de dados o parâmetro WALLET_ROOT com o diretório criado e reiniciar banco de dados.
SQL> show parameter wallet_root NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ wallet_root string SQL> SQL> alter system set wallet_root='/orabin01/app/oracle/wallet' scope=spfile sid='*'; System altered. SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup; ORACLE instance started. Total System Global Area 2432693792 bytes Fixed Size 9180704 bytes Variable Size 1342177280 bytes Database Buffers 1073741824 bytes Redo Buffers 7593984 bytes Database mounted. Database opened. SQL> show parameter wallet_root NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ wallet_root string /orabin01/app/oracle/wallet SQL>
- Definir o parâmetro tde_configuration para KEYSTORE_CONFIGURATION=FILE.
SQL> SQL> alter system set tde_configuration="KEYSTORE_CONFIGURATION=FILE" scope=both sid='*'; System altered. SQL>
- Realizar a criação do AUTO-LOGIN Keystore. Neste exemplo walletlamim é a senha que foi definida para a keystore.
SQL> administer key management create keystore identified by "walletlamim"; keystore altered. SQL> administer key management create auto_login keystore from keystore identified by "walletlamim"; keystore altered. SQL> ! ls -tlr /orabin01/app/oracle/wallet total 0 drwxr-x--- 2 oracle asmadmin 44 Oct 13 19:05 tde SQL> ! ls -tlr /orabin01/app/oracle/wallet/tde total 8 -rw------- 1 oracle asmadmin 2553 Oct 13 19:05 ewallet.p12 -rw------- 1 oracle asmadmin 2598 Oct 13 19:05 cwallet.sso SQL> select con_id, wallet_type, status from v$encryption_wallet; CON_ID WALLET_TYPE STATUS ---------- -------------------- ------------------------------ 1 AUTOLOGIN OPEN_NO_MASTER_KEY 2 AUTOLOGIN OPEN_NO_MASTER_KEY 3 AUTOLOGIN OPEN_NO_MASTER_KEY
- Setar a Master key.
SQL> administer key management set keystore open force keystore identified by "walletlamim" container=all; keystore altered. SQL> SQL> administer key management set key force keystore identified by "walletlamim" with backup container=all; keystore altered. SQL> select con_id, wallet_type, status from v$encryption_wallet; CON_ID WALLET_TYPE STATUS ---------- -------------------- ------------------------------ 1 AUTOLOGIN OPEN 2 AUTOLOGIN OPEN 3 AUTOLOGIN OPEN SQL> !ls -tlr /orabin01/app/oracle/wallet/tde total 24 -rw------- 1 oracle asmadmin 2553 Oct 13 19:06 ewallet_2024101322062724.p12 -rw------- 1 oracle asmadmin 3993 Oct 13 19:07 ewallet_2024101322071679.p12 -rw------- 1 oracle asmadmin 6729 Oct 13 19:07 ewallet.p12 -rw------- 1 oracle asmadmin 6774 Oct 13 19:07 cwallet.sso
- Criação de uma tablespace com criptografia. Para isso é usado o comando ENCRYPTION USING no comando de criação da tablespace, passando o tipo de criptografia (AES256, AES192, AES128 e 3DES168) e DEFAULT STORAGE (ENCRYPT). As tabelas que serão criadas nesta tablesapace terão todas as colunas criptografas por padrão.
SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 LAMIMPDB1 READ WRITE NO SQL> SQL> alter session set container=LAMIMPDB1; Session altered. SQL> select tablespace_name, encrypted from dba_tablespaces; TABLESPACE_NAME ENC ------------------------------ --- SYSTEM NO SYSAUX NO UNDOTBS1 NO TEMP NO USERS NO SQL> CREATE TABLESPACE TDE_LAMIM DATAFILE SIZE 100M ENCRYPTION USING 'AES256' DEFAULT STORAGE (ENCRYPT); Tablespace created. SQL> select tablespace_name, encrypted from dba_tablespaces; TABLESPACE_NAME ENC ------------------------------ --- SYSTEM NO SYSAUX NO UNDOTBS1 NO TEMP NO USERS NO TDE_LAMIM YES 6 rows selected. SQL>
- Criação de uma tabela com uma coluna criptografada. Neste exemplo a tabele não esta em uma tablespace com criptografia ativa.
SQL> create table lamim.tde_lamim (nome varchar2(200), salario number(5) ENCRYPT USING 'AES256'); Table created. SQL> desc lamim.tde_lamim; Name Null? Type -------------- -------- --------------------------- NOME VARCHAR2(200) SALARIO NUMBER(5) ENCRYPT
Comentários
Postar um comentário