Como usar chaves de criptografia gerenciadas pelo cliente (CMEK)

Por padrão, o Google Cloud automaticamente criptografa os dados quando em repouso por meio de chaves de criptografia gerenciadas pelo Google. Caso você precise atender a requisitos específicos de compliance e conformidade relacionados às chaves que protegem seus dados, use as chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) para os jobs de treinamento.

Leia mais sobre os benefícios específicos do uso de CMEK com o AI Platform Training na próxima seção deste guia. Para obter mais informações sobre CMEK em geral, como quando e por que ativar, consulte a documentação do Cloud Key Management Service .

Este guia descreve alguns benefícios do uso de CMEK para o AI Platform Training e mostra como configurar um job de treinamento para usar CMEK.

Como compreender CMEK para AI Platform Training

As seções a seguir descrevem informações básicas necessárias sobre CMEK para AI Platform Training antes de configurar CMEK para seus jobs de treinamento.

Benefícios de CMEK

Em geral, CMEK são mais úteis se você precisa de controle total sobre as chaves usadas para criptografar seus dados. Usando CMEK, você gerencia suas chaves no Cloud KMS. Por exemplo, é possível alternar ou desativar uma chave ou configurar uma programação de rotação usando a API Cloud KMS. Para obter mais informações sobre CMEK em geral, como quando e por que ativar, consulte a documentação do Cloud KMS.

Ao executar um job de treinamento, o código é executado em uma ou mais instâncias de máquina virtual (VM) gerenciadas pelo AI Platform Training. Ao ativar CMEK para o AI Platform Training, a chave designada por você, e não a chave gerenciada pelo Google, é usada para criptografar dados nos discos de inicialização dessas VMs. A chave de CMEK criptografa os seguintes tipos de dados:

  • A cópia do código de treinamento nas VMs.
  • Todos os dados que forem carregados por seu código de treinamento.
  • Todos os dados temporários que forem salvos no disco local pelo código de treinamento.

A chave de CMEK não criptografa os metadados associados ao seu job de treinamento, como nome e região do job. Os metadados associados aos jobs de treinamento são sempre criptografados usando o mecanismo de criptografia padrão do Google.

Como usar CMEK com outros produtos do Google Cloud

A configuração de CMEK para o AI Platform Training não configura automaticamente CMEK para outros produtos do Google Cloud que você usa junto com o AI Platform Training. Para usar CMEK para criptografar dados em outros produtos do Google Cloud, é necessária uma configuração adicional. Exemplo:

Limitações

Você não pode usar CMEK com o AI Platform Training nas seguintes situações:

  • Você não pode usar CMEK com jobs de treinamento que usam TPUs.
  • Se você começou a usar a API Prediction e AI Platform Training em 2017 ou antes e enviou um job de treinamento com CMEK, é possível que encontre um erro descrevendo um mecanismo de autenticação legado incompatível. Nesse caso, crie um novo projeto do Google Cloud ou selecione um projeto diferente para executar o job do AI Platform Training.

Como configurar CMEK para o job de treinamento

As seções a seguir descrevem como criar um keyring e uma chave no Cloud Key Management Service, conceder permissões de criptografia e descriptografia de AI Platform Training para sua chave e criar um job de treinamento que usa CMEK.

Antes de começar

Neste guia, pressupomos que você use dois projetos separados do Google Cloud para configurar CMEK para treinamento:

  • Um projeto para gerenciar sua chave de criptografia (conhecido como "projeto do Cloud KMS").
  • Um projeto para acessar o AI Platform Training, gerenciar dados de treinamento ou saída no Cloud Storage e interagir com outros produtos do Google Cloud necessários para seu caso de uso (conhecido como "projeto do AI Platform").

Essa configuração recomendada é compatível com uma separação de tarefas.

Como alternativa, é possível usar um único projeto do Google Cloud para todo o guia. Para isso, use o mesmo projeto para todas as tarefas a seguir que fazem referência ao projeto do Cloud KMS e às tarefas que fazem referência ao projeto do AI Platform.

Como configurar o projeto do Cloud KMS

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud KMS API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud KMS API.

    Enable the API

Como configurar o projeto do AI Platform

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the AI Platform Training & Prediction API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the AI Platform Training & Prediction API.

    Enable the API

Como configurar a Google Cloud CLI

A gcloud CLI é necessária em algumas etapas deste guia e opcional em outras.

Install the Google Cloud CLI, then initialize it by running the following command:

gcloud init

Como criar um keyring e uma chave

Siga o guia do Cloud KMS para criar chaves simétricas para criar um keyring e uma chave. Ao criar seu keyring, especifique uma região que ofereça suporte ao AI Platform Training como o local do keyring. O AI Platform Training só aceita CMEK quando o job de treinamento e a chave usam a mesma região. Não especifique um local global, ou de duas ou mais regiões para seu keyring.

Certifique-se de criar o keyring e a chave no projeto do Cloud KMS.

Como conceder permissões no AI Platform Training

Para usar CMEK no job de treinamento, você precisa conceder permissão no AI Platform Training para criptografar e descriptografar dados usando sua chave. O AI Platform Training usa um agente de serviço para executar os jobs de treinamento. Esse agente de serviço é identificado por um endereço de e-mail com o seguinte formato:

service-AI_PLATFORM_PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com

Para encontrar o agente de serviço adequado para seu projeto do AI Platform, acesse a página IAM no console do Google Cloud e encontre o membro que corresponde a esse formato de endereço de e-mail, substituindo a variável AI_PLATFORM_PROJECT_NUMBER pelo número do projeto do AI Platform. O agente de serviço também tem o nome Google Cloud ML Engine Service Agent.

Acessar a página "IAM"

Anote o endereço de e-mail desse agente de serviço e use nos passos a seguir para conceder permissão para criptografar e descriptografar dados usando sua chave. Conceda a permissão usando o console do Google Cloud ou a Google Cloud CLI:

Console do Google Cloud

  1. No console do Google Cloud, acesse a página Chaves criptográficas e selecione seu projeto do Cloud KMS.

    Acesse a página Chaves criptográficas

  2. Clique no nome do keyring que você criou em uma seção anterior deste guia para acessar a página Detalhes do keyring.

  3. Marque a caixa de seleção da chave que você criou em uma seção anterior deste guia. Se um painel de informações com o nome de sua chave ainda não estiver aberto, clique em Exibir painel de informações.

  4. No painel de informações, clique em Adicionar membro para abrir a caixa de diálogo Adicionar membros a "KEY_NAME". Nessa caixa de diálogo, faça o seguinte:

    1. Na caixa Novos membros, insira o endereço de e-mail da conta de serviço que você anotou na seção anterior: service-AI_PLATFORM_PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com
    2. Na lista suspensa Selecionar uma função, clique em Cloud KMS e selecione a função Criptografador/Descriptografador de CryptoKey do Cloud KMS.

    3. Clique em Salvar.

gcloud

Execute este comando:

gcloud kms keys add-iam-policy-binding KEY_NAME \
  --keyring=KEY_RING_NAME \
  --location=REGION \
  --project=KMS_PROJECT_ID \
  --member=serviceAccount:service-AI_PLATFORM_PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com \
  --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

Nesse comando, substitua os seguintes marcadores:

  • KEY_NAME: o nome da chave que você criou em uma seção anterior deste guia
  • KEY_RING_NAME: o keyring que você criou em uma seção anterior deste guia
  • REGION: a região em que você criou o keyring
  • KMS_PROJECT_ID: o ID do seu projeto do Cloud KMS
  • AI_PLATFORM_PROJECT_NUMBER: o número do projeto do AI Platform, que você anotou na seção anterior como parte de um endereço de e-mail da conta de serviço.

Como criar um job de treinamento com CMEK

Agora que você concedeu ao AI Platform Training permissão para criptografar e descriptografar dados usando sua chave, é possível criar um job de treinamento que criptografa dados temporários usando essa chave. Ao criar um job de treinamento, especifique o encryptionConfig campo no campo trainingInput do job.

O exemplo a seguir mostra como fazer isso usando a CLI gcloud. No momento, não é possível criar um job de treinamento com CMEK no console do Google Cloud.

O exemplo pressupõe que você tenha um aplicativo de treinamento em seu sistema de arquivos local em um diretório chamado trainer com um módulo chamado task.

  1. Crie um arquivo de configuração config.yaml que contenha o seguinte:

    trainingInput:
      encryptionConfig:
        kmsKeyName: projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
    

    No arquivo de configuração, substitua os seguintes marcadores:

    • KMS_PROJECT_ID: o ID do seu projeto do Cloud KMS
    • KEY_RING_NAME: o nome do keyring
    • KEY_NAME: o nome da chave
  2. Para criar o job de treinamento, execute o seguinte comando:

    gcloud ai-platform jobs submit training JOB_ID \
      --config=config.yaml \
      --job-dir=JOB_DIR \
      --module-name=trainer.task \
      --package-path=trainer \
      --python-version=3.7 \
      --region=REGION \
      --runtime-version=2.11 \
      --scale-tier=basic
    

    Nesse comando, substitua os seguintes marcadores:

    • JOB_ID: um nome que você escolhe para o job
    • JOB_DIR: um caminho até um diretório do Cloud Storage para onde o aplicativo de treinamento é enviado. Seu job de treinamento também pode usar esse diretório durante o treinamento, por exemplo, para salvar a saída. Por conveniência, escolha um diretório em um bucket do Cloud Storage no projeto do AI Platform.

    • REGION: a região onde você criou o keyring e planeja criar o job de treinamento.

    Se bem-sucedido, o comando gera a seguinte saída:

    Job [JOB_ID] submitted successfully.
    Your job is still active. You may view the status of your job with the command
    
      $ gcloud ai-platform jobs describe JOB_ID
    
    or continue streaming the logs with the command
    
      $ gcloud ai-platform jobs stream-logs JOB_ID
    jobId: JOB_ID
    state: QUEUED
    

    Agora, é possível monitorar seu job de treinamento.

Além dos campos region e encryptionConfig, é possível personalizar a configuração do job de treinamento para atender às suas necessidades. Também é possível usar um contêiner personalizado para treinamento.

A seguir