Criar um cluster com TDE ativada

Selecione uma versão da documentação:

É possível proteger os dados em repouso e as informações sensíveis ativando a criptografia de dados transparente (TDE) no AlloyDB Omni. Este documento descreve como criar um cluster ativado para TDE fornecendo as variáveis de ambiente necessárias do Key Management Service (KMS) (para HashiCorp Vault ou Thales CipherTrust Manager) e a flag --tde-kek-url na variável de ambiente POSTGRES_INITDB_ARGS durante a inicialização do banco de dados.

Antes de começar

KMS do HashiCorp Vault

  • Leia Planejar a instalação do AlloyDB Omni.
  • Ao planejar a implantação do AlloyDB Omni com a TDE ativada, considere o uso adicional da CPU com base na carga de trabalho e no volume de dados previstos. A criptografia e a descriptografia são operações com uso intenso de computação.
  • Configure o mecanismo de secrets KV-V2 do HashiCorp Vault para garantir que o caminho da chave de criptografia de chave (KEK) e o JSON Web Token (JWT) estejam disponíveis.
  • Verifique se o AlloyDB Omni tem permissão para ler o arquivo JSON Web Token (JWT), que é o token de autenticação.

KMS do Thales CipherTrust

  • Leia Planejar a instalação do AlloyDB Omni.
  • Ao planejar a implantação do AlloyDB Omni com a TDE ativada, considere o uso adicional da CPU com base na carga de trabalho e no volume de dados previstos. A criptografia e a descriptografia são operações com uso intenso de computação.
  • Configure Thales CipherTrust Manager para garantir que a chave de criptografia de chave (KEK) secreta seja criada e exportável.
  • Verifique se você tem uma conta de usuário do CipherTrust Manager (username e password) com permissão para autenticar e exportar o secret da KEK.

Crie o cluster

Para criar um cluster ativado para TDE, transmita a configuração necessária do Key Management Service (KMS) e as credenciais de autenticação durante a inicialização do banco de dados. É possível configurar o HashiCorp Vault (usando a autenticação jwt) ou o Thales CipherTrust Manager (usando a autenticação de nome de usuário e senha).

  1. Instale o AlloyDB Omni usando o RPM para preparar o ambiente e instalar o pacote RPM do AlloyDB Omni.

  2. Inicialize o banco de dados.

    KMS do HashiCorp Vault

    Use essa abordagem para cargas de trabalho de produção com o HashiCorp Vault.

    1. Execute o comando a seguir para inicializar o banco de dados com a TDE ativada:

      sudo PGPASSWORD=POSTGRES_PASSWORD \
      PGDATA=DATA_DIR \
      VAULT_AUTH_TYPE=jwt \
      VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT \
      VAULT_JWT_PATH=JWT_FILE_PATH \
      VAULT_ROLE=VAULT_ROLE \
      VAULT_CERT_PATH=VAULT_CERT_PATH \
      POSTGRES_INITDB_ARGS="--tde-kek-url=KEK_URL" \
      /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb

      Substitua:

      • POSTGRES_PASSWORD: a senha do usuário do banco de dados.
      • DATA_DIR: o diretório local a ser montado como o volume de dados do AlloyDB Omni. Por exemplo, /local/data.
      • JWT_AUTH_ENGINE_MOUNT: o caminho em que o mecanismo de autenticação do HashiCorp Vault está montado. Por exemplo, /auth/jwt.
      • JWT_FILE_PATH: o caminho em que o JWT do Vault está armazenado nos nós. Por exemplo, /tde-tls/jwt-token.
      • Opcional: VAULT_ROLE: o papel do cliente definido na configuração do Vault que permite que o HashiCorp Vault verifique a autenticidade do token JWT.
      • VAULT_CERT_PATH: o caminho em que os certificados da conexão do Vault estão localizados nos nós. Por exemplo, /tde-tls. Se não estiver definido, os certificados no repositório de confiança padrão serão usados.
      • KEK_URL: o URL totalmente qualificado para a KEK no HashiCorp Vault. Use vault como o protocolo para especificar o HashiCorp Vault como o provedor de KMS. Por exemplo, vault://127.0.0.1:8200/v1/secret/data/alloydb_kek.
    2. Para criar um arquivo de substituição para alloydbomni18.service em /etc/systemd/system/alloydbomni18.service.d/override.conf, adicione o seguinte ao arquivo override.conf:

      [Service]
      Environment="VAULT_AUTH_TYPE=jwt"
      Environment="VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT"
      Environment="VAULT_JWT_PATH=JWT_FILE_PATH"
      Environment="VAULT_ROLE=VAULT_ROLE"
      Environment="VAULT_CERT_PATH=VAULT_CERT_PATH"

      Substitua:

      • JWT_AUTH_ENGINE_MOUNT: o caminho em que o mecanismo de autenticação do HashiCorp Vault está montado. Por exemplo, /auth/jwt.
      • JWT_FILE_PATH: o caminho em que o JWT do Vault está armazenado nos nós. Por exemplo, /tde-tls/jwt-token.
      • Opcional: VAULT_ROLE: o papel do cliente definido na configuração do Vault que permite que o HashiCorp Vault verifique a autenticidade do token JWT.
      • VAULT_CERT_PATH: o caminho em que os certificados da conexão do Vault estão localizados nos nós. Por exemplo, /tde-tls. Se não estiver definido, os certificados no repositório de confiança padrão serão usados.
    3. Para aplicar as alterações, recarregue o daemon systemd.

      sudo systemctl daemon-reload

    KMS do Thales CipherTrust

    Use essa abordagem para cargas de trabalho de produção com o Thales CipherTrust Manager.

    1. Execute o comando a seguir para inicializar o banco de dados com a TDE ativada:

      sudo PGPASSWORD=POSTGRES_PASSWORD \
      PGDATA=DATA_DIR \
      CIPHERTRUST_USER=CIPHERTRUST_USERNAME \
      CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD \
      CIPHERTRUST_CERT_PATH=CIPHERTRUST_CERT_PATH \
      POSTGRES_INITDB_ARGS="--tde-kek-url=KEK_URL" \
      /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb

      Substitua:

      • POSTGRES_PASSWORD: a senha do usuário do banco de dados.
      • DATA_DIR: o diretório local a ser montado como o volume de dados do AlloyDB Omni. Por exemplo, /local/data.
      • CIPHERTRUST_USERNAME: o nome de usuário usado para autenticar com o Thales CipherTrust Manager.
      • CIPHERTRUST_PASSWORD: a senha do usuário do Thales CipherTrust Manager.
      • CIPHERTRUST_CERT_PATH: o caminho em que os certificados (ca.crt, tls.crt e tls.key) da conexão do CipherTrust Manager estão localizados nos nós. Por exemplo, /tde-tls. Se não estiver definido, os certificados no repositório de confiança padrão serão usados.
      • KEK_URL: o URL totalmente qualificado para a KEK no Thales CipherTrust Manager. Use ciphertrust como o protocolo para especificar o Thales CipherTrust Manager como o provedor de KMS. Por exemplo, ciphertrust://10.0.0.1:443/api/v1/vault/secrets/alloydb_kek.
    2. Para criar um arquivo de substituição para alloydbomni18.service em /etc/systemd/system/alloydbomni18.service.d/override.conf, adicione o seguinte ao arquivo override.conf:

      [Service]
      Environment="CIPHERTRUST_USER=CIPHERTRUST_USERNAME"
      Environment="CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD"
      Environment="CIPHERTRUST_CERT_PATH=CIPHERTRUST_CERT_PATH"

      Substitua:

      • CIPHERTRUST_USERNAME: o nome de usuário usado para autenticar com o Thales CipherTrust Manager.
      • CIPHERTRUST_PASSWORD: a senha do usuário do Thales CipherTrust Manager.
      • CIPHERTRUST_CERT_PATH: o caminho em que os certificados (ca.crt, tls.crt e tls.key) da conexão do CipherTrust Manager estão localizados nos nós. Por exemplo, /tde-tls. Se não estiver definido, os certificados no repositório de confiança padrão serão usados.
    3. Para aplicar as alterações, recarregue o daemon systemd.

      sudo systemctl daemon-reload

    KMS baseado em arquivos

    Use essa abordagem apenas para fins de teste.

    Para testar a TDE localmente usando uma chave baseada em arquivo, primeiro gere uma KEK de 32 bytes na máquina.

    1. Crie o diretório, gere a chave e defina as permissões apropriadas.

      KEK_DIR=KEK_DIR
      sudo mkdir -p $KEK_DIR
      openssl rand -base64 32 | sudo tee $KEK_DIR/key >/dev/null
      sudo chown -R postgres:postgres $KEK_DIR
      sudo chmod 0700 $KEK_DIR
      sudo chmod 0600 $KEK_DIR/key
    2. Inicialize o banco de dados transmitindo o URI do arquivo local como o URL da KEK.

      sudo PGPASSWORD=POSTGRES_PASSWORD \
      PGDATA=DATA_DIR \
      POSTGRES_INITDB_ARGS="--tde-kek-url=file:///$KEK_DIR/key" \
      /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb

      Substitua:

      • POSTGRES_PASSWORD: a senha do usuário do banco de dados.
      • DATA_DIR: o diretório local a ser montado como o volume de dados do AlloyDB Omni. Por exemplo, /local/data.
      • KEK_DIR: o diretório em que a KEK local baseada em arquivo está armazenada. Por exemplo, /tmp/alloydb/kms.
  3. Depois que o banco de dados for inicializado, siga as instruções em Instalar o AlloyDB Omni usando o RPM para preparar o banco de dados, configurar o host e iniciar o serviço systemd.

  4. Para ativar a TDE para dados de cache do mecanismo colunar distribuídos para o armazenamento SSD, conecte-se à instância do banco de dados e execute a seguinte consulta:

    ALTER SYSTEM SET google_columnar_engine.enable_tde_for_storage_cache = 'on';
    
  5. Reinicie o servidor de banco de dados para que as alterações entrem em vigor.

Referência de métricas de TDE

É possível conferir todas as métricas de TDE no agente de monitoramento do AlloyDB Omni. A tabela a seguir descreve cada métrica.

Nome Descrição Rótulo Unidade Tipo
alloydb_omni_database_tde_data_blocks_decrypted_count_total Número de blocos de dados descriptografados. Não relevante Contador
alloydb_omni_database_tde_data_blocks_encrypted_count_total Número de blocos de dados criptografados. Não relevante Contador
alloydb_omni_database_tde_data_decryption_time_us_total Tempo total gasto na descriptografia de blocos de dados. Não relevante Microssegundos Contador
alloydb_omni_database_tde_data_encryption_time_us_total Tempo total gasto na criptografia de blocos de dados. Não relevante Microssegundos Contador
alloydb_omni_database_tde_enabled Status da TDE ativada. Não relevante Medidor
alloydb_omni_database_tde_kek_info Informações da KEK da TDE.
  • kek_version: versão da KEK em uso para encapsulamento de chaves.
  • kek_url: caminho totalmente qualificado para a KEK no KMS.
  • kek_creation_timestamp: horário de criação da versão da KEK em uso.
Medidor
alloydb_omni_database_tde_temp_blocks_decrypted_count_total Número de blocos temporários descriptografados. Não relevante Contador
alloydb_omni_database_tde_temp_blocks_encrypted_count_total Número de blocos temporários criptografados. Não relevante Contador
alloydb_omni_database_tde_temp_decryption_time_us_total Tempo total gasto na descriptografia de blocos temporários. Não relevante Microssegundos Contador
alloydb_omni_database_tde_temp_encryption_time_us_total Tempo total gasto na criptografia de blocos temporários. Não relevante Microssegundos Contador
alloydb_omni_database_tde_wal_blocks_decrypted_count_total Número de blocos WAL descriptografados. Não relevante Contador
alloydb_omni_database_tde_wal_blocks_encrypted_count_total Número de blocos WAL criptografados. Não relevante Contador
alloydb_omni_database_tde_wal_decryption_time_us_total Tempo total gasto na descriptografia de blocos WAL. Não relevante Microssegundos Contador
alloydb_omni_database_tde_wal_encryption_time_us_total Tempo total gasto na criptografia de blocos WAL. Não relevante Microssegundos Contador
tde_chill_cache_blocks_encrypted Número de blocos de cache de resfriamento criptografados. Não relevante Contador
tde_chill_cache_blocks_decrypted Número de blocos de cache de resfriamento descriptografados. Não relevante Contador
tde_chill_cache_blocks_total_encryption_time_us Tempo total gasto na criptografia de blocos de cache de resfriamento. Não relevante Microssegundos Contador
tde_chill_cache_blocks_total_decryption_time_us Tempo total gasto na descriptografia de blocos de cache de resfriamento. Não relevante Microssegundos Contador
tde_ce_cache_ssd_blocks_encrypted Número de blocos de cache colunar distribuídos para o armazenamento SSD que foram criptografados. Não relevante Contador
tde_ce_cache_ssd_blocks_decrypted Número de blocos de cache colunar distribuídos para o armazenamento SSD que foram descriptografados. Não relevante Contador
tde_ce_cache_ssd_blocks_total_encryption_time_us Tempo total gasto na criptografia de blocos de cache colunar distribuídos para o armazenamento SSD. Não relevante Microssegundos Contador
tde_ce_cache_ssd_blocks_total_decryption_time_us Tempo total gasto na descriptografia de blocos de cache colunar distribuídos para o armazenamento SSD. Não relevante Microssegundos Contador