Proteger seus dados com a CMEK

É possível usar as chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) do Cloud Key Management Service para proteger o Cloud Functions e os dados em repouso relacionados. Essas chaves são criadas e gerenciadas por meio do Cloud KMS e armazenadas como chaves de software, em um cluster do HSM ou externamente.

A implantação de uma função com uma CMEK protege os dados associados a ela usando uma chave de criptografia que está em seu controle total. Esse tipo de criptografia permite que você atenda aos requisitos de conformidade em determinados setores, como serviços financeiros. Como a chave CMEK pertence a você e não é controlada pelo Google, ninguém (incluindo você) pode acessar os dados protegidos por essas chaves de criptografia quando as chaves são desativadas ou destruídas.

Os seguintes tipos de dados do Cloud Functions são criptografados ao usar uma CMEK:

  • Código-fonte da função enviado para implantação e armazenado pelo Google no Cloud Storage, usado no processo de compilação.
  • Os resultados do processo de criação da função, incluindo:
    • A imagem do contêiner criada a partir do código-fonte da função.
    • Cada instância da função que está implantada.
  • Dados em repouso para canais internos de transporte de eventos (somente na 1ª geração).

O processo de compilação da função em si é protegido por uma chave temporária gerada exclusivamente para cada compilação. Consulte Conformidade com CMEK no Cloud Build para mais informações. Além disso:

  • Os metadados do arquivo, como caminhos de sistema de arquivos ou carimbos de data/hora de modificação, não são criptografados.

  • Se uma chave for desativada, a imagem do contêiner não poderá ser implantada e novas instâncias não poderão ser iniciadas.

  • A proteção de CMEK do Cloud Functions se aplica apenas aos recursos do Cloud Functions gerenciados pelo Google. Você é responsável por proteger dados e recursos gerenciados por você, como seus repositórios de código-fonte, canais de eventos que residem no projeto do cliente (somente 2ª geração) ou os serviços usados pelas suas funções.

A configuração de CMEK para o Cloud Functions envolve o seguinte:

  • Conceder às contas de serviço necessárias acesso à chave:

    • Para todas as funções, é preciso conceder acesso à chave às contas de serviço do Cloud Functions, Artifact Registry e Cloud Storage.

    • Somente para o Cloud Functions orientado por eventos (2ª geração), você também precisa concluir a configuração do CMEK para o Cloud Run e o Eventarc.

  • Como criar um repositório do Artifact Registry protegido por CMEK para armazenar as imagens de função.

  • Como ativar CMEK na sua função.

  • Se quiser, ative as políticas da organização da CMEK para impor todas as novas funções em conformidade com a CMEK.

Esses arquivos são descritos com mais detalhes abaixo.

Antes de começar

  1. Crie uma chave de região única para criptografar suas funções. Para saber como criar uma chave, consulte Como criar chaves simétricas.

  2. Crie um repositório do Artifact Registry com CMEK ativada. Use a mesma chave para o repositório do Artifact Registry que você usa ao ativar CMEK para uma função.

  3. Para funções de segunda geração orientadas a eventos, siga as etapas de configuração adicionais descritas em Ativar CMEK para um canal do Google.

Como conceder acesso à chave para as contas de serviço

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

  • Agente do serviço do Cloud Functions (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com)

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

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

Somente para a segunda geração, também é necessário conceder acesso às chaves às seguintes contas de serviço:

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

  • Agente de serviços de Eventarc (service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com)

Para conceder a essas contas de serviço acesso à chave, adicione cada conta de serviço como um principal da chave e conceda a ela o papel Cloud KMS CryptoKey Encrypter/Decrypter.

Console

  1. Acesse a página do Cloud Key Management Service no Console do Google Cloud:
    Acessar a página do Cloud KMS

  2. Clique no nome do keyring que contém a chave que você quer.

  3. Clique no nome da chave para visualizar os detalhes dela.

  4. Na guia Permissões, clique em Conceder acesso.

  5. No campo Novos participantes, insira os endereços de e-mail das três contas de serviço acima para atribuir permissões às três contas de uma só vez.

  6. No menu suspenso Selecionar um papel, escolha Criptografador/descriptografador do Cloud KMS CryptoKey.

  7. Clique em Save.

gcloud

Para cada conta de serviço acima, 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:

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

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

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

  • SERVICE_AGENT_EMAIL: o endereço de e-mail da conta de serviço.

a ele.

Como ativar CMEK para uma função

Depois de configurar um repositório do Artifact Registry com CMEK ativada e conceder ao Cloud Functions acesso à sua chave, você estará pronto para ativar a CMEK para sua função.

Para ativar CMEK para uma função:

Console

  1. Acesse a página do Cloud Functions no Console do Google Cloud:
    Acessar a página do Cloud Functions

  2. Clique no nome da função em que você quer ativar as CMEKs.

  3. Clique em Editar.

  4. Clique em Ambiente de execução, build... para expandir as opções de configuração avançada.

  5. Selecione a guia Repositório de imagens e segurança.

  6. Na seção Criptografia, selecione Chave de criptografia gerenciada pelo cliente (CMEK).

  7. Selecione a chave escolhida no menu suspenso.

  8. Em Local do contêiner, selecione Artifact Registry gerenciado pelo cliente.

  9. No menu suspenso Artifact Registry, selecione o repositório protegido por CMEKs.

  10. Clique em Próxima.

  11. Clique em Implantar.

gcloud

Execute o comando a seguir.

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

Substitua:

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

  • KEY: o nome da chave totalmente qualificada 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: ao ativar a CMEK para uma função preexistente, verifique se o código-fonte pretendido está sendo reimplantado especificando explicitamente esse parâmetro.

  • FLAGS...: sinalizações adicionais que podem ser necessárias para implantar a função, especialmente para criar implantações. Para detalhes, consulte Implantar uma Função do Cloud.

CMEK está ativada para a função.

O Cloud Functions sempre usa a versão primária de uma chave para proteção CMEK. Não é possível especificar uma versão de chave específica para usar ao ativar o CMEK para suas funções.

Se uma chave for destruída ou desativada ou as permissões necessárias forem revogadas, as instâncias ativas das funções protegidas por ela não serão encerradas. As execuções de funções em andamento vão continuar sendo executadas, mas as novas execuções vão falhar se o Cloud Functions não tiver acesso à chave.

Como testar a proteção CMEK

Para verificar se a proteção de CMEK está funcionando, desative a chave usada para ativá-la em uma função e, em seguida, tente acionar a função:

  1. Desative a chave usada para proteger a função.

  2. Tente conferir o código-fonte associado a esta função. A tentativa falhará.

  3. Tente acionar a função protegida por CMEK. A tentativa falhará.

  4. Depois de verificar se a proteção CMEK está funcionando, ative a chave.

A proteção CMEK da função agora está confirmada.

A seguir