Usar chaves de criptografia gerenciadas pelo cliente

Por padrão, o Cloud Tasks criptografa o conteúdo do cliente em repouso. O Cloud Tasks processa a criptografia para você sem que você precise fazer nada. Essa opção é chamada de criptografia padrão do Google.

Se você quiser controlar suas chaves de criptografia, use chaves de criptografia gerenciadas pelo cliente (CMEKs) no Cloud KMS com serviços integrados a CMEKs, como o Cloud Tasks. Ao usar chaves do Cloud KMS, é possível controlar o nível de proteção, o local, a programação de rotação, as permissões de uso e acesso e os limites criptográficos. Com o Cloud KMS, também é possível visualizar registros de auditoria e controlar ciclos de vida de chaves. Em vez de o Google ser proprietário e gerente de chaves de criptografia de chaves (KEKs) simétricas que protegem seus dados, você controla e gerencia essas chaves no Cloud KMS.

Depois de configurar os recursos com CMEKs, a experiência de acesso aos recursos do Cloud Tasks é semelhante à criptografia padrão do Google. Para saber mais sobre suas opções de criptografia, consulte Chaves de criptografia gerenciadas pelo cliente (CMEK).

O que é protegido com a CMEK

Quando você ativa a CMEK no Cloud Tasks, ela é ativada para uma região. Quando ativados, o corpo e o cabeçalho das tarefas criadas nessa região são protegidos com sua chave em repouso. Se uma tarefa foi criada enquanto a CMEK estava ativada e a chave foi desativada posteriormente (desativando ou excluindo a chave ou desativando a CMEK), a tarefa será criptografada com sua chave, mas não poderá ser executada.

As tarefas não são protegidas com a CMEK nos seguintes casos:

  • A tarefa foi criada antes de ativar a CMEK
  • A tarefa não está na região em que a CMEK está ativada
  • A tarefa é afetada por uma limitação de compatibilidade

Limitações de compatibilidade

A integração do Cloud Tasks com a CMEK não oferece suporte ao seguinte:

  • Versões do google-gax abaixo de 4.0.0:o pacote NPM google-gax para Node.js tem suporte limitado em versões anteriores a 4.0.0. Para essas versões, a CMEK é compatível apenas na região us-central1. Mesmo que você tenha apenas tarefas nessa região, é recomendável fazer upgrade para a versão 4.0.0 ou mais recente.

  • Serviço de fila de tarefas integrado do App Engine:as tarefas criadas usando o serviço de fila de tarefas integrado do App Engine não são protegidas pela CMEK, mesmo que estejam em uma região em que ela está ativada. Ativar a CMEK não impede a criação ou operação (por exemplo, execução ou exclusão) dessas tarefas.

  • Filas de extração:se você ativar a CMEK, poderá criar e executar tarefas em filas de extração, mas elas não serão protegidas pela CMEK. As filas pull são incomuns. Para verificar se a fila é uma fila pull, execute o seguinte comando da CLI gcloud no terminal:

    gcloud tasks queues describe QUEUE_NAME

    Substitua QUEUE_NAME pelo nome da sua fila.

    Se o type listado for pull, sua fila será de extração. Se o type listado for push, essa limitação não vai afetar as tarefas na sua fila.

  • Roteamento no nível da fila:quando a CMEK está ativada, não é possível aplicar o roteamento no nível da fila. Além disso, se o roteamento no nível da fila estiver ativado, não será possível ativar a CMEK. Para verificar se você ativou o roteamento no nível da fila, faça o seguinte:

    1. Execute o seguinte comando da CLI gcloud no terminal:

      gcloud tasks queues describe QUEUE_NAME
      Substitua QUEUE_NAME pelo nome da sua fila.

    2. Na saída, procure o campo httpTarget e verifique se o uriOverride foi definido. Se um host for especificado, sua fila terá o roteamento no nível da fila ativado e não será compatível com a CMEK. Para remover o roteamento no nível da fila, consulte Atualizar ou remover o roteamento no nível da fila. Se a saída não mostrar uriOverride com um host especificado, sua fila não usará o roteamento no nível da fila.

  • TTL da tarefa:quando a CMEK está ativada, não é possível definir task_ttl como maior que 60 dias. Se você tiver um task_ttl definido como maior que 60 dias, não será possível ativar a CMEK.

Antes de começar

Antes de usar a CMEK no Cloud Tasks, siga estas etapas:

  1. Ative as APIs.

    Console

    1. Ative as APIs Cloud KMS e Cloud Tasks.

      Funções necessárias para ativar APIs

      Para ativar APIs, você precisa da permissão serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão com o papel de Proprietário (roles/owner). Caso contrário, é possível receber essa permissão com o papel de Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.

      Ativar as APIs

    gcloud

    1. No console do Google Cloud , ative o Cloud Shell.

      Ativar o Cloud Shell

      Na parte de baixo do console Google Cloud , uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

    2. Defina seu projeto padrão. Esse precisa ser o projeto que contém os recursos do Cloud Tasks que você quer proteger com CMEK. Se você precisar executar um comando em um projeto diferente, como o projeto que contém seus recursos do Cloud KMS, esta página incluirá a flag --project no comando da CLI gcloud e informará qual projeto especificar.

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo ID do projeto que contém seus recursos do Cloud Tasks.

    3. Atualize os componentes gcloud.

      gcloud components update

    4. Ative as APIs Cloud KMS e Cloud Tasks para o projeto que vai armazenar as chaves de criptografia.

      gcloud services enable cloudkms.googleapis.com cloudtasks.googleapis.com \
          --project=PROJECT_ID

      Substitua PROJECT_ID pelo ID do projeto que vai armazenar suas chaves de criptografia. Pode ser o mesmo projeto dos recursos do Cloud Tasks, mas para limitar o acesso às chaves do Cloud KMS, considere configurar o Cloud KMS em um projeto separado.

  2. O Cloud KMS produz registros de auditoria do Cloud quando as chaves são ativadas, desativadas ou usadas por recursos do Cloud Tasks para criptografar e descriptografar dados. Verifique se a geração de registros está ativada para a API Cloud KMS no seu projeto e se você decidiu quais permissões e papéis específicos de geração de registros se aplicam ao seu caso de uso. Para mais informações, consulte Informações sobre registros de auditoria do Cloud KMS.

  3. Receba papéis do Identity and Access Management.

    Para receber as permissões necessárias a fim de usar a CMEK com o Cloud Tasks, peça que o admin conceda a você os seguintes papéis do IAM no projeto:

    • Ative ou desative a CMEK: roles/cloudtasks.admin
    • Veja a chave em uso: roles/cloudtasks.viewer

    Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

    Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

Criar um keyring e uma chave do Cloud KMS

Se você já tiver um keyring na mesma região dos recursos do Cloud Tasks e quiser usar essa chave e esse keyring, pule esta seção. Caso contrário, use estas instruções para criar sua chave e keyring do Cloud KMS.

  1. Crie um keyring.

  2. Crie uma chave para um keyring especificado.

Recuperar o ID de uma chave do Cloud KMS

O ID do recurso de uma chave do Cloud KMS é necessário ao ativar a CMEK para o Cloud Tasks.

Console

  1. No console do Google Cloud , acesse a página Gerenciamento de chaves e selecione a guia Inventário de chaves.

    Acessar o inventário de chaves

  2. Na chave referente ao ID de recurso que está sendo recuperado, clique em Ações.

  3. Clique em Copiar nome do recurso.

    O ID do recurso da chave é copiado para a área de transferência. O formato é semelhante a este:

    projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
    

gcloud

  1. Liste todas as chaves em um determinado keyring:

    gcloud kms keys list --keyring=KEY_RING --location=LOCATION --project=PROJECT_ID

    Substitua:

    • KEY_RING: o nome do keyring;
    • LOCATION: a região do keyring;
    • PROJECT_ID: o ID do projeto que contém o keyring

    A saída inclui o ID de cada chave. Exemplo:

    NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
    

Conceda ao agente de serviço do Cloud Tasks acesso à chave

Conceda ao agente de serviço do Cloud Tasks o papel do IAM Criptografador/descriptografador de CryptoKey do Cloud KMS para que ele possa acessar a chave do Cloud KMS:

Console

  1. No console Google Cloud , acesse a página IAM (Identity and Access Management).

    Acessar IAM

  2. Marque a caixa de seleção Incluir concessões de papel fornecidas pelo Google.

  3. Para encontrar a conta de serviço do Cloud Tasks, digite cloudtasks.iam.gserviceaccount.com no filtro.

    A conta de serviço do Cloud Tasks tem o formato service-PROJECT_NUMBER@gcp-sa-cloudtasks.iam.gserviceaccount.com.

  4. Clique no ícone de lápis Editar participante.

  5. No painel que abrir, clique em Adicionar outro papel.

  6. Pesquise e selecione o papel Criptografador/descriptografador de CryptoKey do Cloud KMS.

  7. Clique em Salvar.

gcloud

gcloud kms keys add-iam-policy-binding KEY_ID \