Ajude a moldar o futuro das operações de software e manifeste-se na pesquisa de estado de DevOps 1202.

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, consulte 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 no Google Cloud, inclusive no Cloud Logging Logs Router. Embora não seja possível usar o CMEK em 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 quando roteamento de registros para o Cloud Storage.

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}. É recomendável que você tenha o papel Gravador de configuração de registros, que contém essas permissões.

  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 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 do Cloud e um número atribuído aleatoriamente, do 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 informações sobre como identificar esses parâmetros, consulte 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 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 Cloud executando o Cloud KMS e substituindo 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 é disponibilizada.

  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 a função de criptografia/descriptografia necessária 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 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 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 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 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 a função de criptografia/descriptografia necessária ou se 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 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 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 a função de criptografia/descriptografia necessária ou se o acesso à chave for 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 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.

Como encaminhar registros para destinos compatíveis

Se você usa coletores de registros para rotear registros para um destino compatível, considere o seguinte:

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 do Cloud na organização do Google Cloud.

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

O 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 o roteamento de registros para o Cloud Storage.

Para impedir que entradas de registro sejam gravadas no armazenamento do Cloud Logging, é possível excluí-las. Para instruções, consulte 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 provavelmente será afetada e poderá ocorrer perda de dados. Os dados nesses arquivos de recuperação de desastres temporários protegidos pelo CMEK e arquivos temporários usados para rotear registros 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.

Os registros de roteamento para o Cloud Storage também podem ser afetados porque o roteador de registros 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 ao projeto do Cloud 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ços

Para detalhes sobre os limites de uso do Logging, consulte Cotas e limites. Para detalhes sobre os custos que podem ser incorridos, consulte 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:

    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 do CMEK para o Cloud Logging para seu projeto selecionado do Cloud.

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 especificada do Cloud KMS. Siga as instruções do erro ou desta documentação para conceder a permissão adequada do 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 destruído. 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.