Como implantar e gerenciar a criptografia de dados transparente (TDE, na sigla em inglês) do Oracle na solução Bare Metal
Nesta página, descrevemos como implantar a criptografia transparente de dados (TDE, na sigla em inglês) do Oracle Advanced Security e gerenciar as chaves e a Oracle Wallet na Solução Bare Metal.
Visão geral
O Oracle Advanced Security TDE criptografa dados de forma transparente em bancos de dados Oracle e impede o acesso não autorizado a arquivos de banco de dados. O TDE pode criptografar backups de banco de dados (RMAN, na sigla em inglês) e exportações do Data Pump, bem como espaços de tabela e colunas específicos.
Como funciona a criptografia de dados transparente
O TDE cria e gerencia várias chaves usadas para criptografia. Essas chaves precisam ser protegidas porque, se um invasor conseguir dados criptografados e chaves correspondentes, ele poderá facilmente descriptografar para ver dados claros.
O TDE tem uma arquitetura de chaves de dois níveis, com chaves de criptografia de dados encapsuladas por uma única chave mestra do banco de dados. A chave mestra é separada dos dados criptografados, armazenados fora do banco de dados, que podem ser um portfólio de keystore de software da Oracle ou um módulo de segurança de hardware (HSM, na sigla em inglês) e é gerenciado diretamente pelo administrador de segurança do banco de dados. um keystore.
Há duas opções de keystore disponíveis para o TDE oferecer suporte a diversos ambientes de cliente. Por padrão, o TDE armazena a chave mestra em uma Oracle Wallet, um arquivo de armazenamento de chaves baseado em padrões PKCS#12. As carteiras oferecem uma solução fácil para pequenos números de bancos de dados criptografados.
Ative o TDE para o banco de dados Oracle 11g no servidor da Solução Bare Metal:
É possível executar operações de criptografia no nível da coluna e no espaço do tablespace. Também é possível aplicar o TDE em backups do RMAN.
Ativar pré-requisito do TDE
É necessário preparar o banco de dados definindo um keystore (Oracle Wallet
para 11 g) e criar uma chave mestra inicial.
Configurar a Oracle Wallet no servidor da Solução Bare Metal
Conecte-se a um dos servidores da Solução Bare Metal a partir de uma máquina
jump host
oubastion
no projeto.$ ssh customeradmin@192.168.1.10 $ su - oracle
Defina a variável de ambiente.
[oracle@svr002 ~]$ . oraenv ORACLE_SID = [tdedb] ? DB11G The Oracle base has been changed from /u01/app/oracle to /apps/oracle/oracle_base [oracle@svr002 ~]$ export ORACLE_SID=DB11G1
Conectar-se como sysdba.
[oracle@svr002 ~]$ sqlplus / as sysdba
Verifique se todas as variáveis de ambiente a seguir estão definidas corretamente.
$ echo $ORACLE_HOME $ echo $ORACLE_BASE $ echo $DB_UNIQUE_NAME
Crie um novo diretório para os arquivos da carteira.
$ mkdir -p $ORACLE_BASE/admin/DB11G/wallet
Use o orapki Utility para criar a carteira e ativar o login automático para que não seja necessário ativá-la nas reinicializações.
$ orapki wallet create -wallet $ORACLE_BASE/admin/DB11G/wallet -auto_login -pwd Oracle2020
A Oracle usa os caminhos padrão para a carteira.
$ ORACLE_BASE/admin/$DB_UNIQUE_NAME/wallet $ ORACLE_HOME/admin/$DB_UNIQUE_NAME/wallet
Se você não estiver usando o caminho padrão, defina o caminho alternativo no arquivo
sqlnet.ora
. Defina um desses parâmetros:ENCRYPTION_WALLET_LOCATION
ouWALLET_LOCATION
.Para encontrar o caminho da carteira, faça o seguinte:
SQL> COL wrl_type FORMAT a12 COL wrl_parameter FORMAT a35 COL status FORMAT a15 SQL> select * from v$encryption_wallet; WRL_TYPE WRL_PARAMETER STATUS -------- ------------- ------- file /apps/oracle/oracle_base OPEN_NO_MASTER_KEY /admin/DB11G/wallet
Para definir o caminho da carteira no arquivo
sqlnet.ora
:$ vi sqlnet.ora ENCRYPTION_WALLET_LOCATION= (SOURCE=(METHOD=FILE)(METHOD_DATA= (DIRECTORY=/apps/oracle/oracle_base/admin/DB11G/wallet)) Or WALLET_LOCATION = (SOURCE=(METHOD=FILE)(METHOD_DATA= (DIRECTORY=/apps/oracle/oracle_base/admin/DB11G/wallet))
Adicione um nome de usuário e uma senha à carteira. Para adicionar um nome de usuário e uma senha a uma carteira existente, use o comando
mkstore
com a opção-createCredential
da seguinte maneira:mkstore -wrl <wallet_location> -createCredential <TNS_alias> <username> <password> $ mkstore -wrl apps/oracle/oracle_base/admin/DB11G/wallet -createCredential DB11G testuser testtest123
É possível fazer login com
testuser@SID
sem digitar a senha.Crie uma chave mestra inicial.
SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY Oracle2020;
Verifique se o status da carteira é
OPEN
.SQL> COL wrl_type FORMAT a12 COL wrl_parameter FORMAT a35 COL status FORMAT a15 SQL> select * from v$encryption_wallet; WRL_TYPE WRL_PARAMETER STATUS -------- ------------- ------ file /apps/oracle/oracle_base/ OPEN admin/DB11G/wallet
Para abrir e fechar a carteira:
SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "Password"; SQL> ALTER SYSTEM SET ENCRYPTION WALLET CLOSE;
Ativar o TDE no nível do tablespace
É possível executar operações de criptografia usando a instrução
CREATE TABLESPACE SQL
.
Como criptografar novos tablespaces
Ao criar um novo espaço de tabela, é possível definir as configurações de criptografia durante o processo de criação.
Verifique se o Parâmetro de inicialização COMPATÍVEL para criptografia de espaço de tabela é 11.2.0.0 ou superior
SQL> SHOW PARAMETER COMPATIBLE NAME TYPE VALUE ---- ---- ------ compatible string 11.2.0.4.0
Verifique se você configurou a chave mestra de criptografia TDE. Você pode verificá-la em Criar uma chave mestra inicial na seção pré-requisito.
Criar o tablespace criptografado
Para verificar o caminho do arquivo de dados, use:
SQL> select * from dba_data_files ;
Executar a instrução CREATE TABLESPACE usando as cláusulas de criptografia
SQL> create TABLESPACE encrypted_ts DATAFILE '+DATA/db11g/datafile/encrypted_ts01.dbf' SIZE 5 M AUTOEXTEND on NEXT 64K ENCRYPTION USING 'AES256' DEFAULT STORAGE(ENCRYPT);
ENCRYPTION USING 'AES256' ENCRYPT especifica o algoritmo de criptografia e o comprimento de chave da criptografia. A cláusula ENCRYPT criptografa o espaço de tabela.
Se a cláusula USING for omitida, o algoritmo de criptografia usará o padrão "AES128". Além disso, a cláusula de armazenamento padrão de ENCRYPT precisa ser especificada. Além disso, é possível definir o parâmetro dinâmico TABLESPACE_ENCRYPTION_DEFAULT_ALGORITGH para definir o algoritmo de criptografia padrão para futuras operações de criação do espaço de tabela usando a instrução ALTER SYSTEM:
sql> ALTER SYSTEM SET TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM = value;
O valor pode ser um dos algoritmos de criptografia a seguir: AES128, AES192, AES256, 3DES168, ARIA128, ARIA192, ARIA256, SEED128 e GOST256. O valor padrão é AES128.
Como alternativa, defina
TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM
como um parâmetro de inicialização no arquivoinit.ora
.Para verificar se a criptografia do tablespace está configurada ou não, verifique a coluna ENCRYPTED das visualizações DBA_TABLESPACES e USER_TABLESPACES, que indicam se o tablespace é criptografado ou não.
SQL> SELECT tablespace_name, encrypted FROM dba_tablespaces; TABLESPACE_NAME ENC ----------------------------------- SYSTEM NO SYSAUX NO UNDOTBS1 NO TEMP NO USERS NO UNDOTBS2 NO ENCRYPTED_TS YES
Criptografia de teste
SQL> CREATE TABLE test (id NUMBER(10),data VARCHAR2(50))TABLESPACE encrypted_ts; Table created. SQL> CREATE INDEX test_idx ON test(data) TABLESPACE encrypted_ts; Index created. SQL> INSERT INTO test (id, data) VALUES (1, 'Test Encryptio'); 1 row created. SQL> COMMIT; Commit complete
Limpe o cache do buffer para garantir que os dados sejam gravados no arquivo de dados.
SQL> ALTER SYSTEM FLUSH BUFFER_CACHE;
Leia os dados dentro do arquivo de dados usando o comando strings.
export ORACLE_SID=+ASM asmcmd ASMCMD> strings +DATA/db11g/datafile/encrypted_ts01.dbf
Os dados são exibidos em um formato binário.
Ativar o TDE no nível da coluna da tabela
A criptografia de coluna TDE pode ser usada para criptografar dados de coluna específicos em tabelas de banco de dados confidenciais, como números de cartão de crédito, CPF ou CNPJ.
Criar uma tabela com uma coluna criptografada
SQL> CREATE TABLE employee ( first_name VARCHAR2(128), last_name VARCHAR2(128), empID NUMBER ENCRYPT NO SALT, salary NUMBER(6) ENCRYPT USING '3DES168' ); Table created.
O
SALT
é uma forma de fortalecer a segurança de dados criptografados. É uma string aleatória adicionada aos dados antes de serem criptografadas, causando a repetição de texto claro que aparece diferente quando criptografado.SALT
remove um método usado por invasores para roubar dados, ou seja, corresponder a padrões de texto criptografado. É possível usar os parâmetrosSALT
ouNO SALT
especificados com a cláusulaENCRYPT
.É possível usar o comando
ALTER TABLE
para criptografar colunas em uma tabela. Basta adicionar uma coluna criptografada ou criptografar uma coluna que já existe.Para adicionar uma coluna criptografada a uma tabela atual no banco de dados:
SQL> ALTER TABLE employee ADD (credit_card_number VARCHAR2(16) ENCRYPT NO SALT); Table altered.
Para criptografar uma coluna atual em uma tabela no banco de dados:
SQL> ALTER TABLE employee MODIFY (last_name encrypt); Table altered.
Para adicionar
SALT
a uma coluna criptografada em uma tabela no banco de dados:SQL> ALTER TABLE employee MODIFY (last_name encrypt salt); Table altered.
Para descriptografar uma coluna atual em uma tabela no banco de dados:
SQL> ALTER TABLE employee MODIFY (last_name decrypt); Table altered.
Remover o SALT de uma coluna criptografada em uma tabela no banco de dados
SQL> ALTER TABLE employee MODIFY (last_name encrypt no salt); Table altered.
Para alterar a chave criptografada da tabela que contém uma ou mais colunas criptografadas:
SQL> ALTER TABLE employee rekey; Table altered.
Alterar o algoritmo de criptografia da tabela que contém uma ou mais colunas criptografadas
SQL> ALTER TABLE employee rekey USING '3DES168'; Table altered.
Como criptografar tablespaces futuros
É possível configurar o Oracle Database para criptografar automaticamente os tablespaces futuros
que você criará usando o parâmetro de inicialização do banco de dados
ENCRYPT_NEW_TABLESPACES
.
Use o seguinte comando ALTER SYSTEM
:
SQL> ALTER SYSTEM SET ENCRYPT_NEW_TABLESPACES=value;
Os valores podem ser os seguintes:
ALWAYS
criptografa automaticamente o espaço de tabela usando o algoritmoAES128
ou o algoritmo especificado pelo parâmetro dinâmicoTABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM
, se você omitir a cláusulaENCRYPTION
deCREATE TABLESPACE
para os cenários da nuvem e o local No entanto, se você fornecer a cláusulaENCRYPTION
, o algoritmo especificado terá precedência sobreAES128
.DDL
criptografa o espaço de tabela usando a configuração especificada da cláusulaENCRYPTION
deCREATE TABLESPACE
para ambientes em nuvem e no local.CLOUD_ONLY
(não aplicável no nosso caso de uso) aplica-se apenas a um ambiente do Oracle Cloud. O padrão éCLOUD_ONLY
.
Criptografia de espaço de trabalho TDE ou criptografia de coluna TDE?
ESCOLHER A ENTRADA DA COLUNA DO TDE SE | ESCOLHER ENTRADA DA TABELA DE TDE IF |
---|---|
A localização de informações confidenciais é conhecida | A localização de informações confidenciais é desconhecida |
Menos de 5% de todas as colunas do aplicativo são candidatas à criptografia | A maioria dos dados de inscrição é considerada confidencial, ou várias exigências de segurança nacional e internacional se aplicam ao seu setor |
O tipo e o comprimento de dados são compatíveis com a criptografia de coluna TDE | Nem todos os tipos de dados que contêm informações confidenciais são compatíveis com a criptografia de coluna TDE |
As candidatas à criptografia não são colunas de chave estrangeira | Candidatos de criptografia são colunas de chave estrangeira |
ndices de candidatos de criptografia são índices normais de B-tree | Os índices candidatos de criptografia são funcionais. |
O aplicativo não realiza verificações de intervalos em dados criptografados | O aplicativo procura intervalos de dados confidenciais |
Aumento do armazenamento em 1 a 52 bytes por valor criptografado | Sem aumento de armazenamento aceitável |
O impacto no desempenho depende da porcentagem de colunas criptografadas; com que frequência os valores criptografados são selecionados ou atualizados, o tamanho dos dados criptografados e outras variáveis | Impacto de desempenho constante abaixo de 10% |
Se você quiser se beneficiar da aceleração de criptografia de hardware | |
Se você quiser aproveitar os benefícios da criptografia e compactação ao mesmo tempo. |
Criptografia do backup RMAN
Os conjuntos de backup são criptografados usando um algoritmo listado em
V$RMAN_ENCRYPTION_ALGORITHMS
. O RMAN pode criptografar de forma transparente os dados gravados em conjuntos de backup e descriptografar esses conjuntos de backup quando for necessário em uma operação RESTORE
. O RMAN oferece três modos de criptografia:
transparente,
protegido por senha
e
modo duplo.
Para usar a criptografia de modo transparente (padrão), use o Oracle Encryption Wallet.
Para usar o modo de senha, uma senha precisa ser fornecida pelo DBA, que será usada na criptografia. É possível definir o modo de senha por
SET ENCRYPTION ON IDENTIFIED BY password only
.Ao usar a criptografia de modo duplo, é possível usar o Oracle Wallet ou uma senha para descriptografia. É possível definir o modo duplo por
SET ENCRYPTION ON IDENTIFIED BY password
.
Como configurar a criptografia do backup RMAN
Configure a Oracle Wallet.
Configurar o RMAN para usar criptografia.
Configurar o modo de criptografia RMAN Este exemplo usa o modo duplo. Para fazer isso, conecte-se ao banco de dados de destino RMAN e execute o comando
SET ENCRYPTION ON IDENTIFIED BY password
.[oracle@svr002 ~]$ . oraenv ORACLE_SID = [tdedb] ? DB11G The Oracle base has been changed from /u01/app/oracle to /apps/oracle/oracle_base export ORACLE_SID=DB11G1
Conectar-se ao RMAN.
rman target / RMAN> SET ENCRYPTION ON IDENTIFIED BY <password>; executing command: SET encryption
SET ENCRYPTION
modifica as configurações de criptografia especificadas pelo comandoCONFIGURE ENCRYPTION
, que usa criptografia transparente por padrão.Configure o algoritmo de criptografia de backup padrão.
Para ver a lista de algoritmos de criptografia RMAN, consulte a visualização
v$rman_encryption_algorithms
:SQL> COL algorithm_name FORMAT a15 COL algorithm_description FORMAT a15 COL is_default FORMAT a15 SQL> select algorithm_id, algorithm_name, algorithm_description, is_default from v$rman_encryption_algorithms; ALGORITHM_ID ALGORITHM_NAME ALGORITHM_DESCR IS_DEFAULT ----------- -------------- --------------- ---------- 1 AES128 AES 128-bit key YES 2 AES192 AES 192-bit key NO 3 AES256 AES 256-bit key NO
Para alterar o algoritmo padrão:
RMAN> CONFIGURE ENCRYPTION ALGORITHM 'AES256'; using target database control file instead of recovery catalog new RMAN configuration parameters: CONFIGURE ENCRYPTION ALGORITHM 'AES256'; new RMAN configuration parameters are successfully stored
Faça um backup criptografado usando o comando de backup normal do RMAN. Exemplo:
RMAN> backup tablespace users;
Para restaurar o backup usando a senha de criptografia:
RMAN> set decryption identified by <password>; RMAN> restore tablespace users;
Observações importantes
Se as chaves de descriptografia necessárias estiverem disponíveis, os backups criptografados serão descriptografados automaticamente durante a restauração e a recuperação. Cada conjunto de backup recebe uma chave separada. A chave é armazenada em formato criptografado no espaço de backup. O backup é descriptografado com chaves conseguidas por uma senha fornecida pelo usuário ou pelo keystore de software da Oracle.
A criptografia de backup transparente é compatível com o keystore do software de login automático e o software do keystore baseado em senha. Quando você usa o keystore do software de login automático, é possível realizar operações de backup criptografadas a qualquer momento, porque o keystore de login automático está sempre aberto. Quando você usa o keystore de software baseado em senha, ele precisa ser aberto antes da execução da criptografia de backup.
Se você usa um keystore de login automático, não faça backup dele junto com seus dados de backup criptografados, porque os usuários poderão ler os backups criptografados se tiverem os backups e o keystore de login automático. É seguro fazer backup do keystore do Oracle porque essa forma do keystore não pode ser usada sem a senha do keystore.
Se algumas colunas no banco de dados forem criptografadas com a criptografia de coluna de dados transparente (TDE, na sigla em inglês) e se essas colunas forem armazenadas em backup usando criptografia de backup, essas colunas serão criptografadas uma segunda vez durante o backup. Quando os conjuntos de backup são descriptografados durante uma operação de restauração, as colunas criptografadas são retornadas para a forma criptografada original.
Se você perder o keystore do Oracle, não será possível restaurar backups criptografados de forma transparente. Além disso, se você esquecer ou perder a senha usada para criptografar um backup criptografado por senha, não será possível restaurar o backup.