Gerenciar as chaves que protegem os dados do roteador de registros

Nesta página, você verá como configurar e gerenciar chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) para o roteador de registros a fim de atender às necessidades de conformidade da sua organização.

A CMEK para o roteador de registros é configurada no nível da organização do Google Cloud. Ela se aplica a todas pastas e projetos do Cloud contidos na organização do Google Cloud.

Visão geral

Por padrão, o Cloud Logging criptografa o conteúdo do cliente armazenado em repouso. Os dados ingeridos pelo Logging são criptografados por 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 de chaves que protegem seus dados, você pode configurar as CMEKs para controlar e gerenciar sua própria criptografia.

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

Embora não seja possível usar a CMEK em registros armazenados no Cloud Logging, é possível usá-la para proteger os arquivos temporários de recuperação de desastres usados pelo roteador de registros e os arquivos temporários usados ao rotear registros para o Cloud Storage.

Pré-requisitos

Para começar a ativar a CMEK para o roteador de registros, siga estas etapas:

  1. Instale e inicialize o SDK do Cloud..

    Este guia fornece instruções usando a ferramenta de linha de comando gcloud, que é instalada usando o SDK do Cloud.

  2. Identifique a organização para a qual você quer ativar a CMEK.

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

    Verifique se a organização do Google Cloud que contém o projeto do Cloud concede a você um papel do IAM com as permissões logging.cmekSettings.{get,update}. Recomendamos que você tenha o papel de gravador de configurações de registros, que contém as permissões necessárias.

  4. Ative a API Cloud KMS para o projeto do Cloud que executa o Cloud KMS.

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

    O roteador de registros permite usar uma chave de qualquer região porque uma única organização pode ter dados roteados para várias regiões. Se todos, ou a maioria, dos dados na organização estiverem restritos a uma região, recomendamos o uso de uma chave com uma região que corresponda ao escopo regional dos seus dados.

  6. Identifique os parâmetros obrigatórios abaixo. Nas amostras desta página, as seguintes variáveis são usadas para indicar metadados de recursos do Google Cloud:

    • ORGANIZATION_ID é o identificador numérico exclusivo da organização do Google Cloud em que você está habilitando as CMEK.
    • KMS_PROJECT_ID é o identificador alfanumérico exclusivo, composto pelo nome do projeto do Cloud e por um número atribuído aleatoriamente, do projeto do Cloud em execução no Cloud KMS.
    • KMS_KEY_NAME é o nome do recurso 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 Como identificar projetos e Como conseguir o ID da organização.

Ativar o CMEK para uma organização

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 configurar CMEK no nível da organização, você precisa do ID da conta de serviço associada à organização para a qual a CMEK se aplicará. Execute este comando:

API

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.

  2. Emita uma solicitação GET para receber o ID da conta de serviço associado à organização do Google Cloud em que a CMEK será ativada:

     curl -H "Authorization: Bearer AUTH_TOKEN" \
        https://logging.googleapis.com/v2/organizations/ORGANIZATION_ID/cmekSettings
    

gcloud

gcloud logging cmek-settings describe --organization=ORGANIZATION_ID

A execução desse comando gera uma conta de serviço para a organização, se ainda não houver uma, e retorna o ID no campo serviceAccountId:

serviceAccountId: "SERVICE_ACCOUNT_ID@gcp-sa-logging.iam.gserviceaccount.com"

Você precisa executar esse processo de provisionamento apenas uma vez por recurso. Executar esse comando várias vezes retorna o mesmo valor para o campo serviceAccountId.

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:

API

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth. Para ver instruções, consulte Autenticação de APIs.
  2. Crie um arquivo JSON com as informações a seguir:

    {
      "policy": {
        "bindings": {
          "role": "roles/cloudkms.cryptoKeyEncrypterDecrypter",
          "members": "serviceAccount:SERVICE_ACCOUNT_ID@gcp-sa-logging.iam.gserviceaccount.com"
        },
      }
    }
  3. Use cURL para chamar a API Cloud KMS com uma solicitação POST setIamPolicy:

    curl -X POST --data-binary @JSON_FILE_NAME.json \
    -H "Authorization: Bearer OAUTH2_TOKEN" \
    -H "Content-Type: application/json" \
    "https://cloudkms.googleapis.com/v1/KEY_RESOURCE:setIamPolicy"

gcloud

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

Defina as variáveis no comando da seguinte maneira:

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

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

    • Substitua KMS_PROJECT_ID pelo ID do projeto do Cloud que está executando o Cloud KMS.
    • Substitua KMS_KEY_LOCATION pela região da chave do Cloud KMS.
    • Substitua KMS_KEY_RING pelo nome do keyring do Cloud KMS.
    • Substitua KMS_KEY pelo nome da chave do Cloud KMS.

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 a chave do Cloud KMS

Para concluir a ativação da CMEK, adicione o nome da chave do Cloud KMS à sua organização. Execute este comando:

API

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.

  2. Crie um arquivo JSON com as informações a seguir:

    {
        "kms_key_name": "KMS_KEY_NAME"
    }
    
  3. Emitir uma solicitação PATCH para atualizar kms_key_name para ser associado à organização do Google Cloud que você quer ativar o CMEK:

    curl -X PATCH \
        -H "Authorization: Bearer AUTH_TOKEN \
        -H "Content-Type: application/json" \
        --data-binary @JSON_FILE_NAME
        https://logging.googleapis.com/v2/organizations/ORGANIZATION_ID/cmekSettings?update_mask="kms_key_name"
    

gcloud

gcloud logging cmek-settings update \
    --organization=ORGANIZATION_ID --kms-key-name=KMS_KEY_NAME

Verificar a ativação principal

Para verificar se você ativou a CMEK para sua organização, execute o seguinte comando:

API

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.

  2. Emita uma solicitação GET para receber as configurações da CMEK associadas à organização do Google Cloud para as quais você quer verificar a ativação principal:

     curl -H "Authorization: Bearer AUTH_TOKEN" \
        https://logging.googleapis.com/v2/organizations/ORGANIZATION_ID/cmekSettings
    
    {
        "kmsKeyName": "KMS_KEY_NAME",
        "serviceAccountId": "SERVICE_ACCOUNT_ID@gcp-sa-logging.iam.gserviceaccount.com"
    }
    

gcloud

gcloud logging cmek-settings describe --organization=ORGANIZATION_ID

A execução desse comando retorna o nome da chave do Cloud KMS:

kmsKeyName: KMS_KEY_NAME
serviceAccountId: SERVICE_ACCOUNT_ID@gcp-sa-logging.iam.gserviceaccount.com

Se o campo kmsKeyName estiver preenchido, a CMEK será ativada para sua organização.

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 à sua organização, crie uma chave e atualize as configurações do CMEK para a organização com o novo nome de chave do Cloud KMS.

Execute este comando:

API

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.

  2. Crie um arquivo JSON com as informações a seguir:

    {
        "kms_key_name": "NEW_KMS_KEY_NAME"
    }
    
  3. Emitir uma solicitação PATCH para atualizar kms_key_name:

    curl -X PATCH \
        -H "Authorization: Bearer AUTH_TOKEN \
        -H "Content-Type: application/json" \
        --data-binary @JSON_FILE_NAME
        https://logging.googleapis.com/v2/organizations/ORGANIZATION_ID/cmekSettings?update_mask="kms_key_name"
    

gcloud

gcloud logging cmek-settings update \
    --organization=ORGANIZATION_ID
    --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.

Execute este comando:

API

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.

  2. Crie um arquivo JSON com as informações a seguir:

    revoke.json:
    {
      "policy": {
        "bindings": {
          "role": "roles/cloudkms.cryptoKeyEncrypterDecrypter",
          "members":
        },
      }
    }
    
  3. Emitir uma solicitação POST:

    curl -X POST --data-binary @revoke.json -H "Authorization: Bearer
    ${OAUTH_TOKEN}" -H "Content-Type: application/json"
    "https://cloudkms.googleapis.com/v1/{$KEY}:setIamPolicy"
    

gcloud

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

Desativar o CMEK para sua organização

Desativar a CMEK para sua organização remove a aplicação da política da CMEK apenas para operações futuras. As configurações aplicadas anteriormente permanecem intactas.

Para desativar a CMEK para sua organização, execute este comando:

API

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.

  2. Crie um arquivo JSON com as informações a seguir:

    {
        "kms_key_name": ""
    }
    
  3. Emitir uma solicitação PATCH para atualizar kms_key_name:

    curl -X PATCH \
        -H "Authorization: Bearer AUTH_TOKEN \
        -H "Content-Type: application/json" \
        --data-binary @JSON_FILE_NAME
        https://logging.googleapis.com/v2/organizations/ORGANIZATION_ID/cmekSettings?update_mask="kms_key_name"
    

gcloud

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

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

Impacto do rodízio de chaves do Cloud KMS

O roteador de registros 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 do Google Cloud é alternada. 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.

Encaminhar registros para destinos compatíveis

Se você usar coletores de registro para rotear registros para um destino compatível, considere os seguintes itens:

Considerações sobre chaves externas

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.

Se uma chave gerenciada externamente não estiver disponível, o Cloud Logging continuará tentando acessar a chave e armazenar em buffer os dados do registro de entrada por até uma hora. Depois de uma hora, se o Cloud Logging ainda não conseguir acessar a chave gerenciada externamente, o Cloud Logging começará a descartar os 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

Veja a seguir as limitações conhecidas da CMEK para o roteador de registros.

Apenas configuração no nível da organização

No momento, a CMEK para o roteador de registros só pode ser configurada para organizações do Google Cloud. Depois de configurada, a CMEK se propaga para todas as pastas e projetos do Cloud na organização do Google Cloud.

Não há suporte de CMEK para armazenamento do Cloud Logging

A CMEK não é compatível com registros armazenados no Cloud Logging. É possível usar a CMEK para proteger os arquivos temporários de recuperação de desastres usados pelo roteador de registros e os arquivos temporários usados durante o roteamento de registros para o Cloud Storage.

Para impedir que as entradas de registro sejam gravadas no armazenamento do Cloud Logging, crie coletores com filtros de exclusão.

Indisponibilidade do arquivo de recuperação de desastres

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 der serviço do Logging criptografou e descriptografou as permissões na chave.

Se o Logging perder acesso à chave do Cloud KMS, o Logging 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.

Os registros de roteamento para o Cloud Storage também podem ser afetados porque o roteador de registros não poderá 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 ao projeto do 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.

Cotas

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

Resolver problemas de configuração

As seções a seguir descrevem como encontrar e mitigar erros comuns de configuração do CMEK.

Conforme você configura a CMEK, o projeto do Cloud que contém a chave do Cloud KMS é notificado sobre problemas relacionados. Por exemplo, as atualizações falharão se KMS_KEY_NAME for inválido e se a conta de serviço associada não tiver o papel Criptografador/descriptografador de CryptoKey do Cloud Key Management Service necessário: ou se o acesso à chave estiver desativado.

Identificar erros de configuração

Para encontrar e visualizar os erros de configuração do CMEK, faça o seguinte:

  1. Navegue até o Console do Google Cloud:

    Ir para o Google Cloud Console

  2. Selecione o projeto do Cloud que contém a chave de criptografia.

    Para identificar o ID do projeto, execute o seguinte comando:

    gcloud logging cmek-settings describe --organization=ORGANIZATION_ID
    
    

    A execução desse comando retorna o resultado a seguir:

     kmsKeyName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEYRING/cryptoKeys/KEY
     serviceAccountId: SERVICE_ACCOUNT_ID@gcp-sa-logging.iam.gserviceaccount.com
     

    O valor o campo kmsKeyName inclui o ID do projeto da chave.

  3. Selecione a guia Atividade no Console do Cloud.

  4. Verifique as notificações de Erro de configuração da CMEK do Cloud Logging.

    Cada notificação de erro contém etapas que é possível seguir para minimizar o problema:

    Erro Recomendação
    Permissão de chave criptográfica negada A conta de serviço do Logging associada ao seu projeto do Cloud não tem permissões do IAM suficientes para operar na chave do Cloud KMS especificada. Siga as instruções no erro ou em Conceder permissão de criptografia/descriptografia para conceder a permissão adequada do IAM.
    A chave criptográfica está desativada A chave do Cloud KMS especificada foi desativada. Siga as instruções no erro para reativar a chave.
    A chave criptográfica foi destruída A chave do Cloud KMS especificada foi destruída. Siga as instruções no erro ou em Configurar a chave do Cloud KMS para configurar a criptografia da CMEK com uma chave diferente.

Verificar a usabilidade de chaves

Para verificar a usabilidade da chave, execute o seguinte comando para listar todas as chaves:

gcloud kms keys list \
--location=KMS_KEY_LOCATION \
--keyring=KMS_KEY_RING

Esse comando retorna informações sobre cada chave em formato tabular. A primeira linha de saída é uma lista de nomes de coluna:

NAME PURPOSE ...

Verifique se a chave do Cloud KMS está listada na saída do comando como ENABLED, e se a finalidade da chave é a criptografia simétrica: a coluna PURPOSE precisa conter ENCRYPT_DECRYPT e a coluna PRIMARY_STATE precisa conter ENABLED.

Se necessário, crie uma nova chave.

Verificar a configuração das permissões

As contas de serviço associadas às configurações da CMEK da organização precisam ter o papel Criptografador/Descriptografador de CryptoKey do Cloud KMS para a chave configurada.

Para listar a política do IAM da chave, execute o seguinte comando :

gcloud kms keys get-iam-policy KMS_KEY_NAME

Se necessário, adicione à conta de serviço que contém o papel Criptografador/Descriptografador de CryptoKey do Cloud KMS para a chave.