Configurar a CMEK para buckets de registro

Este documento fornece instruções para configurar chaves de criptografia gerenciadas pelo cliente (CMEK) para registros armazenados em buckets de registro. Este documento também descreve como gerenciar essas chaves e as limitações associadas ao uso do CMEK.

É possível configurar a CMEK como uma configuração de recurso padrão para uma organização ou uma pasta. Quando configurado, o Cloud Logging garante que todos os novos buckets de registro na organização ou pasta sejam criptografados com uma chave gerenciada pelo cliente. Se você não fornecer uma chave ao criar o bucket de registros, a chave padrão será usada. Para mais informações, consulte Configurar a CMEK para o Cloud Logging.

Visão geral

Por padrão, o Cloud Logging criptografa o conteúdo do cliente armazenado em repouso. Os dados armazenados em buckets de registro pelo Logging são criptografados usando chaves de criptografia de chaves, um processo conhecido como criptografia de envelope. Para acessar os dados de registro, é preciso ter acesso a essas chaves de criptografia de chaves. Elas são gerenciadas pelo Google Cloud sem que você precise realizar nenhuma ação.

Sua organização pode ter requisitos de criptografia regulamentares, relacionados à conformidade ou avançados que nossa criptografia em repouso padrão não oferece. Para atender aos requisitos da sua organização, em vez de deixar que o Google Cloud gerencie as chaves de criptografia que protegem seus dados, você pode gerenciar suas chaves.

Para informações específicas sobre o uso de CMEK, incluindo vantagens e limitações, consulte Chaves de criptografia gerenciadas pelo cliente.

Para criptografia simétrica, as chaves periódicas e de rotação automática são uma prática recomendada de segurança. Para mais informações, consulte Rotação de chaves.

Pré-requisitos

Siga estas etapas:

  1. Há algumas limitações ao usar o CMEK. Antes de criar um bucket de registros com o CMEK ativado, consulte as limitações.

  2. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  3. Configure o projeto do Google Cloud em que você planeja criar as chaves:

    1. Para ter as permissões necessárias para criar chaves, peça ao administrador que conceda a você o papel do IAM Administrador do Cloud KMS (roles/cloudkms.admin) no projeto ou em um recurso pai. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

      Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

    2. Ative a API Cloud KMS.

    3. Crie um keyring e chaves.

      O Cloud Logging permite usar uma chave de qualquer região. No entanto, ao criar um bucket de registros, o local bucket de registros precisa corresponder ao local da chave. Para informações sobre as regiões com suporte, consulte:

      Não é possível ativar a CMEK para buckets de registro criados na região global.

  4. Verifique se você tem as seguintes permissões do Cloud Logging no projeto do Google Cloud em que planeja criar buckets de registro:

    • logging.settings.get
    • logging.buckets.get
    • logging.buckets.list
    • logging.buckets.create
    • logging.buckets.update

Ativar a CMEK

Depois de concluir as etapas de pré-requisito, siga estas instruções para ativar a CMEK em um bucket de registros individual.

Determinar o ID da conta de serviço

Para determinar o ID da conta de serviço associado ao recurso do Google Cloud para o qual o CMEK será aplicado, faça o seguinte:

  1. Execute o seguinte comando gcloud logging settings describe:

    gcloud logging settings describe --project=BUCKET_PROJECT_ID
    

    Antes de executar o comando anterior, faça a seguinte substituição:

    • BUCKET_PROJECT_ID: nome do projeto do Google Cloud em que você planeja criar o bucket de registros.

    O comando anterior gera uma conta de serviço para o recurso especificado, quando ainda não existe uma, e retorna o ID dessa conta de serviço no campo kmsServiceAccountId:

    kmsServiceAccountId: KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com
    loggingServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com
    name: projects/BUCKET_PROJECT_ID/settings
    

    O campo kmsServiceAccountId lista a conta de serviço usada pelo Cloud Logging para chamar o Cloud Key Management Service.

  2. Se o campo KMS_SERVICE_ACCT_NAME tiver o formato de cmek-pPROJECT_NUMBER e se você estiver usando o VPC Service Controls ou se você ativar o compartilhamento restrito de domínio, determine se é necessário migrar sua conta de serviço do CMEK. Para informações sobre quando você precisa migrar e as etapas para realizar a migração, consulte Resolver problemas do VPC Service Controls e do compartilhamento restrito de domínios.

Atribuir o papel criptografador/descriptografador

Ao configurar a CMEK no nível do bucket de registros, conceda à conta de serviço permissão para usar o Cloud KMS atribuindo o papel Criptografador/Descriptografador de CryptoKey do Cloud KMS à conta de serviço identificada pelo campo kmsServiceAccountId:

gcloud kms keys add-iam-policy-binding \
--project=KMS_PROJECT_ID \
--member serviceAccount:KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--location=KMS_KEY_LOCATION \
--keyring=KMS_KEY_RING \
KMS_KEY_NAME

Antes de executar o comando anterior, faça as seguintes substituições:

  • KMS_PROJECT_ID: o identificador alfanumérico exclusivo, composto pelo nome do projeto do Google Cloud e por um número atribuído aleatoriamente, do projeto do Google Cloud que executa o Cloud KMS. Para informações sobre como conseguir esse identificador, consulte Como identificar projetos.
  • KMS_SERVICE_ACCT_NAME: o nome da conta de serviço mostrado no campo kmsServiceAccountId da resposta do comando gcloud logging settings describe.
  • KMS_KEY_LOCATION: a região da chave do Cloud KMS.
  • KMS_KEY_RING: o nome do keyring do Cloud KMS.
  • KMS_KEY_NAME: o nome da chave do Cloud KMS. Ele é formatado assim: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY.

Criar um bucket de registros e fornecer a chave do Cloud KMS

Para criar um bucket de registros e ativar o CMEK para bucket de registros, execute o seguinte comando gcloud logging buckets create:

gcloud logging buckets create BUCKET_ID \
--location=LOCATION \
--cmek-kms-key-name=KMS_KEY_NAME \
--project=BUCKET_PROJECT_ID

Antes de executar o comando anterior, faça as seguintes substituições:

  • BUCKET_ID: o nome ou ID do bucket de registros.
  • LOCATION: o local do bucket de registros.
  • KMS_KEY_NAME: o nome da chave do Cloud KMS. Ele é formatado assim: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY.
  • BUCKET_PROJECT_ID: nome do projeto do Google Cloud em que o bucket de registros será criado.

Verificar a ativação principal

Para verificar se você criou um bucket de registros com a CMEK ativada, execute o seguinte comando gcloud logging buckets list:

gcloud logging buckets list --project=BUCKET_PROJECT_ID

Antes de executar o comando anterior, faça a seguinte substituição:

  • BUCKET_PROJECT_ID: nome do projeto do Google Cloud que armazena o bucket de registros.

Na saída tabular, você encontra uma coluna identificada como CMEK. Se o valor da coluna CMEK for TRUE, a CMEK será ativada para o bucket de registros.

Para conferir os detalhes de um bucket de registros específico, incluindo os detalhes da chave, execute este comando:

gcloud logging buckets describe BUCKET_ID --location=LOCATION --project=BUCKET_PROJECT_ID

Gerenciar sua chave do Cloud KMS

As seções a seguir descrevem como atualizar um bucket de registros para usar a versão mais recente da chave primária de uma chave do Cloud KMS. Eles também descrevem como mudar, revogar o acesso e desativar a chave do Cloud KMS.

Fazer a rotação da chave do Cloud KMS

Ao criar uma chave do Cloud KMS, é possível configurar um período de rotação. Também é possível girar uma chave do Cloud KMS manualmente. Cada vez que uma chave é rotacionada, uma nova versão dela é criada.

Se você fizer a rotação de uma chave do Cloud KMS, a nova versão da chave será aplicada apenas a buckets de registro criados após a rotação de chaves. Se a chave for usada por um bucket de registros, a rotação dela não vai mudar a forma como o bucket de registros protege os dados.

Por exemplo, suponha que você crie um bucket de registros, ative a CMEK e gire a chave do Cloud KMS. O bucket de registros que você criou não usa a nova versão da chave. Em vez disso, ele continua protegendo os dados com a versão da chave marcada como principal quando o bucket de registros foi criado.

Para atualizar um bucket de registros e usar a versão mais recente da chave primária de uma chave do Cloud KMS, faça o seguinte:

  1. Identifique a chave atual do Cloud KMS para o bucket de registros. Para mais informações, consulte Verificar a ativação da chave.
  2. Identifique outra chave do Cloud KMS que você pode usar. Se o keyring tiver apenas uma chave, crie uma chave.
  3. Altere a chave do Cloud KMS para o bucket de registros para a chave do Cloud KMS criada na etapa anterior.
  4. Altere a chave do Cloud KMS para o bucket de registros para a chave original do Cloud KMS.

Alterar sua chave do Cloud KMS

Para mudar a chave do Cloud KMS associada ao bucket de registros, crie uma chave e atualize as configurações do CMEK para o bucket de registros:

gcloud logging buckets update BUCKET_ID --location=LOCATION \
--cmek-kms-key-name=NEW_KMS_KEY_NAME --project=BUCKET_PROJECT_ID
  • BUCKET_ID: o nome ou ID do bucket de registros.
  • LOCATION: o local do bucket de registros.
  • NEW_KMS_KEY_NAME: nome da nova chave.
  • BUCKET_PROJECT_ID: nome do projeto do Google Cloud que armazena o bucket de registros.

Revogar acesso à chave do Cloud KMS

Para revogar o acesso do Logging à chave do Cloud KMS a qualquer momento, remova a permissão do IAM da conta de serviço configurada para essa chave.

Se você remover o acesso do Logging a uma chave, poderá levar até uma hora para que a alteração entre em vigor.

Se você tiver um conjunto de dados do BigQuery vinculado, o BigQuery não poderá usar esse acesso para aplicar a chave a uma nova tabela do BigQuery. Se você quiser usar uma chave na tabela do BigQuery que não esteja vinculada ao Logging, siga a documentação do BigQuery para fazer isso. Se você revogar o acesso do Logging a uma chave e tiver um conjunto de dados do BigQuery vinculado, também vai revogar o acesso do BigQuery à mesma chave.

Não é possível revogar o acesso do BigQuery à chave do conjunto de dados vinculado e preservar o acesso do Logging.

Para mais informações sobre o impacto da revogação do acesso, consulte Limitações.

Para remover o acesso de registro a uma chave, execute o seguinte comando:

gcloud kms keys remove-iam-policy-binding \
--project=KMS_PROJECT_ID \
--member serviceAccount:KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--location=KMS_KEY_LOCATION \
--keyring=KMS_KEY_RING \
KMS_KEY_NAME

Antes de executar o comando anterior, faça as seguintes substituições:

  • KMS_PROJECT_ID: o identificador alfanumérico exclusivo, composto pelo nome do projeto do Google Cloud e por um número atribuído aleatoriamente, do projeto do Google Cloud que executa o Cloud KMS. Para informações sobre como conseguir esse identificador, consulte Como identificar projetos.
  • KMS_SERVICE_ACCT_NAME: o nome da conta de serviço mostrado no campo kmsServiceAccountId da resposta do comando gcloud logging settings describe.
  • KMS_KEY_LOCATION: a região da chave do Cloud KMS.
  • KMS_KEY_RING: o nome do keyring do Cloud KMS.
  • KMS_KEY_NAME: o nome da chave do Cloud KMS. Ele é formatado assim: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY.

Limitações

Confira a seguir as limitações conhecidas.

A CMEK desativa o Error Reporting

Se você quiser usar Error Reporting, não ative as chaves de criptografia gerenciadas pelo cliente (CMEK) nos seus buckets de registro. Para mais informações, consulte Solução de problemas.

Não é possível remover o CMEK dos buckets de registro

Não é possível reconfigurar buckets de registro para alterar ou remover o CMEK.

Degradação devido à indisponibilidade da chave do Cloud KMS

Uma chave do Cloud KMS é considerada disponível e acessível pelo Logging se ambos os itens a seguir forem verdadeiros:

  • A chave está ativada.
  • A conta de serviço do Logging tem permissões de criptografia e descriptografia na chave.

A geração de registros recomenda que todas as chaves sejam corretamente configuradas e sempre disponíveis.

Perda da recuperação de desastres

Se houver falhas críticas no armazenamento primário do Cloud Logging, o Logging vai espelhar os dados de registro em arquivos de recuperação de desastres. Quando o CMEK é ativado para um recurso, como uma organização do Google Cloud, os registros pertencentes a esse recurso são protegidos pela chave CMEK configurada. Se a chave CMEK não estiver acessível, os arquivos de recuperação de desastres não poderão ser gravados para esse recurso.

A perda de arquivos de recuperação de desastres não afeta as operações normais de geração de registros. No entanto, em caso de desastre de armazenamento, o Cloud Logging talvez não consiga recuperar registros de recursos com o CMEK não configurado corretamente.

Suporte a restrições

O Cloud Customer Care não consegue ler os registros do recurso se a chave não estiver configurada corretamente ou se ficar indisponível.

Desempenho da consulta degradado

Quando uma chave de criptografia gerenciada pelo cliente fica inacessível, o Cloud Logging continua criptografando e armazenando dados em buckets de registro. No entanto, o Cloud Logging não pode realizar otimizações em segundo plano nesses dados. Se o acesso à chave for restaurado, os dados vão ficar disponíveis. No entanto, os dados são armazenados inicialmente em um estado não otimizado, e o desempenho da consulta pode ser afetado.

Degradação devido à indisponibilidade da chave do Cloud EKM

Quando você usa uma chave do Cloud EKM, o Google Cloud não tem controle sobre a disponibilidade da sua chave gerenciada externamente no sistema de parceiros de gerenciamento de chaves externas. Para a CMEK no nível do bucket, se uma chave gerenciada externamente não estiver disponível, o Cloud Logging continuará armazenando registros em buckets de registro, mas os usuários não poderão acessar esses registros.

Para mais considerações e possíveis alternativas ao usar chaves externas, consulte a documentação do gerenciador de chaves externas do Cloud.

Regionalidade

Ao criar um bucket de registros e ativar a CMEK, use uma chave com a região que corresponde ao escopo regional dos seus dados. Não é possível configurar a CMEK para buckets de registro criados na região global.

Disponibilidade da biblioteca de cliente

As bibliotecas de cliente do Logging não fornecem métodos para configurar a CMEK.

Cotas

Para detalhes sobre os limites de uso do Logging, consulte Cotas e limites.

Resolver problemas de configuração

Para informações sobre como resolver erros de configuração do CMEK, consulte Resolver erros de configuração do CMEK e da organização.