Dentro da área de tecnologia segurança foi, é e sempre será algo prioritário (isso nunca vai mudar) e com o advento da computação em nuvem esse conceito foi ainda mais reforçado. Se você parar e pensar um pouco vai perceber que a questão de segurança sempre vai ter como objetivo final uma única coisa: os dados, pois os dados são o novo petróleo nos tempos atuais, então sendo os dados o principal alvo/ativo, logo um lugar muito importante é o banco de dados, sendo assim, precisamos praticamente “blindar” o acesso indevido ao banco.
Partindo dessa premissa, a Oracle oferece um recurso chamado “Transparent Data Encryption”, que nada mais é do que um mecanismo de criptografar os dados dentro do banco de dados, dificultando então o acesso a esses dados em caso de algum tipo de acesso/invasão ao seu banco de dados.
Esse mecanismo de criptografia é capaz de criptografar suas tablespaces, backups e até mesmo colunas específicas de alguma tabela. Nesse artigo que vou te ensinar a configurar esse mecanismo para que seu banco de dados se torne mais seguro, porque se até agora você não precisou deste recurso mais cedo ou mais tarde precisará. Vamos nessa!
#1 – Habilitando o processo de criptografia.
O primeiro passo é editar o nosso sqlnet.ora informando o local onde será criada a wallet.
Nota: Caso o arquivo sqlnet.ora não exista você pode criá-lo normalmente com o “vi”
$ cat sqlnet.ora
ENCRYPTION_WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /u01/app/oracle/wallet/tde)
)
)
Se o diretório informado não existir até então, o próximo passo é criá-lo.
$ mkdir -p /u01/app/oracle/wallet/tde
#2 – Ajustando as configurações dentro do banco de dados.
Agora temos que ajustar o parâmetro WALLET_ROOT no spfile do banco de dados. Porém este parâmetro é estático e neste caso após a alteração será preciso um stop/start da instância.
SQL> alter system set wallet_root='/u01/app/oracle/wallet/tde' scope=spfile;
SQL> shutdown immediate
SQL> startup
Após o restart você pode executar um “show parameter wallet_root” para aferir o resultado.
#3 – Configuração da wallet.
Agora precisamos mexer em mais um parâmetro do spfile, desta vez é o parâmetro TDE_CONFIGURATON que deve receber o valor KEYSTORE_CONFIGURATION=FILE.
SQL> alter system set tde_configuration="KEYSTORE_CONFIGURATION=FILE" scope=both sid='*';
Então crie a sua keystore e defina uma senha para ela, na sequência defina-a para trabalhar no modo AUTO-LOGIN.
SQL> administer key management create keystore identified by "oraPaiva";
SQL> administer key management create auto_login keystore from keystore identified by "oraPaiva";
Apenas como curiosidade, você pode ir até o diretório que criou quando fez a configuração do sqlnet.ora e verificar que os arquivos da wallet foram criados lá:
Você também pode dar uma olhadinha dentro do banco de dados, para ver como as coisas estão, basta executar este seelect:
SQL> select con_id, wallet_type, status from v$encryption_wallet;
Repare que na coluna status, temos a informação “OPEN_NO_MASTER_KEY”, isso significa que a dita-cuja “Master Key” ainda não foi criada. Sendo assim é hora de fazê-lo.
SQL> administer key management set keystore open force keystore identified by "oraPaiva" container=all;
SQL> administer key management set key force keystore identified by "oraPaiva" with backup container=all;
Executados os comandos acima, vamos repetir o select anterior:
Se você chegou até aqui, sem nenhum problema parabéns! O seu processo de criptografia do banco de dados está concluído. Agora vamos fazer apenas alguns testes rápidos para que você veja na prática como isso funciona, vamos ver as tablespaces que estão criptografadas até então e vamos criar uma tablespace com criptografia.
#4 – Consultado as tablespaces criptografas:
Para você saber se no seu banco de dados há tablespaces criptografadas, use o select abaixo:
Nota: este processo deve ser feito dentro de cada PDB.
SQL> select tablespace_name, encrypted from dba_tablespaces;
Veja que a coluna ENCRYPTED está com o valor NO, logo significa que não há criptografia para as tablespaces aqui presentes. Então vamos criar uma tablespace que seja criptografada, para isso vamos utilizar o comado CREATE TABLESPACE… normalmente, apenas acrescentando a cláusula de criptografia. Veja:
Para criptografar uma tablespace precisamos acrescentar a cláusula “ENCRYPTION USING XXX DEFAULT STORAGE (ENCRYPT)” e no XXX você pode passar os seguintes valores: AES256, AES192, AES128 e 3DES168. Estes valores referem-se aos algoritmos de criptografia que serão utilizados. Existe também uma outra maneira de deixar este processo de criptografar as tablespaces automático sem precisar passar esses parâmetros acima, mas isso é assunto para um outro post pois este está muito grande.
Conclusão, aqui demonstrei como fazer o processo de criptografia de dados no Oracle desde o princípio, meu conselho é que você crie um ambiente de testes e pratique o que está acima, pois como falei, mais cedo ou mais tarde você vai precisar.
Te vejo no próximo post, tchau!