Proteja os dados com chaves do Cloud KMS

Nesta página, descrevemos como configurar e gerenciar 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.

Visão geral

Por padrão, o Cloud Logging criptografa o conteúdo do cliente armazenado em repouso. O Logging gerencia e gerencia essa criptografia padrão para você sem nenhuma ação extra da sua parte.

Primeiro, os dados ingeridos pelo Logging são criptografados por meio de uma chave de criptografia de dados. Em seguida, as chaves de criptografia de dados são criptografadas com chaves de criptografia de chaves, conhecidas como criptografia de envelope. As chaves de criptografia de chaves não criptografam diretamente seus dados, mas são usadas para criptografar as chaves de criptografia de dados que o Google usa para criptografar seus dados. O acesso aos dados de registro requer acesso a essas chaves de criptografia de chaves, que o Google gerencia por padrão.

Se você quiser controlar a criptografia, use as chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) para o roteador de registros. Em vez de o Google gerenciar as chaves de criptografia de chaves que protegem seus dados, você controla e gerencia as chaves de criptografia de chaves no Cloud KMS. Pode ser uma chave simétrica, uma chave do Cloud HSM ou uma chave do Cloud External Key Manager.

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.

É possível usar CMEK para atender aos seguintes requisitos para 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 costuma ser um elemento documentado de procedimentos de conformidade internos; Pode ser divulgado aos reguladores e difícil de mudar.

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

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

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

Primeiros passos

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

    Verifique se a política de gerenciamento de identidade e acesso da organização do Google 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ção de registros, que contém as permissões necessárias.

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

  3. 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 restritas a uma região, é recomendável usar uma chave com uma região que corresponda ao escopo regional dos seus dados.

  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 do Cloud e um número atribuído aleatoriamente, o projeto do Cloud que executa o 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 mais informações sobre como identificar esses parâmetros, consulte Como identificar projetos e Como conseguir o ID 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 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

  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 logging cmek-settings describe --organization=ORGANIZATION_ID

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

Atribuir o papel criptografador/descriptografador

Para usar CMEK, conceda a permissão à conta de serviço para usar seu Cloud KMS atribuindo o papel Cloud KMS CryptoKey Encrypter/Decrypter à 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.
  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 Cloud que está executando o Cloud KMS e substitua KMS_KEY_LOCATION, KMS_KEY_RING, KMS_KEY_RING e KMS_KEY pelo local. , keyring e 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 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 tem o papel de criptografia/descriptografia necessário ou o acesso à chave está desativado.

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

Execute o comando gcloud a seguir:

gcloud 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

  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, a CMEK será ativada 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 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

  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 gcloud a seguir:

gcloud 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, se a conta de serviço associada não tiver o papel de criptografia/descriptografia necessário ou se o acesso à chave estiver 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 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

  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

  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 logging cmek-settings update --organization=ORGANIZATION_ID --clear-kms-key

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

Para instruções sobre como destruir sua 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 temporários de recuperação de desastres quando a chave do Cloud KMS associada à organização do Google Cloud. 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 parceiro de gerenciamento de chaves externo.

Se uma chave com gerenciamento externo 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 de CMEK para o roteador de registros.

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

Atualmente, o CMEK para o roteador de registro só pode ser configurado para organizações do Google Cloud. Depois de configurado, ele se aplica a todos os projetos e pastas do Cloud 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 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 evitar que as entradas de registro sejam gravadas no armazenamento do Cloud Logging, é possível excluí-las. Para ver instruções, leia Como usar consultas de exclusão.

Indisponibilidade do arquivo de recuperação de desastres

Se o Logging perder o acesso à chave do Cloud KMS, a experiência do usuário poderá sofrer significativamente e poderá ocorrer perda de dados. Os dados nesses arquivos temporários de recuperação de desastres protegidos por CMEK e os arquivos temporários usados para registros de roteamento no 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 de serviço do Logging tem permissões de criptografia e descriptografia na chave.

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

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 um erro for encontrado ao criptografar ou descriptografar dados, uma notificação será enviada para o projeto do Cloud que contém a chave do Cloud KMS.

Disponibilidade da biblioteca de cliente

As bibliotecas de cliente do Logging não são compatíveis com comandos para configurar CMEK.

Cotas

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

Preços

Para detalhes sobre os custos que podem ser cobrados, consulte Preços do Cloud Logging.

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:

    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:

    gcloud 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 da CMEK do Stackdriver Logging para o projeto do Cloud 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 do Cloud não tem permissões de IAM suficientes para operar na chave do Cloud KMS especificada. Siga as instruções no erro ou nesta documentação 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 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 IAM para a chave configurada.

Para listar a política do 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 do IAM Cloud KMS CryptoKey Encrypter/Decrypter.