Configurar CMEK para o Cloud Logging

Neste documento, descrevemos como configurar e gerenciar chaves de criptografia gerenciadas pelo cliente (CMEK) para o Cloud Logging para atender às necessidades de conformidade 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 registros 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 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, 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 CMEK, incluindo vantagens e limitações, consulte Chaves de criptografia gerenciadas pelo cliente.

Quando você configura CMEK como uma configuração de recurso padrão para o Logging, novos buckets de registro na organização ou pasta são automaticamente criptografados 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, acesse 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

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

  3. Encontre os identificadores da organização ou pasta para ativar a CMEK:

    • ORGANIZATION_ID é o identificador numérico exclusivo da organização do Google Cloud que você está ativando a CMEK. Esse valor não é necessário se você planeja configurar a CMEK para uma pasta. Para mais 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 será 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 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 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 chaves de qualquer região. No entanto, quando você cria um bucket de registros, o local dele 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 neste 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 definir CMEK como uma configuração de recurso padrão, não será possível criar buckets de registro na região global.

  8. Identifique valores para os 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 mais 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 a 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 existe, 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.

Execute 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 Adicionar.

Configurar as políticas da organização

O Logging oferece suporte a políticas da organização que podem exigir proteção de CMEK e pode limitar quais CryptoKeys do Cloud KMS podem ser usadas para proteção de CMEK:

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

  • Quando constraints/gcp.restrictCmekCryptoKeyProjects é aplicado, o Logging cria recursos protegidos pela CMEK protegidos por uma CryptoKey de um projeto, uma pasta ou uma organização permitida.

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

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

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

  1. No painel de navegação do console do Google Cloud, selecione IAM e administrador e, em seguida, Políticas da organização:

    Acesse Políticas da organização

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

    Para mais 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 a 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 padrão do recurso 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 desse local não corresponder ao valor de KMS_KEY_LOCATION, anexe o seguinte ao comando anterior:

--storage-location = KMS_KEY_LOCATION

A flag --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 padrão do recurso para armazenar informações sobre a chave do Cloud KMS. Verifique se o local de armazenamento padrão para a organização 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 desse local 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 registros na organização ou 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 registros na região global porque você precisa usar uma chave com uma região que corresponda ao escopo regional dos seus 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 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 registros do Cloud Logging podem ser configurados para criptografar dados com CMEKs. Quando você define a CMEK como uma configuração de recurso padrão para uma organização ou pasta, novos buckets de registro na organização ou pasta usam automaticamente a CMEK. É possível alterar a chave desses buckets de registros e criar buckets de registros que usam uma chave KMS diferente da especificada pelas configurações de recursos padrão.

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

  • 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 da chave ao rotear dados de registros para o Cloud Storage, será possível copiar de forma retroativa 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 de 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 desse local 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

Verifique se o local de armazenamento padrão para a organização 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 desse local 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

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

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. As configurações aplicadas anteriormente permanecem intactas.

Para desativar a CMEK em um recurso que tenha a CMEK configurada 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 alterna automaticamente a 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

Veja a seguir as limitações 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 as duas afirmações a seguir 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 temporários de recuperação de desastres e, para os usuários, as consultas pararã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 consegue gravar arquivos temporários necessários para facilitar o roteamento. Se for encontrado um erro ao criptografar ou descriptografar dados, uma notificação será enviada para o 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. Depois de 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 se 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 nos buckets de registros

Para conferir as limitações de uso da 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

Para saber como solucionar erros de configuração de CMEK, consulte Resolver problemas de CMEK e erros de configuração padrão.