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 ou bastion 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 ou WALLET_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.

  1. 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
    
  2. 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.

  3. 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 arquivo init.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
    
  4. 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.

  1. 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âmetros SALT ou NO SALT especificados com a cláusula ENCRYPT.

    É 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 algoritmo AES128 ou o algoritmo especificado pelo parâmetro dinâmico TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM, se você omitir a cláusula ENCRYPTION de CREATE TABLESPACE para os cenários da nuvem e o local No entanto, se você fornecer a cláusula ENCRYPTION, o algoritmo especificado terá precedência sobre AES128.

  • DDL criptografa o espaço de tabela usando a configuração especificada da cláusula ENCRYPTION de CREATE 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

  1. Configure a Oracle Wallet.

  2. 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 comando CONFIGURE ENCRYPTION , que usa criptografia transparente por padrão.

  3. 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.