Por padrão, o Cloud Tasks criptografa os dados armazenados em repouso. O Google Cloud gerencia essa criptografia padrão para você sem que você precise fazer nada.
Se você tem requisitos regulatórios ou de compliance específicos relacionados às chaves que protegem seus dados, use chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) para o Cloud Tasks. A tarefa e os dados associados (corpo e cabeçalho) em repouso são protegidos usando uma chave de criptografia que só você pode acessar e controlar e gerenciar usando o Cloud Key Management Service (Cloud KMS).
O que é protegido com a CMEK
Quando você ativa a CMEK no Cloud Tasks, ela é ativada para uma região. Quando ativado, 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 o CMEK estava ativado e a chave foi desativada (desativando ou excluindo a chave ou desativando o CMEK), a tarefa é criptografada com sua chave, mas não pode ser executada.
As tarefas não são protegidas com a CMEK nos seguintes casos:
- A tarefa foi criada antes da ativação do CMEK.
- A tarefa não está na região para a qual 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 seguintes:
google-gax
versões abaixo4.0.0
: o pacote NPMgoogle-gax
para Node.js tem suporte limitado em versões abaixo de4.0.0
. Para essas versões, o CMEK só tem suporte na regiãous-central1
. Mesmo que você só tenha tarefas naquela região, recomendamos o upgrade para a versão4.0.0
ou superior.Serviço de fila de tarefas integrado do App Engine:tarefas criadas usando o O serviço integrado de fila de tarefas do App Engine não é protegido pela CMEK, mesmo que eles estão em uma região para a qual o recurso foi ativado. Ativar a CMEK não impede a criação ou operação (por exemplo, execução ou exclusão) dessas tarefas.
Filas pull: se você ativar a CMEK, poderá criar e executar tarefas no pull filas, mas essas tarefas não são protegidas pela CMEK. Filas pull não são comuns. 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 fila.Se o
type
listado forpull
, a fila é uma fila pull. Se otype
listado forpush
, essa limitação não afetará as tarefas na fila.Roteamento no nível da fila: quando a CMEK está ativada, não é possível aplicar o roteamento no nível da fila. Se o roteamento no nível da fila estiver ativado, não será possível ativar o CMEK. Para verificar se o roteamento no nível da fila está ativado, faça o seguinte:
Execute o seguinte comando da CLI gcloud no terminal:
Substituagcloud tasks queues describe QUEUE_NAME
QUEUE_NAME
pelo nome da fila.Na saída, procure o campo
httpTarget
e verifique se ouriOverride
foi definido. Se umhost
for especificado, a fila terá o roteamento no nível da fila está ativado e não é 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 o resultado não mostraruriOverride
com umhost
especificado, seu não usa roteamento no nível da fila.
TTL da tarefa:quando a CMEK está ativada, não é possível definir
task_ttl
para mais de 60 dias. Se você tiver umtask_ttl
definido como maior que 60 dias, não será possível ativar o CMEK.
Antes de começar
Antes de usar a CMEK no Cloud Tasks, siga estas etapas:
Ative as APIs.
Console
-
Enable the Cloud KMS and Cloud Tasks APIs.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Defina seu projeto padrão. Este deve ser o projeto que contém os recursos do Cloud Tasks que você quer proteger com a CMEK. Se você precisar executar um comando em um projeto diferente, como o contendo seus recursos do Cloud KMS, essa página vai inclua a sinalização
--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 os recursos do Cloud Tasks.Atualize os componentes
gcloud
.gcloud components update
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_IDSubstitua
PROJECT_ID
pelo ID do projeto. que vai armazenar as chaves de criptografia. Ele pode ser o mesmo projeto dos seus recursos da Cloud Tasks, mas, para limitar o acesso às suas chaves do Cloud KMS, considere configurar o Cloud KMS em um projeto separado.
-
O Cloud KMS produz Registros de auditoria do Cloud quando as chaves desativado ou usado 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 a geração de registros de auditoria do Cloud KMS.
Receber papéis do Identity and Access Management.
Para receber as permissões necessárias para usar a CMEK com o Cloud Tasks, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:
-
Ativar ou desativar a CMEK:
roles/cloudtasks.admin
-
Confira 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 por meio de papéis personalizados ou de outros papéis predefinidos.
-
Ativar ou desativar a CMEK:
Criar um keyring e uma chave do Cloud KMS
Se você já tiver um keyring na mesma região dos seus recursos da Cloud Tasks e quiser usar essa chave e esse keyring, pule esta seção. Caso contrário, use estas instruções para criar seu chave e keyring do Cloud KMS.
-
O keyring precisa estar na região que contém os recursos do Cloud Tasks que você quer proteger. Para mais informações, consulte Locais do Cloud KMS e Locais do Cloud Tasks.
O keyring e os recursos do Cloud Tasks protegidos por CMEK podem no mesmo projeto, mas para limitar o acesso à sua Cloud KMS chaves, considere Como configurar o Cloud KMS em um projeto separado.
Recuperar o ID de uma chave do Cloud KMS
O ID do recurso de uma chave do Cloud KMS é necessário quando você ativa a CMEK para as Tarefas do Cloud.
Console
No console do Google Cloud, acesse a página Gerenciamento de chaves e selecione a guia Inventário de chaves.
Na chave referente ao código de recurso que está sendo recuperado, clique em more_vert Ações.
Clique em Copiar nome do recurso.
O ID do recurso da chave é copiado para a área de transferência. O formato é semelhante ao seguinte:
projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
gcloud
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 keyringPROJECT_ID
: o ID do projeto que contém o chaveiro
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
Você precisa conceder ao agente de serviço do Cloud Tasks as Criptografador/Descriptografador de CryptoKey do Cloud KMS Identity and Access Management (IAM) para que ele possa acessar o Cloud KMS chave:
Console
No console do Google Cloud, acesse a página "Identity and Access Management".
Marque a caixa de seleção Incluir concessões de papel fornecidas pelo Google.
Digite para encontrar a conta de serviço do Cloud Tasks
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
.Clique no ícone de lápis Editar participante.
No painel que abrir, clique em Adicionar outro papel.
Pesquise e selecione o papel Criptografador/descriptografador de CryptoKey do Cloud KMS.
Clique em Salvar.
gcloud
gcloud kms keys add-iam-policy-binding KEY_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudtasks.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
Substitua:
KEY_ID
: o ID de recurso totalmente qualificado para sua de dados. Para obter instruções sobre como encontrar isso, consulte Recupere o ID de uma chave do Cloud KMS. Não inclua um número de versão da chave. A inclusão de um número de versão de chave pode causar a falha desse comando.PROJECT_NUMBER
: o número do projeto do Google Cloud. Encontre o número do projeto na página Boas-vindas do console do Google Cloud ou executando o seguinte comando:PROJECT=$(gcloud info --format='value(config.project)') gcloud projects describe ${PROJECT} --format="value(projectNumber)"
Desde que o agente de serviço tenha a função roles/cloudkms.cryptoKeyEncrypterDecrypter
, uma tarefa na região ativada para CMEK pode criptografar e descriptografar os dados usando a chave CMEK. Se você revogar esse papel ou desativar ou destruir a CMEK
esses dados não poderão ser acessados. Neste documento, consulte Desativar o Cloud KMS.
Ativar a CMEK para o Cloud Tasks
É possível ativar a CMEK usando a API ou a CLI gcloud. Para Cloud Tasks, a CMEK é ativada por região. Ele não é ativado pela tarefas individuais. Quando a CMEK está ativada para uma determinada região Cloud Tasks, todas as tarefas nessa região são protegidas pela CMEK.
API
É possível ativar o CMEK chamando o método Update CMEK config
. O
A API Cloud Tasks fornece o método Update CMEK config
nas bibliotecas REST
e RPCs:
- REST: use o método
updateCmekConfig
. - RPC: use o método
UpdateCmekConfigRequest
.
gcloud
Para ativar a CMEK usando a CLI do Google Cloud, use o seguinte comando:
gcloud tasks cmek-config update --location=LOCATION --kms-key-name=KEY_ID
Substitua:
LOCATION
: a região do seu Recurso do Cloud TasksKEY_ID
: o ID de recurso totalmente qualificado da sua chave. Para instruções sobre como encontrar esse ID, consulte Extrair o ID de uma chave do Cloud KMS. Não inclua uma chave número da versão. Incluir um número de versão de chave pode fazer com que esse comando falhe.
Para verificar se a chave foi ativada com sucesso, siga as instruções na seção Identificar a chave em uso.
Ativar para tarefas pré-existentes
A CMEK não protege as tarefas criadas antes da ativação para o Cloud Tasks. Para proteger tarefas pré-existentes com a CMEK:
- Ative a CMEK (consulte a seção sobre como ativar a CMEK).
Substitua as tarefas já existentes. Há duas maneiras principais de fazer isso. O a melhor maneira de fazer isso depende do que é importante para você:
Execução contínua:para garantir a execução contínua ("pelo menos uma vez") entrega), é possível recriar a tarefa e, em seguida, excluir a pré-existente depois de verificar se a nova tarefa funciona como esperado. Isso pode resultar em execuções duplicadas, porque a tarefa antiga e a nova podem ser executadas antes de você excluir a tarefa antiga.
Prevenção duplicada: para evitar execuções duplicadas ("na maior vez" entrega), é possível primeiro excluir a tarefa antiga e depois recriá-la. Isso pode resultar em perda de execuções devido ao tempo decorrido entre a exclusão do a tarefa antiga e criar a nova.
Identificar a chave em uso
Para identificar a chave CMEK usada nos recursos do Cloud Tasks, execute o seguinte comando da CLI gcloud no terminal:
gcloud tasks cmek-config describe --location=LOCATION
Substitua LOCATION
pela região dos seus recursos do Cloud Tasks.
Se não houver saída, a CMEK não será configurada para o local especificado.
Desativar a CMEK para o Cloud Tasks
É possível desativar a CMEK usando a API ou a gcloud CLI. Para as Tarefas do Cloud, a CMEK é desativada por região. Ele não é desativado por tarefas individuais. Quando a CMEK está desativada para uma determinada região no Cloud Tasks, as tarefas nessa região não são protegidas pela CMEK.
Desativar a CMEK afeta as tarefas criadas no futuro, não as criadas no passado:
- Novas tarefas: não são protegidas pela CMEK.
Tarefas pré-existentes:as tarefas criadas enquanto a CMEK estava ativada permanecem. e continuará em execução enquanto a chave do Cloud KMS permanece ativa.
API
Para desativar a CMEK, chame o método Update CMEK config
e limpe
a chave do Cloud KMS substituindo-a por uma string vazia. O
A API Cloud Tasks fornece o método Update CMEK config
nas bibliotecas REST
e RPCs:
- REST: use o método
updateCmekConfig
. - RPC: use o método
UpdateCmekConfigRequest
.
gcloud
Para desativar o CMEK usando a CLI do Google Cloud, use o seguinte comando:
gcloud tasks cmek-config update --location=LOCATION --clear-kms-key
Substitua:
LOCATION
: a região do seu recurso do Cloud Tasks.
Remover o Cloud KMS
Se quiser revogar o acesso de dados às suas tarefas, você pode remover no Cloud KMS. Há três maneiras de fazer isso:
Desativar a conta de serviço chave de criptografia de dados. Desativar uma chave CMEK suspende o acesso a todos os dados protegidos por a versão enquanto a chave está desativada. Não é possível acessar ou criar tarefas com uma chave desativada. Tentar executar uma tarefa protegida pela CMEK enquanto a chave está desativada resulta em um erro
UNKNOWN
no Cloud Logging. Você pode reativar a chave mais tarde, se quiser. Quando você desativa uma chave de criptografia gerenciada pelo cliente, pode levar até cinco minutos para que a mudança seja aplicada.Destruir os componentes gerenciados chave de criptografia de dados. A destruição de uma chave CMEK suspende permanentemente o acesso a todos os dados protegidos por essa versão. Não é possível acessar ou criar tarefas com uma chave que foi destruída. Se uma tarefa tiver sido criada enquanto a CMEK estava ativada e a chave é depois destruída, a tarefa é criptografada com sua chave, mas não pode ser executada. Se tentar executar a tarefa, o Cloud Logging registrará um erro
UNKNOWN
. Quando você destruir uma chave de criptografia gerenciada pelo cliente, pode levar até cinco minutos para a alteração a ser aplicada.Revogue o papel
cloudkms.cryptoKeyEncrypterDecrypter
do IAM do agente de serviço do Cloud Tasks. Isso afeta todas as tarefas na Projeto do Google Cloud com suporte para criptografia usando CMEK. Não é possível criar novas tarefas integradas a CMEK nem acessar recursos criptografados por CMEK.
Embora nenhuma dessas operações garanta a revogação do acesso instantâneo, as alterações do IAM geralmente entram em vigor mais rapidamente. Para mais informações, consulte Consistência de recursos do Cloud KMS e Propagação da alteração de acesso.
Preços
Essa integração não gera custos adicionais além das operações principais, que são faturadas no seu projeto do Google Cloud. Para informações de preços atuais, consulte Preços do Cloud KMS.