Por predefinição, o Cloud Tasks encripta o conteúdo do cliente em repouso. O Cloud Tasks processa a encriptação por si sem ações adicionais da sua parte. Esta opção chama-se Encriptação predefinida da Google.
Se quiser controlar as suas chaves de encriptação, pode usar chaves de encriptação geridas pelo cliente (CMEK) no Cloud KMS com serviços integrados com CMEK, incluindo o Cloud Tasks. A utilização de chaves do Cloud KMS dá-lhe controlo sobre o respetivo nível de proteção, localização, programação de rotação, utilização, autorizações de acesso e limites criptográficos. A utilização do Cloud KMS também permite ver registos de auditoria e controlar os ciclos de vida das chaves. Em vez de a Google possuir e gerir as chaves de encriptação de chaves (KEKs) simétricas que protegem os seus dados, controla e gere estas chaves no Cloud KMS.
Depois de configurar os seus recursos com CMEKs, a experiência de acesso aos recursos do Cloud Tasks é semelhante à utilização da encriptação predefinida da Google. Para mais informações acerca das suas opções de encriptação, consulte o artigo Chaves de encriptação geridas pelo cliente (CMEK).
O que está protegido com a CMEK
Quando ativa as CMEK no Cloud Tasks, ativa-as para uma região. Quando ativados, o corpo e o cabeçalho das tarefas criadas nessa região são protegidos com a sua chave quando estão inativos. Se uma tarefa foi criada enquanto as CMEK estavam ativadas e, posteriormente, a chave for desativada (desativando ou eliminando a chave, ou desativando as CMEK), a tarefa é encriptada com a sua chave, mas não pode ser executada.
As tarefas não estão protegidas com CMEK nos seguintes casos:
- A tarefa foi criada antes de ativar as CMEK
- A tarefa não está na região para a qual o CMEK está ativado
- A tarefa é afetada por uma limitação de compatibilidade
Limitações de compatibilidade
A integração do Cloud Tasks com a CMEK não suporta o seguinte:
google-gaxversões abaixo de4.0.0: o pacote NPMgoogle-gaxpara Node.js tem suporte limitado nas versões anteriores a4.0.0. Para estas versões, a CMEK só é suportada na regiãous-central1. Mesmo que só tenha tarefas nessa região, é recomendado que atualize para a versão4.0.0ou posterior.Serviço de fila de tarefas integrado do App Engine: as tarefas criadas através do serviço de fila de tarefas integrado do App Engine não estão protegidas pela CMEK, mesmo que estejam numa região para a qual esteja ativada. A ativação das CMEK não impede a criação nem o funcionamento (por exemplo, a execução ou a eliminação) destas tarefas.
Filas de obtenção: se ativar a CMEK, pode criar e executar tarefas em filas de obtenção, mas estas tarefas não estão protegidas pela CMEK. As filas de obtenção são invulgares. Para verificar se a sua fila é uma fila de obtenção, execute o seguinte comando da CLI gcloud no terminal:
gcloud tasks queues describe QUEUE_NAME
Substitua
QUEUE_NAMEpelo nome da sua fila.Se o
typeindicado forpull, a sua fila é uma fila de obtenção. Se o valortypeindicado forpush, esta limitação não afeta as tarefas na sua fila.Encaminhamento ao nível da fila: quando as CMEK estão ativadas, não pode aplicar o encaminhamento ao nível da fila. Além disso, se o encaminhamento ao nível da fila estiver ativado, não pode ativar as CMEK. Para verificar se tem o encaminhamento ao nível da fila ativado, faça o seguinte:
Execute o seguinte comando da CLI gcloud no terminal:
Substituagcloud tasks queues describe QUEUE_NAME
QUEUE_NAMEpelo nome da sua fila.Na saída, procure o campo
httpTargete verifique se o valoruriOverridefoi definido. Se for especificado umhost, a sua fila tem o encaminhamento ao nível da fila ativado e não é compatível com a CMEK. Para remover o encaminhamento ao nível da fila, consulte o artigo Atualize ou remova o encaminhamento ao nível da fila. Se o resultado não mostraruriOverridecom umhostespecificado, a sua fila não usa o encaminhamento ao nível da fila.
TTL da tarefa: quando o CMEK está ativado, não pode definir
task_ttlpara mais de 60 dias. Além disso, se tiver umtask_ttldefinido para mais de 60 dias, não pode ativar o CMEK.
Antes de começar
Antes de usar as CMEK no Cloud Tasks, conclua os seguintes passos:
Ative as APIs.
Consola
-
Enable the Cloud KMS and Cloud Tasks APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
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 o projeto predefinido. Este deve ser o projeto que contém os recursos do Cloud Tasks que quer proteger com a CMEK. Se precisar de executar um comando num projeto diferente, como o projeto que contém os seus recursos do Cloud KMS, esta página inclui a flag
--projectno comando da CLI gcloud e indica o projeto que deve especificar.gcloud config set project PROJECT_ID
Substitua
PROJECT_IDpelo ID do projeto que contém os seus 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 suas chaves de encriptação.
gcloud services enable cloudkms.googleapis.com cloudtasks.googleapis.com \ --project=PROJECT_ID
Substitua
PROJECT_IDpelo ID do projeto que vai armazenar as suas chaves de encriptação. Este pode ser o mesmo projeto que os seus recursos do Cloud Tasks, mas para limitar o acesso às suas chaves do Cloud KMS, considere configurar o Cloud KMS num projeto separado.
O Cloud KMS produz registos de auditoria na nuvem quando as chaves são ativadas, desativadas ou usadas por recursos do Cloud Tasks para encriptar e desencriptar dados. Certifique-se de que o registo está ativado para a API Cloud KMS no seu projeto e que decidiu que autorizações e funções específicas do registo se aplicam ao seu exemplo de utilização. Para mais informações, consulte as informações de registo de auditoria do Cloud KMS.
Obtenha funções de gestão de identidade e de acesso.
Para receber as autorizações necessárias para usar as CMEK com o Cloud Tasks, peça ao seu administrador para lhe conceder as seguintes funções da IAM no seu projeto:
-
Ative ou desative as CMEK:
roles/cloudtasks.admin -
Veja a chave em utilização:
roles/cloudtasks.viewer
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Crie um conjunto de chaves e uma chave do Cloud KMS
Se já tiver um conjunto de chaves na mesma região que os seus recursos do Cloud Tasks e quiser usar essa chave e conjunto de chaves, ignore esta secção. Caso contrário, use estas instruções para criar a chave e o conjunto de chaves do Cloud KMS.
-
O conjunto de chaves tem de estar na região que contém os recursos do Cloud Tasks que quer proteger. Para mais informações, consulte as localizações do Cloud KMS e as localizações do Cloud Tasks.
O conjunto de chaves e os recursos do Cloud Tasks protegidos pela CMEK podem estar no mesmo projeto, mas para limitar o acesso às suas chaves do Cloud KMS, considere configurar o Cloud KMS num projeto separado.
Obtenha o ID de uma chave do Cloud KMS
O ID de recurso de uma chave do Cloud KMS é obrigatório quando ativa a CMEK para o Cloud Tasks.
Consola
Na Google Cloud consola, aceda à página Gestão de chaves e selecione o separador Inventário de chaves.
Para a chave cujo ID de recurso está a obter, 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 num determinado conjunto de chaves:
gcloud kms keys list --keyring=KEY_RING --location=LOCATION --project=PROJECT_ID
Substitua o seguinte:
KEY_RING: o nome do conjunto de chavesLOCATION: a região do conjunto de chavesPROJECT_ID: o ID do projeto que contém o conjunto de chaves
A saída inclui o ID da chave para cada chave. Por exemplo:
NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
Conceda ao agente do serviço Cloud Tasks acesso à chave
Tem de conceder ao agente de serviço do Cloud Tasks a função de encriptador/desencriptador de CryptoKey do Cloud KMS do Identity and Access Management (IAM) para que possa aceder à chave do Cloud KMS:
Consola
Na Google Cloud consola, aceda à página IAM (gestão de identidade e de acesso).
Selecione a caixa de verificação Incluir concessões de funções fornecidas pela Google.
Encontre a conta de serviço do Cloud Tasks escrevendo
cloudtasks.iam.gserviceaccount.comno 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 principal.
No painel apresentado, clique em Adicionar outra função.
Pesquise e selecione a função Encriptador/desencriptador de CryptoKey do Cloud KMS.
Clique em Guardar.
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 o seguinte:
KEY_ID: o ID do recurso totalmente qualificado da sua chave. Para obter instruções sobre como encontrar esta informação, consulte o artigo Obtenha 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 da versão da chave pode fazer com que este comando falhe.PROJECT_NUMBER: o número do seu Google Cloud projeto. Pode encontrar o número do projeto na página Boas-vindas da Google Cloud consola ou executando o seguinte comando:PROJECT=$(gcloud info --format='value(config.project)') gcloud projects describe ${PROJECT} --format=
-