Proteja os seus dados com a CMEK

Esta página fornece informações suplementares para proteger os seus dados com chaves de encriptação geridas pelo cliente (CMEKs) para funções criadas através de comandos gcloud functions ou da API Cloud Functions v2.

Para uma descrição detalhada das CMEK, incluindo a configuração manual, a utilização do Autokey e o teste da proteção CMEK, consulte a documentação do Cloud Run.

Os seguintes tipos de dados das funções do Cloud Run são encriptados quando usa uma CMEK:

  • Código fonte da função carregado para implementação e armazenado pela Google no Cloud Storage, usado no processo de compilação.
  • Os resultados do processo de criação de funções, incluindo:
    • A imagem do contentor criada a partir do código fonte da sua função.
    • Cada instância da função implementada.

O próprio processo de criação da função está protegido por uma chave efémera gerada exclusivamente para cada criação. Consulte o artigo Conformidade com a CMEK no Cloud Build para mais informações. Além disso, tenha em atenção o seguinte:

  • Os metadados dos ficheiros, como os caminhos do sistema de ficheiros ou as datas/horas de modificação, não são encriptados.

  • Se uma chave estiver desativada, não é possível implementar a imagem do contentor nem iniciar novas instâncias.

  • A proteção CMEK das funções do Cloud Run aplica-se apenas aos recursos das funções do Cloud Run geridos pela Google. É responsável pela proteção dos dados e dos recursos geridos por si, como os repositórios de código fonte, os canais de eventos que residem no projeto do cliente ou quaisquer serviços usados pelas suas funções.

Antes de começar

  1. Crie uma chave de região única para usar na encriptação das suas funções. Para saber como criar uma chave, consulte o artigo Criar chaves de encriptação simétrica.

  2. Crie um repositório do Artifact Registry com as CMEK ativadas. Tem de usar a mesma chave para o repositório do Artifact Registry que usa quando ativa as CMEK para uma função.

  3. Para funções baseadas em eventos, siga os passos de configuração adicionais descritos em Ative as CMEK para um canal Google.

Conceder às contas de serviço acesso à chave

Para todas as funções, tem de conceder acesso à chave às seguintes contas de serviço:

  • Agente de serviço de funções do Cloud Run (service-PROJECT_NUMBER@gcf-admin-robot.)

  • Agente de serviço do Artifact Registry (service-PROJECT_NUMBER@gcp-sa-artifactregistry.)

  • Agente de serviço do Cloud Storage (service-PROJECT_NUMBER@gs-project-accounts.)

  • Agente de serviço do Cloud Run (service-PROJECT_NUMBER@serverless-robot-prod.)

  • Agente do serviço Eventarc (service-PROJECT_NUMBER@gcp-sa-eventarc.)

Para conceder a estas contas de serviço acesso à chave, adicione cada conta de serviço como um principal da chave e, em seguida, conceda à conta de serviço a função Cloud KMS CryptoKey Encrypter/Decrypter:

Consola

  1. Aceda à página Cloud Key Management Service na Google Cloud consola:
    Aceda à página Cloud KMS

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

  3. Clique no nome da chave para ver os detalhes da chave.

  4. No separador Autorizações, clique em Conceder acesso.

  5. No campo Novos membros, introduza os endereços de email das três contas de serviço abordadas anteriormente para atribuir autorizações às três contas em simultâneo.

  6. No menu Selecionar uma função, selecione Encriptador/desencriptador de CryptoKey do Cloud KMS.

  7. Clique em Guardar.

gcloud

Para cada conta de serviço abordada anteriormente, execute o seguinte comando:

gcloud kms keys add-iam-policy-binding KEY \
  --keyring KEY_RING \
  --location LOCATION \
  --member serviceAccount:SERVICE_AGENT_EMAIL \
  --role roles/cloudkms.cryptoKeyEncrypterDecrypter

Substitua o seguinte:

  • KEY: o nome da chave. Por exemplo, my-key.

  • KEY_RING: o nome do conjunto de chaves. Por exemplo, my-keyring.

  • LOCATION: a localização da chave. Por exemplo, us-central1.

  • SERVICE_AGENT_EMAIL: o endereço de email da conta de serviço.

Ativar as CMEK para uma função

Depois de configurar um repositório do Artifact Registry com a CMEK ativada e conceder às funções do Cloud Run acesso à sua chave, está tudo pronto para ativar a CMEK para a sua função.

Para ativar as CMEK para uma função, execute o seguinte comando:

gcloud functions deploy FUNCTION \
    --kms-key=KEY \
    --docker-repository=REPOSITORY \
    --source=YOUR_SOURCE_LOCATION
    FLAGS...
 

Substitua o seguinte:

  • FUNCTION: o nome da função para ativar as CMEK. Por exemplo, cmek-function.

  • KEY: o nome da chave totalmente qualificado, no seguinte formato: projects/PROJECT_NAME/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME.

  • REPOSITORY: o nome do repositório do Artifact Registry totalmente qualificado, no seguinte formato: projects/PROJECT_NAME/locations/LOCATION/repositories/REPOSITORY.

  • YOUR_SOURCE_LOCATION: quando ativa a CMEK para uma função pré-existente, certifique-se de que o código fonte pretendido está a ser reimplementado especificando este parâmetro explicitamente.

  • FLAGS...: flags adicionais que podem ser necessárias para implementar a sua função, especialmente para implementações de criação. Para ver detalhes, consulte o artigo Implemente uma função do Cloud Run.

As CMEK estão ativadas para a função. Opcionalmente, ative as políticas de organização CMEK para aplicar a conformidade com as CMEK a todas as novas funções.

Tenha em atenção que as funções do Cloud Run usam sempre a versão principal de uma chave para proteção CMEK. Não pode especificar uma versão da chave específica para usar quando ativa o CMEK para as suas funções.

Se uma chave for destruída ou desativada, ou se as autorizações necessárias na mesma forem revogadas, as instâncias ativas das funções protegidas por essa chave não são encerradas. As execuções de funções já em curso continuam a ser executadas, mas as novas execuções falham enquanto as funções do Cloud Run não tiverem acesso à chave.