Criar um cluster com TDE ativada

Selecione uma versão da documentação:

O operador do Kubernetes do AlloyDB Omni automatiza o ciclo de vida dos clusters de criptografia de dados transparente (TDE) usando o recurso personalizado TdeConfig. Esse recurso armazena detalhes da conexão do Key Management Service (KMS), permitindo que o operador insira com segurança as credenciais necessárias nos pods de banco de dados.

Antes de começar

  • Opcional: para implantar um cluster com TDE no OpenShift, conceda a restrição de contexto de segurança (SCC) hostmount-anyuid à conta de serviço DBCluster que executa o cluster de banco de dados.

    oc adm policy add-scc-to-user hostmount-anyuid -z DBCLUSTER_NAME-sa -n DBCLUSTER_NAMESPACE

    Substitua DBCLUSTER_NAME pelo nome do DBCluster e DBCLUSTER_NAMESPACE pelo namespace em que você quer criar o recurso DBCluster.

Configurar o acesso ao cofre

Crie um recurso secreto que contenha o caminho da KEK e as credenciais de autenticação.

apiVersion: v1
kind: ConfigMap
metadata:
  name: CONFIG_MAP_NAME
data:
  kek_url: "KEK_URL"
  token_path: "JWT_TOKEN_PATH"

Substitua:

  • CONFIG_MAP_NAME: nome do mapa de configuração. Os valores definidos em kek_url e token_path são usados na definição do recurso TdeConfig.
  • KEK_URL: o URL totalmente qualificado da KEK no HashiCorp Vault. Use vault como o protocolo para especificar o HashiCorp Vault como o provedor de KMS. Por exemplo, vault://vault.default.svc:8200/v1/secrets/data/alloydb_kek.
  • JWT_TOKEN_PATH: caminho para o token JWT no nó. Por exemplo, /tmp/token. O caminho de acesso do token JWT precisa ser consistente em todos os nós do cluster.

Criar um secret TLS

Para criar um secret do TLS e armazenar seus certificados, execute os seguintes comandos:

kubectl create secret tls VAULT_SECRET_NAME \
    --cert=vault.crt \
    --key=vault.key

kubectl patch secret VAULT_SECRET_NAME \
    -p '{"data":{"ca.crt":"'$(base64 -w 0 vault.crt)'"}}' \
    --type=merge

Substitua VAULT_SECRET_NAME por um nome para o secret do TLS. Você usa esse nome secreto ao criar o recurso personalizado TdeConfig.

Criar o CRD TdeConfig

Crie um recurso TdeConfig que defina como o AlloyDB Omni se comunica com o cofre para recuperar a KEK. O único tipo de autenticação compatível é jwt. Crie o recurso TdeConfig no mesmo namespace que o recurso DbCluster.

Verifique se o caminho para o token JWT está acessível ao usuário postgres e se a instância do cofre pode ser acessada pela rede.

Para criar o recurso TdeConfig, siga estas etapas:

Crie e aplique um manifesto para o recurso TdeConfig.

  apiVersion: alloydbomni.dbadmin.goog/v1
  kind: TdeConfig
  metadata:
    name: TDE_CONFIG_NAME
  spec:
    kekUrlRef:
      name: CONFIG_MAP_NAME
      key: kek_url
    kmsProvider:
      vault:
        authType: "jwt"
        authMount: "JWT_AUTH_MOUNT_PATH"
        jwt:
          pathRef:
            name: "CONFIG_MAP_NAME"
            key: "token_path"
          role: "VAULT_ROLE"
    tls:
      certSecret:
        name: "VAULT_SECRET_NAME"

Substitua:

  • TDE_CONFIG_NAME: nome do recurso TdeConfig.
  • JWT_AUTH_MOUNT_PATH: caminho em que o mecanismo de autenticação é montado no HashiCorp Vault, conforme definido na sua configuração. Por exemplo, auth/kms.
  • (Opcional) VAULT_ROLE: a função do cliente definida na configuração do Vault. A função do cliente valida o JWT e reflete os direitos de acesso e a identidade específicos concedidos à função no HashiCorp Vault.
  • VAULT_SECRET_NAME: nome do secret que contém os certificados para a conexão do cofre. Por exemplo, vault-secret.

Implante o DBCluster

  1. Crie e aplique um manifesto para criar um recurso DBCluster que faça referência ao recurso TdeConfig. Para mais informações sobre como criar um cluster de banco de dados, consulte Criar um cluster de banco de dados.

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: "DBCLUSTER_NAME"
    spec:
      databaseVersion: "18.3.0"
      features:
        transparentDataEncryption:
          tdeConfigRef:
            name: "TDE_CONFIG_NAME"
    
    [...]
    

    Substitua TDE_CONFIG_NAME pelo nome do recurso TdeConfig e DBCLUSTER_NAME pelo nome do DBCluster que você quer criar.

  2. Opcional: se você estiver implantando DBCluster em um ambiente OpenShift, anote o recurso DBCluster com a anotação hostmount-anyuid.

    kubectl annotate dbclusters.alloydbomni.dbadmin.goog `DBCLUSTER_NAME` -n `DBCLUSTER_NAMESPACE` openshift.io/scc=anyuid
    

    Substitua DBCLUSTER_NAME pelo nome do recurso DBCluster e DBCLUSTER_NAMESPACE pelo namespace em que você quer criar o recurso DBCluster.

Para ativar a TDE no cache colunar transferido para SSD, adicione um patch ao DBCluster da seguinte maneira:

kubectl patch dbcluster `DBCLUSTER_NAME` \
  -n `DBCLUSTER_NAMESPACE` \
  -p '{"spec":{"primarySpec":{"parameters": {"google_columnar_engine.enable_tde_for_storage_cache": "on"}}}}' \
  --type=merge

Referências de métricas do 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 do bloco 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 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 bloqueios 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 bloqueio temporário. 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 de 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 frio. Não relevante microssegundos Contador
tde_chill_cache_blocks_total_decryption_time_us Tempo total gasto na descriptografia do bloco de cache frio. Não relevante microssegundos Contador
tde_ce_cache_ssd_blocks_encrypted Número de blocos de cache colunares transferidos para o armazenamento SSD que foram criptografados. Não relevante Contador
tde_ce_cache_ssd_blocks_decrypted Número de blocos de cache colunares transferidos 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 colunares distribuídos para 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 colunares distribuídos para o armazenamento SSD. Não relevante microssegundos Contador