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, incluindo o Cloud Tasks. O uso de chaves do Cloud KMS permite 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. O uso do Cloud KMS também permite visualizar registros de auditoria e controlar ciclos de vida importantes. 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 mais informações 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 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 ficou inativa mais tarde (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 em que o CMEK está ativado
- A tarefa é afetada por uma limitação de compatibilidade
Limitações de compatibilidade
A integração do Cloud Tasks com o CMEK não oferece suporte para o seguinte:
google-gax
versões abaixo4.0.0
: o pacotegoogle-gax
do NPM para Node.js tem suporte limitado em versões anteriores a4.0.0
. Para essas versões, o CMEK só tem suporte na regiãous-central1
. Mesmo que você tenha apenas tarefas nessa região, é recomendado fazer upgrade para a versão4.0.0
ou mais recente.Serviço Taskqueue integrado do App Engine:as tarefas criadas usando o serviço Taskqueue integrado do App Engine não são protegidas pelo CMEK, mesmo que estejam em uma região em que ele esteja ativado. Ativar a CMEK não impede a criação ou operação (por exemplo, execução ou exclusão) dessas tarefas.
Filas de pull:se você ativar a CMEK, será possível criar e executar tarefas em filas de pull, mas elas não serão protegidas pela CMEK. As filas pull são incomuns. Para verificar se a fila é de 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 será de 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 ativado e não será compatível com o 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 mostraruriOverride
com umhost
especificado, a fila não vai usar o 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. Esse é o projeto que contém os recursos do Cloud Tasks que você quer proteger com o CMEK. Se você precisar executar um comando em um projeto diferente, como o que contém seus recursos do Cloud KMS, esta página vai 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.Atualize os componentes
gcloud
.gcloud components update
Ative as APIs Cloud KMS e Cloud Tasks para o projeto que 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. 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 são ativadas, desativadas ou usadas por recursos da API 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.
Conseguir papéis do Identity and Access Management.
Para receber as permissões necessárias para usar o CMEK com a API 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 a chave e o 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 da API Cloud Tasks protegidos por CMEK podem estar no mesmo projeto, mas, para limitar o acesso às chaves do Cloud KMS, configure o Cloud KMS em um projeto separado.
Extrair 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 ID 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 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
É necessário conceder ao agente de serviço do Cloud Tasks o papel de IAM de Criptografador/Identity and Access Management do Cloud KMS CryptoKey para que ele possa acessar a chave do Cloud KMS:
Console
No console do Google Cloud , acesse a página IAM (Identity and Access Management).
Marque a caixa de seleção Incluir concessões de papel fornecidas pelo Google.
Encontre a conta de serviço do Cloud Tasks digitando
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 da sua chave. Para instruções sobre como encontrar esse ID, consulte Extrair o ID de uma chave do Cloud KMS. Não inclua um número de versão de 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 o papel roles/cloudkms.cryptoKeyEncrypterDecrypter
, uma tarefa na região ativada para CMEK pode criptografar e descriptografar os dados usando a chave CMEK. Se você revogar essa função ou desativar ou destruir a chave
CMEK, esses dados não poderão ser acessados. Neste documento, consulte Desativar a CMEK para as Tarefas do Cloud.
Ativar a CMEK para o Cloud Tasks
É possível ativar a CMEK usando a API ou a CLI gcloud. Para o Cloud Tasks, a CMEK é ativada por região. Ele não é ativado por tarefas individuais. Quando a CMEK é ativada para uma determinada região no Google Tarefas, todas as tarefas nessa região são protegidas por CMEK.
gcloud
Para ativar a CMEK usando a Google Cloud CLI, execute o seguinte comando:
gcloud tasks cmek-config update --location=LOCATION --kms-key-name=KEY_ID
Substitua:
LOCATION
: a região do seu recurso da 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 um número de versão da chave. A inclusão de um número de versão de chave pode causar a falha do comando.
REST
É possível ativar o CMEK chamando o método Update CMEK config
. A
API Cloud Tasks fornece o método Update CMEK config
nas APIs REST
e RPC:
- REST: use o método
updateCmekConfig
. - RPC:use o método
UpdateCmekConfigRequest
.
Para verificar se a chave foi ativada, siga as instruções na seção Identificar a chave em uso.
Ativar para tarefas preexistentes
A CMEK não protege tarefas criadas antes da ativação da CMEK para as Tarefas do Cloud. Para proteger tarefas já existentes com a CMEK:
- Ative a CMEK (consulte a seção sobre como ativar a CMEK).
Substitua as tarefas que já existem. Há duas maneiras principais de fazer isso. A melhor maneira de fazer isso depende do que é importante para você:
Execução contínua:para garantir a execução contínua (entrega pelo menos uma vez), você pode recriar a tarefa e excluir a tarefa preexistente depois de verificar se a nova tarefa funciona conforme o esperado. Isso pode resultar em execuções duplicadas, porque a tarefa antiga e a nova podem ser executadas antes de excluir a antiga.
Prevenção de duplicação:para evitar execuções duplicadas ("entrega no máximo uma vez"), exclua a tarefa antiga e a recrie. Isso pode resultar em execuções perdidas devido ao tempo decorrido entre a exclusão da tarefa antiga e a criação da nova.
Identificar a chave em uso
Para identificar a chave CMEK em uso nos seus recursos do Cloud Tasks, execute o seguinte comando da CLI gcloud:
gcloud tasks cmek-config describe --location=LOCATION
Substitua LOCATION
pela região
dos seus recursos do Cloud Tasks.
Se não houver saída, o CMEK não está configurado para o local especificado.
Aplicar uma política da organização de CMEK
O Cloud Tasks é integrado a duas restrições de política da organização para ajudar a garantir o uso do CMEK em uma organização:
constraints/gcp.restrictNonCmekServices
é usado para exigir proteção de CMEK.constraints/gcp.restrictCmekCryptoKeyProjects
é usado para limitar quais chaves do Cloud KMS são usadas para proteção CMEK.
Com essa integração, você pode especificar os seguintes requisitos de conformidade de criptografia para recursos do Cloud Tasks na sua organização:
- Exigir CMEKs para todos os novos recursos do Cloud Tasks
- Restringir chaves do Cloud KMS para um projeto do Cloud Tasks
Considerações ao aplicar políticas da organização
Antes de aplicar qualquer políticas da organização de CMEK, esteja ciente do seguinte.
Prepare-se para um atraso na propagação
Depois que você define ou atualiza uma política da organização, pode levar até 15 minutos para a nova política entrar em vigor.
Considerar os recursos atuais
Os recursos atuais não estão sujeitos às políticas da organização recém-criadas. Por exemplo, uma política da organização não se aplica retroativamente a tarefas existentes. Esses recursos ainda podem ser acessados sem uma CMEK e, se aplicável, ainda são criptografados com as chaves atuais. Se você quiser aplicar a política a tarefas atuais, ative a CMEK para tarefas já existentes.
Verificar as permissões necessárias para definir uma política da organização
Pode ser difícil obter a permissão para definir ou atualizar a política da organização para fins de teste. É necessário receber o papel de administrador da política da organização, que só pode ser concedido no nível da organização, não no nível do projeto ou da pasta.
Embora o papel precise ser concedido no nível da organização, ainda é possível especificar uma política que se aplica apenas a um projeto ou pasta específicos.
Exigir CMEKs para todos os novos recursos do Cloud Tasks
É possível usar a restrição constraints/gcp.restrictNonCmekServices
para exigir
que as CMEKs sejam usadas para proteger todos os novos recursos do Cloud Tasks em
uma organização.
Se definida, essa política da organização faz com que todas as solicitações de criação de recursos sem uma chave especificada do Cloud KMS falhem.
Após definir essa política, ela será aplicada somente a novos recursos no projeto. Os recursos atuais sem chaves do Cloud KMS aplicadas continuam existindo e podem ser acessados sem problemas.
Console
No console do Google Cloud , acesse a página Políticas da organização.
Usando o Filtro, pesquise a seguinte restrição:
constraints/gcp.restrictNonCmekServices
Na coluna "Nome", clique em Restringir quais serviços podem criar recursos sem CMEK.
Clique em
Gerenciar política.Na página Editar política, em Origem da política, selecione Substituir a política do editor principal.
Em Regras, clique em Adicionar uma regra.
Na lista Valores da política, selecione Personalizado.
Na lista Tipo de política, selecione Negar.
No campo Valores personalizados, insira o seguinte:
is:cloudtasks.googleapis.com
Clique em Concluído e em Definir política.
gcloud
Crie um arquivo temporário
/tmp/policy.yaml
para armazenar a política:name: projects/PROJECT_ID/policies/gcp.restrictNonCmekServices spec: rules: - values: deniedValues: - is:cloudtasks.googleapis.com
Substitua
PROJECT_ID
pelo ID do projeto em que você está aplicando essa restrição.Execute o comando
org-policies set-policy
:gcloud org-policies set-policy /tmp/policy.yaml
Para verificar se a política foi aplicada, tente criar uma fila no projeto. O processo falhará a menos que você especifique uma chave do Cloud KMS.
Restringir chaves do Cloud KMS para um projeto do Cloud Tasks
É possível usar a restrição constraints/gcp.restrictCmekCryptoKeyProjects
para
restringir as chaves do Cloud KMS que podem ser usadas para proteger um recurso em
um projeto do Cloud Tasks.
Por exemplo, é possível especificar uma regra semelhante a esta: "Para todos os recursos do Cloud Tasks em projects/my-company-data-project
, as chaves do Cloud KMS usadas neste projeto precisam vir de projects/my-company-central-keys
OU projects/team-specific-keys
".
Console
No console do Google Cloud , acesse a página Políticas da organização.
Usando o Filtro, pesquise a seguinte restrição:
constraints/gcp.restrictCmekCryptoKeyProjects
Na coluna "Nome", clique em Restringir quais projetos podem fornecer CryptoKeys do KMS para CMEK.
Clique em
Gerenciar política.Na página Editar política, em Origem da política, selecione Substituir a política do editor principal.
Em Regras, clique em Adicionar uma regra.
Na lista Valores da política, selecione Personalizado.
Na lista Tipo de política, selecione Permitir.
No campo Valores personalizados, insira o seguinte:
under:projects/KMS_PROJECT_ID
Substitua
KMS_PROJECT_ID
pelo ID do projeto em que as chaves do Cloud KMS que você quer usar estão localizadas.Por exemplo,
under:projects/my-kms-project
Clique em Concluído e em Definir política.
gcloud
Crie um arquivo temporário
/tmp/policy.yaml
para armazenar a política:name: projects/PROJECT_ID/policies/gcp.restrictCmekCryptoKeyProjects spec: rules: - values: allowedValues: - under:projects/KMS_PROJECT_ID
Substitua:
PROJECT_ID
: o ID do projeto em que você está aplicando essa restrição.KMS_PROJECT_ID
: o ID do projeto em que as chaves do Cloud KMS que você quer usar estão localizadas.
Execute o comando
org-policies set-policy
:gcloud org-policies set-policy /tmp/policy.yaml
Para verificar se a política foi aplicada, tente criar uma fila usando uma chave do Cloud KMS de um projeto diferente. O processo falhará.
Desativar a CMEK para o Cloud Tasks
É possível desativar a CMEK usando a API ou a CLI gcloud. Para as Tarefas do Cloud, o CMEK é desativado 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.
A desativação da 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 que foram criadas enquanto a CMEK estava ativa permanecem criptografadas e continuam sendo executadas enquanto a chave do Cloud KMS permanece ativa.
gcloud
Para desativar o CMEK usando a Google Cloud CLI, use o seguinte comando:
gcloud tasks cmek-config update --location=LOCATION --clear-kms-key
Substitua:
LOCATION
: a região do recurso do Cloud Tasks.
REST
É possível desativar a CMEK chamando o método Update CMEK config
e limpando
a chave do Cloud KMS substituindo-a por uma string vazia. A
API Cloud Tasks fornece o método Update CMEK config
nas APIs REST
e RPC:
- REST: use o método
updateCmekConfig
. - RPC:use o método
UpdateCmekConfigRequest
.
Remover o Cloud KMS
Se você quiser revogar o acesso de dados às suas tarefas, remova o Cloud KMS. Há três maneiras de fazer isso:
Desative a chave de criptografia gerenciada pelo cliente. A desativação de uma chave CMEK suspende o acesso a todos os dados protegidos por essa versão enquanto ela está desativada. Não é possível acessar ou criar tarefas com uma chave desativada. Tentar executar uma tarefa protegida por 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.Destrua a chave de criptografia gerenciada pelo cliente. 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 destruída. Se uma tarefa foi criada enquanto a CMEK estava ativada e a chave foi destruída mais tarde, a tarefa é criptografada com sua chave, mas não pode ser executada. Se a tarefa tentar ser executada, o Cloud Logging vai registrar um erro
UNKNOWN
. Quando você destrói uma chave de criptografia gerenciada pelo cliente, pode levar até cinco minutos para que a mudança seja aplicada.Revogue o papel
cloudkms.cryptoKeyEncrypterDecrypter
do IAM do agente de serviço do Cloud Tasks. Isso afeta todas as tarefas no projetodo Google Cloud que oferecem suporte à 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 de alterações no 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.