Use chaves de encriptação geridas pelo cliente

Por predefinição, o Workflows encripta o conteúdo do cliente em repouso. Os fluxos de trabalho processam 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 (CMEKs) no Cloud KMS com serviços integrados com CMEK, incluindo o Workflows. 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 e autorizações de acesso, bem como limites criptográficos. A utilização do Cloud KMS também permite monitorizar a utilização das chaves, 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 Workflows é 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).

Pode proteger o seu fluxo de trabalho e os dados associados em repouso através de uma chave de encriptação à qual só tem acesso e que pode controlar e gerir através do Cloud KMS.

O que está protegido com a CMEK

Quando implementa um fluxo de trabalho, pode especificar uma chave do Cloud KMS. Esta chave é usada para encriptar o fluxo de trabalho e as respetivas execuções:

  • Um fluxo de trabalho requer um ficheiro de origem que contenha uma definição de fluxo de trabalho válida. Este ficheiro de origem está encriptado com a chave.

  • Uma execução do fluxo de trabalho executa a definição do fluxo de trabalho atual (uma revisão do fluxo de trabalho específica). A revisão do fluxo de trabalho compilado, bem como quaisquer dados de entrada, saída e de tempo de execução armazenados, são encriptados através da chave associada à revisão do fluxo de trabalho no momento da respetiva implementação. Isto inclui argumentos de execução, resultados, erros e exceções; eventos do Eventarc; e pedidos e respostas HTTP e de callback.

Antes de começar

Antes de usar as CMEK nos fluxos de trabalho, conclua os seguintes passos:

  1. Ative as APIs.

    Consola

    1. Enable the Cloud KMS and Workflows APIs.

      Enable the APIs

    gcloud

    1. In the Google Cloud console, activate Cloud Shell.

      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.

    2. Atualize os componentes gcloud.
      gcloud components update
    3. Ative as APIs Cloud KMS e Workflows para o projeto que vai armazenar as suas chaves de encriptação.
      gcloud services enable cloudkms.googleapis.com workflows.googleapis.com
  2. O Cloud KMS produz registos de auditoria do Cloud quando as chaves são ativadas, desativadas ou usadas por recursos dos Workflows 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.

  3. Crie um conjunto de chaves e uma chave do Cloud KMS

    Pode criar um novo conjunto de chaves ou usar um existente. No porta-chaves, pode adicionar uma nova chave ou usar uma chave existente.

    1. Crie um conjunto de chaves.

    2. Crie uma chave para um conjunto de chaves especificado.

    Obtenha o ID de recurso de uma chave do Cloud KMS

    O ID de recurso de uma chave do Cloud KMS é obrigatório quando ativa a CMEK para um fluxo de trabalho. Neste documento, consulte a secção Ative as CMEK para um fluxo de trabalho.

    Consola

    1. Na Google Cloud consola, aceda à página Gestão de chaves.

      Aceda à gestão de chaves

    2. Clique no conjunto de chaves que contém a chave.

    3. Para a chave cujo ID de recurso está a obter, clique em Mais.

    4. 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
      
    5. Uma chave contém zero ou mais versões da chave. O ID do recurso de uma versão da chave é o ID da chave, mais uma barra (/), mais o ID da versão. Para listar todas as versões de uma chave:

      1. Clique no nome da chave.
      2. Para uma versão específica, clique em Mais.
      3. Clique em Copiar nome do recurso.

    gcloud

    1. Liste todas as chaves num determinado conjunto de chaves:

      gcloud kms keys list --keyring RING_NAME --location LOCATION
      

      Substitua o seguinte:

      • RING_NAME: o nome do conjunto de chaves
      • LOCATION: a região do conjunto de chaves

      A saída inclui o ID do recurso para cada chave. Por exemplo:

      NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
      
    2. Uma chave tem zero ou mais versões da chave. O ID do recurso de uma versão da chave é o ID da chave, mais uma barra (/) e o ID da versão. Liste todas as versões de uma chave:

      gcloud kms keys versions list --location LOCATION --keyring RING_NAME --key KEY_NAME
      

      O resultado inclui o ID do recurso para cada versão da chave. Por exemplo:

      NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME/2
      

    Conceda ao agente de serviço do Workflows acesso à chave

    Tem de conceder ao agente de serviço dos Workflows 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

    Quando ativa a CMEK para um fluxo de trabalho através da consola, é-lhe pedido que conceda a função encriptar/desencriptar do CryptoKey do Cloud KMS à conta de serviço. Para mais informações, consulte a secção Ative a CMEK para um fluxo de trabalho neste documento.

    gcloud

    gcloud kms keys add-iam-policy-binding KEY_NAME \
        --keyring RING_NAME \
        --location LOCATION \
        --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-workflows.iam.gserviceaccount.com \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter

    Substitua o seguinte:

    • KEY_NAME: o nome da chave. Por exemplo, my-key.
    • RING_NAME: o nome do conjunto de chaves. Por exemplo, my-keyring.
    • LOCATION: a localização da chave. Por exemplo, us-central1.
    • 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:

      export PROJECT=$(gcloud info --format='value(config.project)')
      gcloud projects describe ${PROJECT} --format="value(projectNumber)"

    Enquanto o agente de serviço tiver a função roles/cloudkms.cryptoKeyEncrypterDecrypter, um fluxo de trabalho no seu projeto pode encriptar e desencriptar os respetivos dados através da chave CMEK. Se revogar esta função ou desativar ou destruir a chave CMEK, não é possível aceder a esses dados. Neste documento, consulte a secção Desative o Cloud KMS.

    Ative as CMEK para um fluxo de trabalho

    Quando criar um fluxo de trabalho ou atualizá-lo posteriormente, pode especificar a chave do Cloud KMS que o fluxo de trabalho deve usar para a encriptação de dados.

    Consola

    1. Na Google Cloud consola, aceda à página Fluxos de trabalho.

      Aceda a Fluxos de trabalho

    2. Clique no nome do fluxo de trabalho que quer atualizar.

      É apresentada a página Detalhes dos fluxos de trabalho.

    3. Clique em Editar.

    4. Selecione Chave do Cloud KMS.

    5. Selecione um Tipo de chave.

      Pode gerir as suas chaves manualmente ou usar a Autokey, que lhe permite gerar conjuntos de chaves e chaves a pedido. Se a opção Autokey estiver desativada, ainda não está integrada com o tipo de recurso atual.

    6. Na lista Selecionar uma chave do Cloud KMS, selecione ou filtre uma chave do Cloud KMS.

    7. Opcional: para introduzir manualmente o nome do recurso da chave, na lista Selecione uma chave gerida pelo cliente, clique em Introduzir chave manualmente e introduza o nome do recurso da chave no formato especificado.

    8. Se lhe for pedido, conceda a função cloudkms.cyptoKeyEncrypterDecrypter à conta de serviço do Workflows com a função workflows.serviceAgent.

    9. Clicar em Seguinte.

    10. Para guardar as alterações e implementar o fluxo de trabalho atualizado, clique em Implementar.

    gcloud

    gcloud workflows deploy WORKFLOW_NAME \
        --source=SOURCE_FILE \
        --kms-key=KEY \
        --location LOCATION \
        --service-account=SERVICE_ACCOUNT

    Substitua o seguinte:

    • WORKFLOW_NAME: o nome do seu fluxo de trabalho
    • SOURCE_FILE: o ficheiro de origem do fluxo de trabalho com uma extensão de ficheiro yaml para um ficheiro YAML ou com uma extensão de ficheiro json para um ficheiro JSON; por exemplo, myWorkflow.yaml.
    • KEY: o ID de recurso da chave no formato projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME. Pode obter o ID da chave.

    • LOCATION: a localização do fluxo de trabalho

    • SERVICE_ACCOUNT: a conta de serviço que o fluxo de trabalho vai usar para aceder a outros serviços da Google Cloud ; por exemplo, SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com. Recomendamos vivamente que use uma conta de serviço com o mínimo de privilégios necessários para aceder aos recursos necessários. Se deixar em branco, é usada a conta de serviço predefinida. Para mais informações, consulte o artigo Conceda uma autorização de fluxo de trabalho para aceder a Google Cloud recursos.

    Tenha em conta o seguinte:

    • As revisões e as execuções do fluxo de trabalho são encriptadas com a chave especificada no momento da implementação. Os recursos encriptados anteriormente com uma chave anterior permanecem encriptados com essa chave anterior. Se um fluxo de trabalho for editado posteriormente e for especificada uma nova chave, essa revisão do fluxo de trabalho é encriptada com a nova chave, e todas as execuções subsequentes usam a nova chave.
    • As revisões e as execuções de fluxos de trabalho encriptados anteriormente sem CMEK permanecem não encriptadas.
    • Se desativar as CMEK para uma revisão do fluxo de trabalho, as execuções subsequentes são criadas sem encriptação CMEK. Neste documento, consulte a secção Desative as CMEK para um fluxo de trabalho. As revisões e as execuções do fluxo de trabalho existentes permanecem encriptadas com as chaves com as quais foram encriptadas anteriormente.

    Valide a integração do Cloud KMS

    Pode validar a integração da CMEK apresentando os metadados de um fluxo de trabalho.

    Consola

    1. Na Google Cloud consola, aceda à página Fluxos de trabalho.

      Aceda a Fluxos de trabalho

    2. Clique no nome do fluxo de trabalho que quer validar.

      É apresentada a página Detalhes dos fluxos de trabalho.

    3. Clique no separador Detalhes.

      O valor Encriptação apresenta o ID do recurso da chave do Cloud KMS usada para proteger o fluxo de trabalho e a respetiva execução.

    gcloud

    gcloud workflows describe WORKFLOW_NAME \
        --location=LOCATION

    O resultado deve ser semelhante ao seguinte:

    createTime: '2022-08-10T19:57:58.233177709Z'
    cryptoKeyName: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
    name: projects/PROJECT_NAME/locations/LOCATION/workflows/WORKFLOW_NAME
    revisionCreateTime: '2022-11-18T19:44:04.933633237Z'
    revisionId: 000009-8be
    serviceAccount: projects/PROJECT_NAME/serviceAccounts/SA_NAME@PROJECT_NAME.iam.gserviceaccount.com
    sourceContents:
    [...]
    state: ACTIVE
    updateTime: '2022-11-18T19:44:05.171793128Z'
    

    O valor de cryptokeyName é o ID do recurso da chave do Cloud KMS usada para proteger o fluxo de trabalho e a respetiva execução.

    Desative as CMEK para um fluxo de trabalho

    Pode desativar a CMEK para um fluxo de trabalho para que deixe de usar a chave do Cloud KMS associada.

    Consola

    1. Na Google Cloud consola, aceda à página Fluxos de trabalho.

      Aceda a Fluxos de trabalho

    2. Clique no nome do fluxo de trabalho que quer atualizar.

      É apresentada a página Detalhes dos fluxos de trabalho.

    3. Clique em Editar.

    4. Para desmarcar o botão de opção Chave do Cloud KMS, selecione Google-managed encryption key.

    5. Clicar em Seguinte.

    6. Para guardar as alterações e implementar o fluxo de trabalho atualizado, clique em Implementar.

    gcloud

    gcloud workflows deploy WORKFLOW_NAME \
        --source=SOURCE_FILE \
        --clear-kms-key \
        --service-account=SERVICE_ACCOUNT

    Isto desativa a CMEK para a revisão do fluxo de trabalho atual e todas as execuções subsequentes são criadas sem encriptação CMEK. As revisões e as execuções do fluxo de trabalho existentes permanecem encriptadas com as chaves com as quais foram encriptadas anteriormente.

    Desative o Cloud KMS

    Se quiser revogar o acesso aos dados do seu fluxo de trabalho ou execuções do fluxo de trabalho, pode fazer qualquer uma das seguintes ações para desativar o Cloud KMS:

    • Desative ou destrua a versão da chave principal da sua chave de encriptação gerida pelo cliente. A desativação de uma versão de chave CMEK suspende o acesso a todos os dados protegidos por essa versão de chave. A destruição de uma versão da chave é a contrapartida permanente desta ação. Ambos afetam apenas os fluxos de trabalho e as execuções de fluxos de trabalho associados à chave específica. Não pode criar novas execuções nem ver os recursos associados à chave desativada ou destruída. Todas as execuções ativas vão falhar com uma mensagem de erro correspondente.

    • Revogue a função do IAM do agente do serviço Workflows.cloudkms.cryptoKeyEncrypterDecrypter Isto afeta todos os fluxos de trabalho no Google Cloud projeto que suportam a encriptação através da CMEK. Não pode criar novos fluxos de trabalho e execuções integrados com CMEK, nem ver recursos encriptados com CMEK. Todas as execuções ativas vão falhar com uma mensagem de erro correspondente.

    Embora nenhuma das operações garanta a revogação instantânea do acesso, as alterações do IAM propagam-se geralmente mais rapidamente. Para mais informações, consulte os artigos Consistência dos recursos do Cloud KMS e Propagação das alterações de acesso.

    Resolução de problemas

    Pode encontrar erros quando usar o Cloud KMS com os Workflows. A tabela seguinte descreve diferentes problemas e como resolvê-los.

    Problema Descrição
    A autorização cloudkms.cryptoKeyVersions.useToEncrypt foi recusada A chave do Cloud KMS fornecida não existe ou a autorização não está configurada corretamente.

    Solução:

    A versão da chave não está ativada A versão da chave do Cloud KMS fornecida foi desativada.

    Solução: reative a versão da chave do Cloud KMS.

    A região do conjunto de chaves não corresponde ao recurso a proteger A região do conjunto de chaves do KMS fornecida é diferente da região do fluxo de trabalho.

    Solução: use um conjunto de chaves do Cloud KMS e um fluxo de trabalho protegido da mesma região. (Tenha em atenção que podem estar em projetos diferentes.) Para mais informações, consulte as localizações do Cloud KMS e as localizações dos fluxos de trabalho.

    O limite da quota do Cloud KMS foi excedido Atingiu o limite da quota de pedidos do Cloud KMS.

    Solução: limite o número de chamadas do Cloud KMS ou aumente o limite de quotas. Para mais informações, consulte as cotas do Cloud KMS.

    Como é processado um estado de chave indisponível

    Se, por algum motivo, o Cloud KMS estiver indisponível, os fluxos de trabalho podem não conseguir obter o estado da sua chave do Cloud KMS.

    Se o estado da chave estiver indisponível, o fluxo de trabalho ou a respetiva execução devolve um valor state: UNAVAILABLE e detalhes relacionados no campo stateError.

    Se o estado da chave ficar indisponível durante a execução de um fluxo de trabalho (por exemplo, uma autorização é revogada durante uma chamada de retorno), ocorre um erro de tempo de execução, que devolve um valor state: FAILED e detalhes relacionados no campo error.

    Preços

    Esta integração não incorre em custos adicionais além das operações principais, que são faturadas ao seu projeto Google Cloud . Para ver informações de preços atuais, consulte os preços do Cloud KMS.