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 Run 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 a 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 Run 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.
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 Run functions se aplica apenas aos recursos do Cloud Run functions gerenciados pelo Google. Você é responsável por proteger dados e recursos gerenciados por você, como os repositórios de código-fonte, os canais de eventos que estão no projeto do cliente ou quaisquer serviços usados pelas funções.
A configuração de CMEK para o Cloud Run functions envolve o seguinte:
Conceder às contas de serviço necessárias acesso à chave:
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
Crie uma chave de região única para criptografar suas funções. Para saber como criar uma chave, consulte Como criar chaves simétricas.
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.
Para funções 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 de serviço de funções do Cloud Run (
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
)
Além disso, conceda acesso à chave à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
Acesse a página do Cloud Key Management Service no Console do Google Cloud:
Acessar a página do Cloud KMSClique no nome do keyring que contém a chave escolhida.
Clique no nome da chave para visualizar os detalhes dela.
Na guia Permissões, clique em Conceder acesso.
No campo Novos participantes, insira os endereços de e-mail das três contas de serviço discutidos anteriormente para atribuir permissões às três contas de uma só vez.
No menu Selecionar um papel, escolha Criptografador/descriptografador do Cloud KMS CryptoKey.
Clique em Salvar.
gcloud
Para cada conta de serviço discutida 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:
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.
Como ativar CMEK para uma função
Depois de configurar um repositório do Artifact Registry com CMEK ativada e conceder ao Cloud Run functions acesso à sua chave, você estará pronto para ativar a CMEK para sua função.
Para ativar CMEK para uma função:
Console
Acesse a página de funções do Cloud Run no console do Google Cloud:
Acessar a página de funções do Cloud RunClique no nome da função em que você quer ativar as CMEKs.
Clique em Editar.
Clique em Ambiente de execução, build... para expandir as opções de configuração avançada.
Selecione a guia Repositório de imagens e segurança.
Na seção Criptografia, selecione Chave de criptografia gerenciada pelo cliente (CMEK).
Selecione a chave escolhida no menu suspenso.
Em Local do contêiner, selecione Artifact Registry gerenciado pelo cliente.
No menu suspenso Artifact Registry, selecione o repositório protegido por CMEKs.
Clique em Próxima.
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 um Cloud Run function.
CMEK está ativada para a função.
O Cloud Run 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 Run 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:
Desative a chave usada para proteger a função.
Tente conferir o código-fonte associado a esta função. A tentativa falhará.
Tente acionar a função protegida por CMEK. A tentativa falhará.
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
- Saiba como alternar as chaves.
- Saiba mais sobre a criptografia padrão do Google.
- Saiba mais sobre a CMEK.
- Saiba mais sobre as políticas da organização de CMEK.