Configurar CMEK para o Cloud Logging

Neste documento, descrevemos como configurar e gerenciar chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) do Cloud Logging para atender às necessidades de compliance da sua organização. É possível definir a CMEK como uma configuração de recurso padrão para uma organização, uma pasta ou para ambas. Quando configurado, o Cloud Logging garante que todos os novos buckets de registro na organização ou na pasta sejam criptografados com uma chave gerenciada pelo cliente.

Visão geral

Por padrão, o Cloud Logging criptografa o conteúdo do cliente armazenado em repouso. Os dados armazenados em buckets de registros 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, em vez de o Google gerenciar as chaves de criptografia que protegem seus dados, é possível configurar a CMEK para controlar e gerenciar sua própria criptografia.

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

Quando você define a CMEK como uma configuração de recurso padrão para o Logging, os novos buckets de registro na organização ou na pasta são criptografados automaticamente com a chave configurada. No entanto, é possível alterar essa chave ou criar buckets de registros e especificar uma chave diferente. Para mais informações, consulte Configurar CMEK para buckets de registros.

Pré-requisitos

Para começar, 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

    Este guia fornece instruções para usar a Google Cloud CLI.

  3. Encontre os identificadores da organização ou pasta em que você quer ativar a CMEK:

    • ORGANIZATION_ID é o identificador numérico exclusivo da organização do Google Cloud em que você está ativando a CMEK. Esse valor não é necessário se você planeja configurar a CMEK apenas para uma pasta. Para informações sobre como conseguir esse identificador, consulte Como conseguir o ID da organização.
    • FOLDER_ID é o identificador numérico exclusivo da pasta do Google Cloud em que você está ativando a CMEK. Esse valor não é necessário se você planeja configurar a CMEK para uma organização. Para mais informações sobre o uso de pastas, consulte Como criar e gerenciar pastas.
  4. Para receber as permissões necessárias para criar chaves, peça ao administrador para conceder 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 como conceder papéis, consulte Gerenciar acesso.

    Também é possível receber as permissões necessárias com papéis personalizados ou outros papéis predefinidos.

  5. Verifique se você tem as seguintes permissões do Cloud Logging para a organização:

    • logging.settings.get
    • logging.settings.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.

    O Cloud Logging permite usar uma chave de qualquer região. No entanto, quando você cria um bucket de registros, o local do bucket de registros precisa corresponder ao local da chave. Para informações sobre regiões compatíveis, consulte:

    Se você definir a CMEK como uma configuração de recurso padrão para o Logging usando as etapas deste documento, os novos buckets de registro criados na organização ou na pasta serão configurados automaticamente para a CMEK. Além disso, como o local de um bucket de registros precisa corresponder ao local da chave, depois de configurar a CMEK como uma configuração de recurso padrão, não será possível criar buckets de registros na região global.

  8. Identifique os valores dos seguintes parâmetros do Cloud KMS:

    • 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. Para informações sobre como conseguir esse identificador, consulte Identificar projetos.
    • 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

Ativar CMEK para uma organização ou pasta

Depois de concluir os passos de pré-requisito, siga estas instruções para ativar a CMEK para sua organização do Google Cloud.

Determinar o ID da conta de serviço

Para determinar o ID da conta de serviço associado à organização ou pasta a que a CMEK será aplicada, execute o seguinte comando gcloud logging settings describe:

PASTA

 gcloud logging settings describe --folder=FOLDER_ID

ORGANIZAÇÃO

gcloud logging settings describe --organization=ORGANIZATION_ID

A execução do comando anterior gera uma conta de serviço para a organização ou pasta, quando ainda não houver uma, e retorna o ID no campo kmsServiceAccountId. Confira a seguir um exemplo de resposta ao comando anterior quando uma organização é especificada:

kmsServiceAccountId: cmek-p12345@gcp-sa-logging.iam.gserviceaccount.com
name: organizations/ORGANIZATION_ID/settings

Neste exemplo, o valor de SERVICE_ACCT_NAME é cmek-p12345.

Executar o processo de provisionamento apenas uma vez por recurso. Executar o comando describe várias vezes retorna o mesmo valor para o campo kmsServiceAccountId.

Se não for possível usar a Google Cloud CLI, execute o método getSettings da API Cloud Logging.

Atribuir o papel criptografador/descriptografador

Para usar a CMEK, 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:

gcloud

gcloud kms keys add-iam-policy-binding \
--project=KMS_PROJECT_ID \
--member serviceAccount: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 da seguinte maneira:

  • Substitua SERVICE_ACCT_NAME pelo valor serviceAccountId que você determinou na etapa anterior.

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

Console

  1. Abra o navegador de chaves do Cloud Key Management Service no Console do Google Cloud.
    Abrir o navegador de Chaves do Cloud KMS
  2. Clique no nome do keyring que contém a chave que você quer.

  3. Marque a caixa de seleção da chave.

    A guia Permissões fica disponível.

  4. Na caixa de diálogo Adicionar membros, especifique o endereço de e-mail da conta de serviço do Logging que você está concedendo acesso.

  5. Na lista suspensa Selecionar um papel, escolha Criptografador/Descriptografador do Cloud KMS CryptoKey.

  6. Clique em Add.

Configurar as políticas da organização

O Logging é compatível com políticas da organização que podem exigir proteção de CMEK e limitar quais CryptoKeys do Cloud KMS podem ser usadas para proteção de CMEK:

  • Quando logging.googleapis.com está na lista de serviços da política Deny para a restrição constraints/gcp.restrictNonCmekServices, o Logging se recusa a criar novos buckets definidos pelo usuário que não sejam protegidos pela CMEK. No entanto, essa restrição não impede que o Cloud Logging crie os buckets de registro _Required e _Default, que são gerados quando um projeto do Google Cloud é criado.

  • Quando constraints/gcp.restrictCmekCryptoKeyProjects é aplicado, o Logging cria recursos protegidos por CMEKs que são protegidos por uma CryptoKey a partir de um projeto, uma pasta ou uma organização permitida.

Para mais informações sobre a CMEK e as políticas da organização, consulte Políticas da organização da CMEK.

Quando houver uma política da organização que especifique uma restrição de CMEK, verifique se essas restrições são consistentes com as configurações de recursos padrão do Logging para uma organização ou pasta. Além disso, se você planeja modificar as configurações padrão de recursos, revise e, se necessário, atualize as políticas da organização antes de atualizá-las.

Para visualizar ou configurar políticas da organização, faça o seguinte:

  1. No console do Google Cloud, acesse a página Políticas da organização:

    Acessar Políticas da organização

    Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo IAM e administrador.

  2. Selecione a organização.
  3. Verifique e, se necessário, atualize as restrições específicas da CMEK.

    Para informações sobre como modificar uma política da organização, consulte Como criar e editar políticas.

Configurar o Cloud Logging com a chave do Cloud KMS

Para definir CMEK como uma configuração de recurso padrão para o Logging, execute o seguinte comando gcloud logging settings update:

PASTA

gcloud logging settings update \
    --folder=FOLDER_ID \
    --kms-location=KMS_KEY_LOCATION \
    --kms-key-name=KMS_KEY_NAME \
    --kms-keyring=KMS_KEY_RING \
    --kms-project=KMS_PROJECT_ID

O comando anterior atualiza as configurações de recurso padrão para armazenar informações sobre a chave do Cloud KMS. Verifique se o local de armazenamento padrão da pasta está definido como o valor de KMS_KEY_LOCATION. Se você não tiver definido o local de armazenamento padrão ou se o valor dele não corresponder ao valor de KMS_KEY_LOCATION, anexe o seguinte ao comando anterior:

--storage-location = KMS_KEY_LOCATION

A sinalização --storage-location permite definir ou atualizar o local de armazenamento padrão da pasta.

ORGANIZAÇÃO

gcloud logging settings update \
    --organization=ORGANIZATION_ID \
    --kms-location=KMS_KEY_LOCATION \
    --kms-key-name=KMS_KEY_NAME \
    --kms-keyring=KMS_KEY_RING \
    --kms-project=KMS_PROJECT_ID

O comando anterior atualiza as configurações de recurso padrão para armazenar informações sobre a chave do Cloud KMS. É preciso garantir que o local de armazenamento padrão da organização esteja definido como o valor de KMS_KEY_LOCATION. Se você não tiver definido o local de armazenamento padrão ou se o valor dele não corresponder ao valor de KMS_KEY_LOCATION, anexe o seguinte ao comando anterior:

--storage-location = KMS_KEY_LOCATION

A sinalização --storage-location permite definir ou atualizar o local de armazenamento padrão da organização.

Depois que a chave é aplicada, novos buckets de registro na organização ou na pasta são configurados para criptografar os dados em repouso usando essa chave. Também é possível alterar as chaves de buckets de registros individuais. Não é possível criar buckets de registro na região global porque é necessário usar uma chave cuja região corresponda ao escopo regional dos dados.

Se não for possível usar a Google Cloud CLI, execute o método updateSettings da API Cloud Logging.

Verificar a ativação principal

Para verificar se você ativou com êxito a CMEK para uma organização ou uma pasta, execute o seguinte comando gcloud logging settings describe:

PASTA

gcloud logging settings describe --folder=FOLDER_ID

ORGANIZAÇÃO

gcloud logging settings describe --organization=ORGANIZATION_ID

O comando anterior retorna o nome da chave do Cloud KMS:

kmsKeyName: KMS_KEY_NAME
kmsServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com

Se o campo kmsKeyName for preenchido, a CMEK será ativada para a organização ou pasta.

Encaminhar registros para destinos compatíveis

  • Os buckets de registro do Cloud Logging podem ser configurados para criptografar dados com CMEK. Quando você configura a CMEK como uma configuração de recurso padrão para uma organização ou pasta, os novos buckets de registro na organização ou na pasta usam automaticamente a CMEK. É possível alterar a chave desses buckets de registro e criar buckets de registro que usem uma chave KMS diferente da especificada pelas configurações de recurso padrão.

    Para informações sobre a CMEK aplicada a buckets de registros, incluindo como alterar chaves e limitações ao ativar a CMEK em um bucket de registros, consulte Configurar CMEK para buckets de registro.

  • O Cloud Storage é compatível com CMEK para roteamento de registros. Para instruções sobre como configurar a CMEK para o Cloud Storage, consulte Como usar chaves de criptografia gerenciadas pelo cliente.

    Se os dados forem perdidos devido à indisponibilidade de chaves ao rotear os dados de registros para o Cloud Storage, será possível copiar retroativamente os registros em massa para o Cloud Storage quando eles também estiverem armazenados em um bucket de registros. Veja mais detalhes em Copiar entradas de registro.

  • Por padrão, o BigQuery criptografa o conteúdo do cliente armazenado em repouso. Para mais detalhes, consulte Como proteger dados com chaves do Cloud Key Management Service.

  • Por padrão, o Pub/Sub criptografa o conteúdo do cliente armazenado em repouso. Para detalhes, consulte Como configurar a criptografia de mensagens.

Gerenciar sua chave do Cloud KMS

As seções a seguir explicam como alterar, revogar o acesso ou desativar a chave do Cloud KMS.

Alterar sua chave do Cloud KMS

Para alterar a chave do Cloud KMS associada a uma organização ou pasta, crie uma chave e atualize as configurações da CMEK com o novo nome da chave do Cloud KMS:

PASTA

gcloud logging settings update \
    --folder=FOLDER_ID
    --kms-key-name=NEW_KMS_KEY_NAME
    --kms-location=NEW_KMS_KEY_LOCATION \
    --kms-keyring=NEW_KMS_KEY_RING \
    --kms-project=NEW_KMS_PROJECT_ID

Verifique se o local de armazenamento padrão da pasta está definido como o valor de KMS_KEY_LOCATION. Se você não tiver definido o local de armazenamento padrão ou se o valor dele não corresponder ao valor de KMS_KEY_LOCATION, anexe o seguinte ao comando anterior:

--storage-location = NEW_KMS_KEY_LOCATION

ORGANIZAÇÃO

gcloud logging settings update \
    --organization=ORGANIZATION_ID
    --kms-key-name=NEW_KMS_KEY_NAME
    --kms-location=NEW_KMS_KEY_LOCATION \
    --kms-keyring=NEW_KMS_KEY_RING \
    --kms-project=NEW_KMS_PROJECT_ID

É preciso garantir que o local de armazenamento padrão da organização esteja definido como o valor de KMS_KEY_LOCATION. Se você não tiver definido o local de armazenamento padrão ou se o valor dele não corresponder ao valor de KMS_KEY_LOCATION, anexe o seguinte ao comando anterior:

--storage-location = NEW_KMS_KEY_LOCATION

Revogar acesso à chave do Cloud KMS

É possível revogar o acesso do Logging à chave do Cloud KMS removendo 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.

Para revogar o acesso do Logging à chave do Cloud KMS, execute o seguinte comando da Google Cloud CLI:

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

Desativar a CMEK

Desativar a CMEK para uma organização ou uma pasta remove a aplicação da política de CMEK apenas para operações futuras. Todas as configurações aplicadas anteriormente permanecem intactas.

Para desativar a CMEK em um recurso que a tenha configurado como uma configuração de recurso padrão, execute o seguinte comando da Google Cloud CLI:

PASTA

gcloud logging settings update --folder=FOLDER_ID --clear-kms-key

ORGANIZAÇÃO

gcloud logging settings update --organization=ORGANIZATION_ID --clear-kms-key

Para destruir a chave, consulte Como destruir e restaurar versões de chave.

Considerações sobre a rotação de chaves do Cloud KMS

O Cloud Logging não faz a rotação automática da chave de criptografia para arquivos de recuperação de desastres temporários quando a chave do Cloud KMS associada à organização ou pasta do Google Cloud rotaciona. Os arquivos de recuperação existentes continuam a usar a versão da chave com a qual foram criados. Novos arquivos de recuperação usam a versão atual da chave primária.

Limitações

As limitações a seguir são conhecidas quando você configura a CMEK como uma configuração de recurso padrão para o Logging.

Indisponibilidade do arquivo de recuperação de desastres

Uma chave do Cloud KMS é considerada disponível e acessível pelo Logging quando ambas as condições são verdadeiras:

  • A chave está ativada.
  • A conta der serviço do Logging criptografou e descriptografou as permissões na chave.

Se o Logging perder o acesso à chave do Cloud KMS, ele não poderá gravar arquivos de recuperação de desastres temporários e, para os usuários, as consultas deixarão de funcionar. O desempenho da consulta pode permanecer degradado mesmo após o acesso à chave ser restaurado.

O roteamento de registros para o Cloud Storage também pode ser afetado, porque o Logging não grava os arquivos temporários necessários para facilitar o roteamento. Se um erro for encontrado ao criptografar ou descriptografar dados, uma notificação será enviada ao projeto do Google Cloud que contém a chave do Cloud KMS.

Disponibilidade da biblioteca de cliente

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

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.

Quando a CMEK for definida como configuração de recurso padrão para uma organização ou uma pasta, se uma chave gerenciada externamente não estiver disponível, o Cloud Logging tentará acessar a chave continuamente. O Cloud Logging também armazena em buffer os dados de registro recebidos por até uma hora. Após uma hora, se o Cloud Logging ainda não conseguir acessar a chave gerenciada externamente, ele começará a descartar os dados.

Se a CMEK for aplicada a um bucket de registros e uma chave gerenciada externamente não estiver disponível, o Cloud Logging continuará armazenando registros em buckets de registros, mas os usuários não poderão acessar esses dados.

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

Limitações em buckets de registros

Para saber as limitações ao usar CMEK com buckets de registros, consulte Limitações.

Cotas

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

Resolver problemas de configuração

Saiba como solucionar erros de configuração de CMEK em Resolver problemas de CMEK e erros de configuração padrão.