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 registro, 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. Por padrão, eles são Google-owned and Google-managed encryption keys e não exigem nenhuma ação da sua parte.

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 usar Google-owned and Google-managed encryption keys, você pode gerenciar suas próprias 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 registro 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 registro, o local dele 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 você 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 registro individual.

Determinar o ID da conta de serviço

Para determinar o ID da conta de serviço associado ao recurso Google Cloud para o qual a CMEK será aplicada, 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 registro.

    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 registro, 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 registro e fornecer a chave do Cloud KMS

Para criar um bucket de registro e ativar o CMEK para ele, 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 registro.
  • LOCATION: o local do bucket de registro.
  • 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 registro será criado.

Verificar a ativação principal

Para verificar se você criou um bucket de registro 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 registro.

Na saída tabular, você encontra uma coluna com a identificação CMEK. Se o valor da coluna CMEK for TRUE, a CMEK será ativada para o bucket de registro.

Para conferir os detalhes de um bucket de registro 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 registro 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. Toda vez que uma chave é rotacionada, uma nova versão dela é criada.

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

Por exemplo, suponha que você crie um bucket de registro, ative a CMEK e gire a chave do Cloud KMS. O bucket de registro 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 registro foi criado.

Para atualizar um bucket de registro 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 registro. 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 registro para a chave do Cloud KMS criada na etapa anterior.
  4. Altere a chave do Cloud KMS para o bucket de registro 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 registro.
  • LOCATION: o local do bucket de registro.
  • NEW_KMS_KEY_NAME: nome da nova chave.
  • BUCKET_PROJECT_ID: nome do projeto do Google Cloud que armazena o bucket de registro.

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 o recurso de Relatório de erros, 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 a CMEK é ativada para um recurso, como uma Google Cloud organização, 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, eles serã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 registro 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

Quando você usa a CMEK no Logging, seus projetos podem consumir cotas de solicitações criptográficas do Cloud KMS. Por exemplo, ativar o CMEK em um bucket de registro pode consumir essas cotas. As operações de criptografia e descriptografia que usam chaves CMEK só afetam as cotas do Cloud KMS se você usar chaves de hardware (Cloud HSM) ou externas (Cloud EKM). Para mais informações, consulte Cotas do Cloud KMS.

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.