Como ativar chaves de criptografia gerenciadas pelo cliente para o roteador de registros

Nesta página, mostramos como ativar chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) para o Roteador de registros no Cloud Logging para atender às suas necessidades de conformidade. Em vez de o Google gerenciar as chaves de criptografia que protegem seus dados, você cria, controla e gerencia chaves de criptografia no Cloud Key Management Service.

Para um resumo das suas opções de criptografia, acesse Criptografia em repouso.

O CMEK para o roteador de registros

O CMEK permite controlar as chaves usadas para criptografar dados em repouso. É possível usá-lo para atender aos seguintes requisitos da sua organização do Google Cloud:

  • Compliance e controle interno: o CMEK pode ser usado para controlar dados confidenciais ou regulamentados que você armazena nos produtos do Google Cloud. Esse controle geralmente é um elemento documentado dos procedimentos internos de conformidade. pode ser divulgado aos reguladores e é difícil de mudar.

  • Criptografia avançada: sua organização pode ter requisitos de criptografia avançados (por exemplo, exclusão rápida de chave) que não são fornecidos pela nossa criptografia padrão em repouso. O CMEK fornece um caminho para atender a esses requisitos por meio de uma integração com o Cloud KMS.

  • Requisitos regulatórios: talvez sua organização precise controlar material confidencial devido a regulamentações governamentais (por exemplo, EAR).

A criptografia em repouso já é fornecida nos serviços do Google Cloud, inclusive no Roteador de registros. Embora o uso de CMEK nos registros armazenados no Cloud Logging não seja possível no momento, essas chaves de criptografia podem ser usadas para proteger os arquivos temporários de recuperação de desastres utilizados pelo roteador de registros e os arquivos temporários utilizados durante as exportações para o Cloud Storage. Para mais detalhes, acesse Limitações.

Para uma descrição do roteador de registros, acesse a Visão geral.

Primeiros passos

  1. Crie ou identifique o projeto do Google Cloud em que você quer executar o Cloud KMS.
  2. Ative a API Cloud KMS para o projeto do Google Cloud que executa o Cloud KMS.
  3. Crie um keyring e chaves para o projeto do Google Cloud que executa o Cloud KMS.

    O escopo regional das chaves deve corresponder ao escopo regional dos seus dados. Os locais do Cloud KMS listam as regiões disponíveis.

  4. Identifique os parâmetros obrigatórios abaixo; nas amostras desta página, a seguinte convenção é usada 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 e por um número atribuído aleatoriamente, do projeto 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 identificar esses parâmetros, acesse Como identificar projetos e Como conseguir o código da sua organização.

Ativar o CMEK para uma organização

Depois de concluir as etapas de primeiros passos, siga estas instruções para ativar o CMEK na sua organização do Google Cloud.

Conceder permissões de criptografia e descriptografia

Determine o ID da conta de serviço apropriado e conceda permissão à conta de serviço para usar sua chave do Cloud KMS.

Determinar o ID da conta de serviço

API REST

  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 o serviceAccountId associado à organização do Google Cloud que você quer ativar o CMEK:

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

gcloud

Para o serviceAccountId associado à organização do Google Cloud que você quer ativar o CMEK, execute o seguinte comando gcloud:

gcloud alpha logging cmek-settings describe --organization=[ORGANIZATION_ID]

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

Atribuir o papel criptografador/descriptografador

Para usar o CMEK, atribua à conta de serviço permissão para usar seu Cloud KMS atribuindo a função Cloud KMS CryptoKey Encrypter/Decrypter à conta de serviço:

API REST

  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:

    {
      "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]

Substitua [KMS_PROJECT_ID] pelo ID do projeto do Google Cloud que está executando o Cloud KMS, e substitua [KMS_KEY_LOCATION], [KMS_KEY_RING], [KMS_KEY_RING] e [KMS_KEY] pelo local, pelo keyring e pelos nomes de chaves da sua 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 no painel da janela à direita 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

Atualize as configurações do CMEK para a organização do Google Cloud com um nome de chave do Cloud KMS para ativar o recurso para sua organização.

Essas atualizações falharão se [KMS_KEY_NAME] for inválido, a conta de serviço associada não tiver o papel necessário de criptografia/descriptografia ou o acesso à chave for desativado.

API REST

  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

Execute o comando do gcloud a seguir:

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

Verificar a ativação principal

Atualize as configurações do CMEK para a organização do Google Cloud com um nome de chave do Cloud KMS para verificar se o CMEK está ativado para sua organização.

API REST

  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 as configurações do CMEK associadas à organização do Google Cloud para as quais você quer verificar a ativação principal. Se kms_key_name for preenchido, o CMEK será ativado para sua organização:

     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

Execute o comando gcloud a seguir para as configurações do CMEK associadas à organização do Google Cloud para as quais você quer verificar a ativação principal. Se kmsKeyName for preenchido, o CMEK será ativado para sua organização:

gcloud alpha logging cmek-settings describe --organization=[ORGANIZATION_ID]

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

Gerenciar sua chave do Cloud KMS

Veja a seguir como alterar, revogar o acesso ou excluir sua 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.

API REST

  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

Execute o comando do gcloud a seguir:

gcloud alpha logging cmek-settings update \
    --organization=[ORGANIZATION_ID]
    --kms-key-name=[NEW_KMS_KEY_NAME]

Essa atualização falhará se [KMS_KEY_NAME] for inválido, a conta de serviço associada não tiver o papel necessário de criptografia/descriptografia ou o acesso à chave for desativado.

Revogar acesso à chave do Cloud KMS

Para revogar o acesso do Logging à chave do Cloud KMS a qualquer momento, remova a permissão do Cloud IAM 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.

API REST

  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

Execute o comando do gcloud a seguir:

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

API REST

  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

Execute o seguinte comando gcloud para atualizar o serviceAccountId associado à organização que você quer desativar o CMEK:

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

Essa atualização falhará se [KMS_KEY_NAME] for inválido, a conta de serviço associada não tiver o papel necessário de criptografia/descriptografia ou o acesso à chave for desativado.

Para instruções sobre como destruir sua chave, acesse 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 gira. 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.

CMEK para exportações

Se você usar coletores de registros para exportar registros para outro destino, deverá configurar corretamente o CMEK para proteger os dados armazenados nesse destino.

O Cloud Storage aceita CMEK para exportações de registros se o destino for criptografado pelo CMEK. Para detalhes, acesse Como usar chaves de criptografia gerenciadas pelo cliente.

Os outros dois destinos do coletor do Logging (BigQuery e Pub/Sub) ainda não são compatíveis com o uso de CMEK para proteger dados exportados pelo Cloud Logging.

Limitações

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

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

No momento, o CMEK para o roteador de registros só pode ser configurado para organizações do Google Cloud. Depois de configurado, ele se aplica a todos os projetos e pastas na organização do Google Cloud.

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

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

Para impedir que entradas de registro sejam gravadas no armazenamento do Cloud Logging, é possível excluí-las. Para instruções, acesse Como usar consultas de exclusão.

Indisponibilidade do arquivo de recuperação de desastres

Se a geração de registros perder o acesso à chave do Cloud KMS, a experiência do usuário poderá sofrer uma significativa perda de dados. Os dados nesses arquivos de recuperação de desastres temporários protegidos pelo CMEK e arquivos temporários usados para exportações para o Cloud Storage não podem mais ser acessados.

Uma chave do Cloud KMS é considerada disponível e acessível pelo Logging se:

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

Se a chave do Cloud KMS ficar indisponível, o Roteador de registros não poderá gravar arquivos de recuperação de desastres temporários. Os arquivos de recuperação de desastres não estão disponíveis para os dados processados durante esse período.

As exportações para o Cloud Storage também podem ser afetadas porque o Roteador de registros não consegue gravar arquivos temporários necessários para facilitar a exportação. Se for encontrado um erro ao criptografar ou descriptografar dados, uma notificação será enviada ao projeto que contém a chave do Cloud KMS.

Disponibilidade da biblioteca de cliente

As bibliotecas de cliente de geração de registros não suportam comandos para configurar o CMEK.

Preço

Para detalhes sobre os limites de uso do Logging, acesse Cotas e limites. Para detalhes sobre os custos que podem ser incorridos, acesse Preços.

Resolver problemas de configuração

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

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:

    Acessar o Console do Google Cloud

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

    O código do projeto pode ser identificado por meio do seguinte comando gcloud:

    gcloud alpha logging cmek-settings describe --organization=[ORGANIZATION_ID]
    
    kmsKeyName: projects/[KMS_PROJECT_ID]/locations/[LOCATION]/keyRings/[KEYRING]/cryptoKeys/[KEY]
    serviceAccountId: [SERVICE_ACCOUNT_ID]@gcp-sa-logging.iam.gserviceaccount.com
    

    O nome completo da chave do Cloud KMS na saída do comando contém o código do projeto no campo kmsKeyName.

  3. Selecione a guia Atividade no Console do Cloud.

  4. Verifique as notificações de Erro de configuração de CMEK do Stackdriver Logging do Cloud Logging para o projeto selecionado.

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 não tem permissão suficiente do Cloud IAM para operar na chave especificada do Cloud KMS. Siga as instruções do erro ou desta documentação para conceder a permissão adequada do Cloud IAM.
A chave criptográfica está desativada O Cloud KMS especificado foi desativado. Siga as instruções no erro para reativar a chave.
A chave criptográfica foi destruída O Cloud KMS especificado foi desativado. Siga as instruções no erro ou nesta documentação para configurar a criptografia do CMEK com uma chave diferente.

Para corrigir o problema, siga as etapas descritas na mensagem de notificação do erro.

Verificar a usabilidade de chaves

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

    gcloud kms keys list 
--location=[KMS_KEY_LOCATION]
--keyring=[KMS_KEY_RING]

NAME    PURPOSE   ALGORITHM   PROTECTION_LEVEL  LABELS  PRIMARY_ID  PRIMARY_STATE
<var>[KMS_KEY_NAME]</var>  ENCRYPT_DECRYPT  GOOGLE_SYMMETRIC_ENCRYPTION  SOFTWARE  1  ENABLED

Verifique se a CryptoKey do Cloud KMS está listada na saída do comando como ativada 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; para instruções, consulte as seções acima.

Verificar a configuração das permissões

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

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

    gcloud kms keys get-iam-policy [KMS_KEY_NAME]
   

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