Criptografar dados usando chaves de criptografia gerenciadas pelo cliente (CMEK)

Nesta página, descrevemos como criptografar dados armazenados na IA antilavagem de dinheiro com chaves de criptografia gerenciadas pelo cliente (CMEK).

Visão geral

Todos os dados do cliente em uma instância da IA antilavagem de dinheiro são criptografados em repouso usando uma chave CMEK. Você gerencia a chave no Cloud Key Management Service (Cloud KMS), e você controla o acesso à chave usando o Identity and Access Management. Se você desativar temporariamente ou destruir permanentemente a chave CMEK, os dados criptografados com ela não poderão ser acessados.

A IA antilavagem de dinheiro só dá suporte a CMEK usando Cloud KMS: Ele não é compatível com o Google Criptografia padrão.

A CMEK oferece controle sobre mais aspectos do ciclo de vida e gerenciamento dos mas também tem custos adicionais para o serviço do Cloud KMS.

O Cloud KMS pode ser executado no mesmo projeto do Google Cloud IA antilavagem de dinheiro ou em um projeto separado em que você gerencia as chaves de modo centralizado para vários projetos.

A configuração de criptografia é definida quando você cria uma instância. Após a criação de uma instância, não é possível atribua outra chave do Cloud KMS. Ainda é possível girar a chave.

Para mais informações sobre a CMEK em geral, consulte Documentação do Cloud KMS.

Níveis de proteção

O Cloud KMS permite escolher entre vários níveis de proteção diferentes, incluindo:

  • Chaves de software
  • Módulos de segurança de hardware (HSMs) usando o Cloud HSM

Leia como configurar CMEK na IA antilavagem de dinheiro. Nem todas estão disponíveis em todas as regiões. A IA antilavagem de dinheiro não oferece suporte a chaves de criptografia fornecidas pelo cliente (CSEK) ou ao Cloud External Key Manager.

Dados do cliente

Todos os dados do cliente processados pela A IA antilavagem de dinheiro é criptografada em repouso usando a chave CMEK especificada no Instance pai correspondente recurso. Isso inclui todos os dados do cliente associados à IA antilavagem de dinheiro como conjuntos de dados, configurações de mecanismos, modelos e muito mais. Todas as contas temporárias e armazenamento permanente de Dados do Cliente, incluindo cópias de entradas e saídas; atributos de ML gerados, hiperparâmetros de modelo, pesos de modelo e previsão são criptografados com a chave CMEK da instância correspondente.

Consulte os termos específicos do serviço para a definição de dados do cliente, que não podem incluir identificadores de recursos, atributos ou outros rótulos de dados.

Criptografar dados de entrada e saída

A configuração da criptografia da IA antilavagem de dinheiro em uma instância é usada apenas para recursos e dados de IA antilavagem de dinheiro. IA antilavagem de dinheiro não gerencia a criptografia dos dados de entrada ou saída no Google Cloud projeto. Se você quiser que esses dados sejam criptografados com CMEK, será necessário configurar uma chave do Cloud KMS que corresponda ao nível de proteção de chaves escolhido, configurado no conjunto de dados do BigQuery. Também é possível reutilizar a mesma chave usada pela IA antilavagem de dinheiro.

Leia mais sobre criptografia no BigQuery.

Rotação de chaves

A rotação periódica e automática das chaves é uma prática de segurança recomendada. Com a CMEK, você controla a rotação de chaves. Quando você faz a rotação de uma chave, criptografados com versões de chave anteriores não são automaticamente recriptografados com os a nova versão da chave.

Um único recurso de IA antilavagem de dinheiro pode ser armazenado internamente como vários unidades. Se, durante o ciclo de vida de um recurso de IA antilavagem de dinheiro, a chave for rotacionada, nem todas as unidades poderão ser criptografadas com a mesma versão de chave.

Se você alternar uma chave, a IA antilavagem de dinheiro não poderá forçar uma ou para determinar se versões de chave mais antigas podem ser excluídas.

Leia mais sobre a rotação de chaves com o Cloud KMS.

Como criar uma chave e conceder permissões

As instruções a seguir explicam como criar uma chave para uma instância e conceder para criptografar e descriptografar os dados da instância com a chave. Você pode usar uma chave criada diretamente no Cloud KMS ou em uma chave gerenciada externamente ser disponibilizado com o Cloud External Key Manager.

  1. No projeto do Google Cloud em que você quer gerenciar suas chaves:

    1. Ative a API Cloud KMS.

    2. Crie um keyring usando o projects.locations.keyRings.create . O local do keyring do Cloud KMS devem corresponder ao local de a instância criptografada.

      REST

      Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

      • KMS_PROJECT_ID: o projeto do Google Cloud ID do projeto que contém o keyring
      • LOCATION: a localização do keyring; use uma das regiões com suporte
        Mostrar locais
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
      • KEY_RING_ID: um identificador definido pelo usuário para o keyring

      Para enviar a solicitação, escolha uma destas opções:

      curl

      Execute o seguinte comando:

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d "" \
      "https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING_ID"

      PowerShell

      Execute o seguinte comando:

      $cred = gcloud auth print-access-token
      $headers = @{ "Authorization" = "Bearer $cred" }

      Invoke-WebRequest `
      -Method POST `
      -Headers $headers `
      -Uri "https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING_ID" | Select-Object -Expand Content

      Você receberá uma resposta JSON semelhante a esta:

      {
        "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID",
        "createTime": "2023-03-14T15:52:55.358979323Z"
      }
      

      gcloud

      Antes de usar os dados do comando abaixo, faça estas substituições:

      • LOCATION: a localização do keyring; use uma das regiões com suporte
        Mostrar locais
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
      • KEY_RING_ID: um identificador definido pelo usuário para o keyring

      Execute o seguinte comando:

      Linux, macOS ou Cloud Shell

      gcloud kms keyrings create KEY_RING_ID \
        --location LOCATION
      

      Windows (PowerShell)

      gcloud kms keyrings create KEY_RING_ID `
        --location LOCATION
      

      Windows (cmd.exe)

      .
      gcloud kms keyrings create KEY_RING_ID ^
        --location LOCATION
      
      Você vai receber uma resposta vazia:
      $

    3. Crie uma chave usando projects.locations.keyRings.cryptoKeys .

      REST

      Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

      • KMS_PROJECT_ID: o projeto do Google Cloud ID do projeto que contém o keyring
      • LOCATION: a localização do keyring; use uma das regiões com suporte
        Mostrar locais
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
      • KEY_RING_ID: o identificador definido pelo usuário para o keyring
      • KEY_ID: um identificador definido pelo usuário para a chave.

      Corpo JSON da solicitação:

      {
        "purpose": "ENCRYPT_DECRYPT"
      }
      

      Para enviar a solicitação, escolha uma destas opções:

      curl

      Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

      cat > request.json << 'EOF'
      {
        "purpose": "ENCRYPT_DECRYPT"
      }
      EOF

      Depois execute o comando a seguir para enviar a solicitação REST:

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
      "https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys?crypto_key_id=KEY_ID"

      PowerShell

      Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

      @'
      {
        "purpose": "ENCRYPT_DECRYPT"
      }
      '@  | Out-File -FilePath request.json -Encoding utf8

      Depois execute o comando a seguir para enviar a solicitação REST:

      $cred = gcloud auth print-access-token
      $headers = @{ "Authorization" = "Bearer $cred" }

      Invoke-WebRequest `
      -Method POST `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -InFile request.json `
      -Uri "https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys?crypto_key_id=KEY_ID" | Select-Object -Expand Content

      Você receberá uma resposta JSON semelhante a esta:

      {
        "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID",
        "primary": {
          "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID/cryptoKeyVersions/1",
          "state": "ENABLED",
          "createTime": "2023-03-14T15:52:55.358979323Z",
          "protectionLevel": "SOFTWARE",
          "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION",
          "generateTime": "2023-03-14T15:52:55.358979323Z"
        },
        "purpose": "ENCRYPT_DECRYPT",
        "createTime": "2023-03-14T15:52:55.358979323Z",
        "versionTemplate": {
          "protectionLevel": "SOFTWARE",
          "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION"
        },
        "destroyScheduledDuration": "86400s"
      }
      

      gcloud

      Antes de usar os dados do comando abaixo, faça estas substituições:

      • LOCATION: a localização do keyring; use uma das regiões com suporte
        Mostrar locais
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
      • KEY_RING_ID: o identificador definido pelo usuário para o keyring
      • KEY_ID: um identificador definido pelo usuário para a chave.

      Execute o seguinte comando:

      Linux, macOS ou Cloud Shell

      gcloud kms keys create KEY_ID \
        --keyring KEY_RING_ID \
        --location LOCATION \
        --purpose "encryption"
      

      Windows (PowerShell)

      gcloud kms keys create KEY_ID `
        --keyring KEY_RING_ID `
        --location LOCATION `
        --purpose "encryption"
      

      Windows (cmd.exe)

      .
      gcloud kms keys create KEY_ID ^
        --keyring KEY_RING_ID ^
        --location LOCATION ^
        --purpose "encryption"
      
      Você vai receber uma resposta vazia:
      $

  2. Se você não criou uma instância de IA antilavagem de dinheiro no projeto de IA antilavagem de dinheiro, e o serviço de IA antilavagem de dinheiro conta ainda não existe. Crie a conta de serviço.

    Antes de usar os dados do comando abaixo, faça estas substituições:

    • PROJECT_ID: o projeto do Google Cloud ID do projeto em que a IA antilavagem de dinheiro está em execução

    Execute o seguinte comando:

    Linux, macOS ou Cloud Shell

    gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID
    

    Windows (PowerShell)

    gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID
    

    Windows (cmd.exe)

    gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID
    

    Você receberá uma resposta semelhante a esta:

    Service identity created: service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com

  3. Conceda Papel do IAM para criptografador/descriptografador de CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) para a IA antilavagem de dinheiro conta de serviço. Conceda essa permissão na chave que você criou.

    Antes de usar os dados do comando abaixo, faça estas substituições:

    • PROJECT_ID: o projeto do Google Cloud ID do projeto em que a IA antilavagem de dinheiro está em execução
    • KEY_ID: o identificador definido pelo usuário para a chave.
    • LOCATION: a localização do keyring; use uma das regiões com suporte
      Mostrar locais
      • us-central1
      • us-east1
      • asia-south1
      • europe-west1
      • europe-west2
      • europe-west4
      • northamerica-northeast1
      • southamerica-east1
    • KEY_RING_ID: um identificador definido pelo usuário para o keyring
    • PROJECT_NUMBER: o Google Cloud número do projeto para o projeto em que a IA antilavagem de dinheiro está sendo executada

    Execute o seguinte comando:

    Linux, macOS ou Cloud Shell

    gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID \
      --location LOCATION --keyring=KEY_RING_ID \
      --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com \
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Windows (PowerShell)

    gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID `
      --location LOCATION --keyring=KEY_RING_ID `
      --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com `
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Windows (cmd.exe)

    gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID ^
      --location LOCATION --keyring=KEY_RING_ID ^
      --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com ^
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Você receberá uma resposta semelhante a esta:

    Updated IAM policy for key KEY_ID.
    bindings:
    - members:
      - serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com
      role: roles/cloudkms.cryptoKeyEncrypterDecrypter
    etag: BwYCq0Sq4Ho=
    version: 1
    

    Para mais informações sobre esse comando, consulte a documentação gcloud kms keys add-iam-policy-binding.

Agora é possível criar uma instância e especificar a chave a ser usada para criptografia.

Como remover o acesso

Há várias maneiras de remover o acesso à chave da instância criptografada pela CMEK:

Recomendamos que você revogue as permissões da IA antilavagem de dinheiro conta de serviço antes de desativar ou destruir uma chave. As mudanças nas permissões são propagadas em segundos, para que você possa observar os impactos da desativação ou destruir uma chave.

Ao desativar ou destruir a chave de criptografia de uma instância, você perde o capacidade de usar ou recuperar dados de clientes associados à instância. Todos os dados do cliente armazenados na instância se tornam inacessíveis, incluindo modelos, configurações do mecanismo, resultados de backtest e resultados de previsão. Usuários com qualquer O papel de leitor da IA antilavagem de dinheiro ainda pode ver campos, como o nome da instância ou os outros campos de recursos retornados por para recuperar recursos da IA antilavagem de dinheiro.

Qualquer operação que usa ou exporta dados do cliente, por exemplo, exportar Metadados backtestResults vão falhar.

Usuários com o papel de administrador de IA antilavagem de dinheiro ou Proprietário pode excluir a instância.

Políticas da organização de CMEK

A IA antilavagem de dinheiro não oferece suporte Políticas da organização de CMEK. No entanto, A IA antilavagem de dinheiro sempre exige o uso de CMEKs, independente constraints/gcp.restrictNonCmekServices política da organização.

Interação com o VPC-SC

Se você configurou a IA antilavagem de dinheiro dentro de um perímetro do VPC-SC, o A chave CMEK ainda precisa estar acessível para a conta de serviço. Se a chave não for dentro do mesmo perímetro do VPC-SC, há várias formas de fazer isso, incluindo:

  • Usar uma regra de saída para colocar o recurso na lista de permissões
  • Usar o peering do perímetro da VPC

A seguir