Proteger dados com chaves de criptografia

Para proteger dados em repouso nos clusters e backups do AlloyDB para PostgreSQL com chaves que você controla, é possível criar, autorizar, aplicar e gerenciar chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) no Cloud Key Management Service (Cloud KMS).

Para mais informações sobre CMEK, consulte Sobre CMEK.

Criar e autorizar uma chave CMEK para o AlloyDB

  1. Crie uma chave no Cloud KMS. O AlloyDB é compatível com os seguintes tipos de chaves:

    A chave precisa estar no mesmo local que o cluster do AlloyDB. Por exemplo, um cluster do AlloyDB localizado em us-west1 só pode usar chaves em us-west1.

    Se você já tiver uma chave do Cloud KMS no local correto, pule esta etapa.

  2. Conceda ao AlloyDB acesso à chave.

    1. Usando a Google Cloud CLI, crie e exiba o agente de serviço ou exiba-o se a conta já existir:

      gcloud beta services identity create --service=alloydb.googleapis.com \
          --project=PROJECT

      O comando gcloud beta services identity create cria ou recebe o agente de serviço que o AlloyDB pode usar para acessar a chave do Cloud KMS em seu nome.

      O ID do agente de serviço é semelhante a um endereço de e-mail:

      Service identity created: service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
      
    2. Conceda o papel de criptografador/descriptografador de CryptoKey do Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) ao agente de serviço:

      gcloud kms keys add-iam-policy-binding KEY \
          --location=REGION \
          --keyring=KEYRING \
          --project=PROJECT \
          --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com \
          --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

      Substitua:

      • KEY: o ID do Cloud KMS da chave.

      • REGION: a região da chave, por exemplo, us-central1.

      • KEYRING: o ID do keyring do Cloud KMS da chave.

      • PROJECT: o ID do projeto da chave.

      • PROJECT_NUMBER: o número do projeto do cluster do AlloyDB.

      Esse papel concede ao agente de serviço permissão para criptografar e descriptografar usando a chave do Cloud KMS. Para mais informações sobre papéis e permissões do Cloud KMS, consulte Permissões e papéis do Cloud KMS.

Criar um cluster criptografado por CMEK

Ao criar um cluster, é possível escolher se ele será criptografado com a criptografia padrão gerenciada pelo Google ou se uma chave CMEK será usada. Para mais informações, consulte Criar um cluster e a instância primária dele.

Ver o método de criptografia e a chave CMEK de um cluster

Console

A coluna Criptografia da página Clusters mostra se cada cluster no projeto usa criptografia gerenciada pelo Google ou CMEK.

Acessar a página de Clusters

Para ver os detalhes da chave de um cluster que usa CMEK, clique no nome dele na coluna Nome do recurso. O campo Chave de criptografia da página de detalhes resultante contém uma descrição da chave, incluindo um link para a própria página de detalhes do Cloud KMS.

gcloud

Chame o comando gcloud alloydb clusters describe:

gcloud alloydb clusters describe CLUSTER \
    --project=PROJECT \
    --region=REGION

Substitua:

  • CLUSTER: o ID do cluster a ser descrito.

  • PROJECT: o ID do projeto do cluster.

  • REGION: a região do cluster, por exemplo, us-central1.

A saída inclui um campo encryptionInfo com um resumo da criptografia do cluster.

Aplicar CMEK a backups

Ao criar um backup, é possível escolher se ele será criptografado usando a criptografia padrão gerenciada pelo Google ou uma chave CMEK. Para mais informações, consulte Criar um backup sob demanda ou Configurar um plano de backup.

Também é possível aplicar uma chave CMEK ao cluster criado ao restaurar de um backup, independentemente do método de criptografia desse backup. Para mais informações, consulte Restaurar um cluster.

Alternar chaves usando a criptografia CMEK

É importante entender as implicações de alternar as chaves de criptografia gerenciadas pelo cliente (CMEK) no Cloud KMS quando usadas com clusters do AlloyDB.

Quando você faz a rotação de uma chave CMEK, o seguinte acontece com os dados atuais do AlloyDB:

  • O acesso imediato continua: os dados permanecem criptografados com a versão original da chave de criptografia de dados (DEK, na sigla em inglês), desde que a versão anterior da chave ainda esteja disponível no Cloud KMS, sem ser desativada nem excluída.

  • A nova criptografia de dados completa é manual: para que todos os dados do AlloyDB estejam na versão mais recente da chave primária, é necessário criptografá-los novamente.

Para criptografar novamente o cluster atual com uma nova versão de chave CMEK, é necessário realizar uma operação de backup e restauração:

  1. Crie um backup do cluster atual.

  2. Restaure o backup em um novo cluster, especificando a nova versão da chave primária da CMEK durante o processo de restauração.

Para mais informações, consulte Restauração de cluster.

A rotação frequente de chaves CMEK com o AlloyDB exige uma sobrecarga operacional significativa. Como os dados atuais não são criptografados novamente de forma automática e como a criptografia manual envolve um backup completo e uma restauração para um novo cluster, as rotações frequentes podem ser incômodas e afetar a disponibilidade ou a complexidade do gerenciamento.

Só é possível excluir com segurança as versões antigas da chave CMEK no Cloud KMS depois de confirmar que todos os dados relevantes do AlloyDB foram criptografados manualmente de novo e que os dados usam uma versão de chave mais recente.

Ver o método de criptografia e a chave CMEK de um backup

Console

A coluna Criptografia da página Backups mostra se cada backup no projeto usa a criptografia gerenciada pelo Google ou o Cloud KMS (CMEK).

Acessar a página "Backups"

Para ver os detalhes principais de um backup usando CMEK, clique em Restaurar. O campo Chave de criptografia do painel de detalhes subsequente contém uma descrição da chave, incluindo um link para a própria página de detalhes do Cloud KMS.

gcloud

Chame o comando gcloud alloydb backups describe:

gcloud alloydb backups describe BACKUP_ID \
    --project=PROJECT \
    --region=REGION

Substitua:

  • BACKUP_ID: o ID do backup a ser descrito.

  • PROJECT: o ID do projeto do backup.

  • REGION: a região do backup, por exemplo, us-central1.

A saída inclui um campo encryptionInfo com um resumo da criptografia do backup.

Desativar uma chave

A desativação da chave CMEK de um cluster torna os dados dele inacessíveis até que você ative a chave novamente.

No entanto, a desativação de uma chave pode levar até três horas para ser propagada para o cluster do AlloyDB. Para desativar uma chave e impedir o acesso aos dados sem esperar pela propagação da chave, siga estas etapas:

  1. Exclua a instância principal do cluster. A exclusão da instância principal não afeta os dados do cluster. É possível criar uma nova instância principal depois de reativar a chave, conforme descrito na seção a seguir.

  2. Use o Cloud KMS para desativar a chave.

Ativar uma chave

Para ativar uma chave, siga estas etapas:

  1. Use o Cloud KMS para ativar a chave.

  2. Se você excluiu a instância principal do cluster antes de desativar a chave, crie uma nova instância principal.

A ativação de uma chave pode levar até três horas para ser propagada para o cluster. Os dados do cluster ficam acessíveis assim que essa propagação acontece.

Visualizar registros de auditoria para chave do Cloud KMS

Para ver os registros de auditoria associados a uma chave CMEK específica, siga estas etapas:

  1. Verifique se a geração de registros está ativada para a API Cloud KMS no seu projeto.

  2. Acesse a página da Análise de Registros no console do Google Cloud .

    Acessar a Análise de registros.

  3. Limite as entradas de registro na chave do Cloud KMS adicionando as seguintes linhas ao criador de consultas:

    resource.type="cloudkms_cryptokey"
    resource.labels.location="REGION"
    resource.labels.key_ring_id="KEYRING"
    resource.labels.crypto_key_id="KEY"
    

    Substitua:

    • REGION: a região da chave, por exemplo, us-central1.

    • KEYRING: o ID do keyring do Cloud KMS da chave.

    • KEY: o ID do Cloud KMS da chave.

  4. Em operações normais, as operações de criptografia e descriptografia são registradas com gravidade INFO. Essas entradas são registradas quando as instâncias no cluster do AlloyDB validam a chave do Cloud KMS, o que ocorre a cada cinco minutos.

  5. Se o AlloyDB não conseguir acessar a chave, as operações serão registradas como ERROR.

Ver justificativas de acesso para uma chave do Cloud EKM

Se você usar uma chave do Cloud EKM, poderá usar as Justificativas de acesso às chaves para ver o motivo de cada solicitação do Cloud EKM. Além disso, com base na justificativa fornecida, é possível aprovar ou negar uma solicitação automaticamente. Para mais informações, consulte Ver e agir de acordo com as justificativas.