Configurar CMEK para buckets de registros

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

É possível definir 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 registros na organização ou na 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 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 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, é possível gerenciá-las em vez de deixar que o Google gerencie as chaves de criptografia que protegem os dados.

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 a CMEK. Antes de criar um bucket de registros com a CMEK ativada, consulte as Limitações.

  2. Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

    gcloud init

    Neste guia, fornecemos instruções para usar a Google Cloud CLI.

  3. Crie ou identifique o projeto do Google Cloud em que você quer executar o Cloud KMS.

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

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

  5. Verifique se você tem as seguintes permissões do Cloud Logging:

    • logging.settings.get
    • logging.buckets.get
    • logging.buckets.list
    • logging.buckets.create
    • logging.buckets.update
  6. Ative a API Cloud KMS para o projeto do Google Cloud que executa o Cloud KMS.

  7. Crie um keyring e chaves para o projeto do Google Cloud que executa o Cloud KMS.

    Para alinhar domínios de falha, use um keyring com um local que corresponda ao escopo regional dos dados:

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

  8. Identifique valores para as seguintes variáveis:

    • BUCKET_ID é o identificador numérico exclusivo do bucket do Logging a ser criado.
    • BUCKET_PROJECT_ID é o nome do projeto do Google Cloud que contém o novo bucket de registros.
    • KMS_PROJECT_ID é o identificador alfanumérico exclusivo, composto pelo nome do projeto do Google Cloud e um número atribuído aleatoriamente, do projeto do Google Cloud que executa o Cloud KMS.
    • KMS_KEY_LOCATION é a região da chave do Cloud KMS.
    • KMS_KEY_RING é o nome do keyring do Cloud KMS.
    • KMS_KEY_NAME pelo nome da chave do Cloud KMS. Ele é formatado assim: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEYRING/cryptoKeys/KEY

    Para informações sobre como localizar identificadores de recursos, consulte Identificar projetos.

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 a que 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
    

    O comando anterior gera uma conta de serviço para o recurso especificado, quando ainda não existe, 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. O formato do campo KMS_SERVICE_ACCT_NAME é service-PROJECT_NUMBER ou cmek-pPROJECT_NUMBER.

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

Atribuir o papel criptografador/descriptografador

Ao configurar a CMEK no nível do bucket de registros, conceda permissão à conta de serviço para usar o Cloud KMS atribuindo o papel Criptografador/Descriptografador da 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

Defina as variáveis no comando anterior desta forma:

  • Substitua KMS_SERVICE_ACCT_NAME pelo valor kmsServiceAccountId determinado na etapa anterior.

  • Substitua as outras variáveis pelos valores determinados nas etapas de pré-requisito.

Crie um bucket de registros e forneça a chave do Cloud KMS

Para criar um bucket de registros e ativar a 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

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 --project=BUCKET_PROJECT_ID

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

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

gcloud logging buckets describe BUCKET_ID

Gerenciar sua chave do Cloud KMS

Nas seções a seguir, descrevemos como atualizar um bucket de registros para usar a versão mais recente de uma chave do Cloud KMS. além de como alterar, revogar o acesso e desativar a chave do Cloud KMS.

Alternar a chave do Cloud KMS

Ao criar uma chave do Cloud KMS, é possível configurar um período de rotação. Também é possível fazer a rotação de uma chave do Cloud KMS manualmente. Cada vez que uma chave é girada, uma nova versão é criada para ela.

Se você fizer a rotação de uma chave do Cloud KMS, a nova versão da chave se aplicará apenas aos buckets de registros criados após a rotação de chaves. Se a chave for usada por um bucket de registros atual, a rotação da chave não 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, em seguida, faça a rotação da chave do Cloud KMS. O bucket de registros que você criou não usa a nova versão da chave. Em vez disso, continua a proteger os dados com a versão da chave que foi marcada como principal quando o bucket de registros foi criado.

Para atualizar um bucket de registros para usar a versão mais recente de uma chave do Cloud KMS, faça o seguinte:

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

Alterar sua chave do Cloud KMS

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

gcloud logging buckets update BUCKET_ID --cmek-kms-key-name=NEW_KMS_KEY_NAME

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 vinculado do BigQuery, o BigQuery não poderá usar esse acesso para aplicar à chave uma nova tabela do BigQuery. Para usar uma chave na tabela do BigQuery que não esteja vinculada ao Logging, siga a documentação do BigQuery. Se você revogar o acesso do Logging a uma chave e tiver um conjunto de dados vinculado do BigQuery, também 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 do Logging 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

Limitações

Confira a seguir as limitações conhecidas.

A CMEK desativa o Error Reporting

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

Não é possível remover CMEKs de buckets de registros

Não é possível reconfigurar buckets de registros para mudar ou remover as CMEKs.

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.

O Logging recomenda garantir que todas as chaves estejam configuradas corretamente e sempre disponíveis.

Perda de recuperação de desastres

Se houver falhas críticas no armazenamento principal do Cloud Logging, o Logging espelha os dados de registro em arquivos de recuperação de desastres. Quando CMEK está ativada 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, no caso de um desastre de armazenamento, o Cloud Logging pode não conseguir recuperar registros de recursos com uma CMEK que não está configurada corretamente.

Restrições de suporte

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

Desempenho de consulta degradado

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

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

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

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, você precisa usar uma chave cuja região corresponda ao escopo regional dos seus dados. Não é possível configurar a CMEK para buckets de registros 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 saber como solucionar erros de configuração de CMEK, consulte Resolver problemas de CMEK e erros de configuração da organização.