Nesta página, descrevemos como criptografar conteúdo armazenado em plug-ins do Service Extensions com chaves de criptografia gerenciadas pelo cliente (CMEK).
Visão geral
Por padrão, o Service Extensions criptografa o conteúdo do cliente em repouso. O Service Extensions processa a criptografia para você sem nenhuma ação adicional da sua parte. Essa opção é chamada de criptografia padrão do Google.
Se você quiser controlar suas chaves de criptografia, use chaves de criptografia gerenciadas pelo cliente (CMEKs) no Cloud KMS com serviços integrados a CMEKs, incluindo Service Extensions. Ao usar chaves do Cloud KMS, é possível controlar o nível de proteção, o local, a programação de rotação, as permissões de uso e acesso e os limites criptográficos. Com o Cloud KMS, também é possível visualizar registros de auditoria e controlar ciclos de vida de chaves. Em vez de o Google ser proprietário e gerente de chaves de criptografia de chaves (KEKs) simétricas que protegem seus dados, você controla e gerencia essas chaves no Cloud KMS.
Depois de configurar os recursos com CMEKs, a experiência de acesso aos recursos do Service Extensions é semelhante à criptografia padrão do Google. Para saber mais sobre suas opções de criptografia, consulte Chaves de criptografia gerenciadas pelo cliente (CMEK).
Todas as operações criptográficas são faturadas para o Google Cloud projeto que possui a chave, independentemente do tipo de chave. Para informações sobre preços, consulte Preços do Cloud KMS.
Criar uma chave e conceder permissões
As instruções a seguir explicam como criar uma chave para um plug-in e conceder permissões para criptografar e descriptografar dados de plug-in com a chave.
No Google Cloud projeto em que você quer gerenciar as chaves, faça o seguinte:
Para criar uma chave, ative a API Cloud Key Management Service.
Crie um keyring e uma chave usando uma das seguintes opções:
O local da chave do Cloud KMS precisa corresponder ao local do plug-in que você quer criptografar.
A conta de serviço do Service Extensions precisa existir no projeto do Service Extensions. O nome da conta de serviço é
service-PROJECT_NUMBER@gcp-sa-networkactions.iam.gserviceaccount.com, em quePROJECT_NUMBERé o número do projeto do Google Cloud projeto em que o Service Extensions está em execução.A conta de serviço é criada automaticamente quando você cria o primeiro plug-in no projeto do Service Extensions. Se você ainda não criou um plug-in no projeto, crie a conta de serviço executando o seguinte comando:
gcloud beta services identity create \ --service=networkactions.googleapis.com \ --project=PROJECTSubstitua PROJECT pelo ID do projeto em que Service Extensions está em execução.
Conceda o papel Criptografador/Descriptografador do Cloud KMS CryptoKey (
roles/cloudkms.cryptoKeyEncrypterDecrypter) à conta de serviço do Service Extensions na chave que você criou.Console
No console do Google Cloud , acesse a página Gerenciamento de chaves.
Selecione a chave que você criou.
Conceda acesso à conta de serviço do Service Extensions:
- Selecione Mostrar painel de informações.
- Clique em Adicionar membro.
- Adicione a conta de serviço do Service Extensions. A
conta de serviço é
service-PROJECT_NUMBER@gcp-sa-networkactions.iam.gserviceaccount.com. - Em Selecionar uma função, selecione Cloud KMS > Criptografador/descriptografador do Cloud KMS CryptoKey
- Clique em Salvar.
Repita a etapa anterior para conceder acesso à conta do criador do plug-in.
Retorne à página Gerenciamento de chaves e selecione a chave novamente.
Selecione Mostrar painel de informações. Você verá os papéis na coluna Papel/membro.
gcloud
Conceda acesso à conta de serviço do Service Extensions executando o
gcloud kms keys add-iam-policy-bindingcomando:gcloud kms keys add-iam-policy-binding [--project=PROJECT] KEY_NAME \ --location LOCATION --keyring=KEYRING_NAME \ --member=serviceAccount:service-PROJECT-NUMBER@gcp-sa-networkactions.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypterSubstitua:
PROJECT: o ID do projeto que contém a chaveKEY_NAME: o nome da chaveLOCATION: a localização da chaveKEYRING_NAME: o nome do keyringPROJECT-NUMBER: o número do projeto do Google Cloud projeto
Repita a etapa anterior com
memberdefinido como a conta do criador do plug-in.
Ao criar um plug-in ou atualizá-lo, especifique a chave CMEK. A chave fornece criptografia para a imagem do plug-in e os dados de configuração. Outros dados do plug-in são protegidos pela criptografia padrão do Google.
Recriptografia automática
Quando a versão principal da chave do KMS muda (por uma alteração manual do usuário ou por rotação automática), os dados do plug-in protegidos pela chave são recriptografados automaticamente com a nova versão da chave.
Rastreamento de chaves
É possível usar o rastreamento de chaves para listar os recursos de plug-in que uma chave protege. Para mais informações, consulte Conferir o uso de chaves.
Cotas do Cloud Key Management Service e Service Extensions
Ao usar chaves CMEK em Service Extensions, como nas operações a seguir, seus projetos podem consumir cotas de solicitações criptográficas do Cloud KMS:
- Criar ou atualizar um plug-in protegido por CMEK
- Adicionar novas versões ou mudar a versão principal de plug-ins protegidos por CMEK
- Listar versões de plug-ins protegidos por CMEK que têm o campo
plugin_config_datadefinido - Anexar um plug-in à extensão
Os plug-ins anexados também incorrem em operações de descriptografia ao longo do tempo.
Se você usar chaves de hardware (Cloud HSM) ou externas (Cloud EKM), as operações de criptografia e descriptografia que usam chaves CMEK afetarão as cotas do Cloud KMS.
Remover o acesso a um plug-in criptografado por CMEK
Há várias maneiras de remover o acesso a um plug-in criptografado por CMEK:
- Revogue o papel de criptografador/descriptografador do CryptoKey do Cloud KMS da conta de serviço do Service Extensions usando o Google Cloud console ou a CLI gcloud. As alterações nas permissões entram em vigor em segundos, mas pode levar dezenas de minutos até que todas as réplicas de veiculação de um plug-in parem de veicular tráfego depois que a chave for revogada.
- Desative temporariamente a chave de criptografia gerenciada pelo cliente.
- Destruir permanentemente a chave CMEK.
Recomendamos revogar as permissões da conta de serviço do Service Extensions antes de desativar ou destruir uma chave.
Implicações da remoção do acesso
Os dados protegidos por CMEK consistem em imagens transferidas por download do Artifact Registry, bem como em dados de configuração de plug-in fornecidos diretamente (pelo campo plugin_config_data).
Depois de desativar ou destruir a chave de criptografia de um plug-in, todos os dados do plug-in protegidos por CMEK ficam inacessíveis em minutos. Pode levar dezenas de minutos até que todas as réplicas de veiculação de um plug-in parem de veicular tráfego depois que a chave for revogada.
Os metadados do plug-in, como nome, descrição, rótulos ou configuração de registro, permanecem acessíveis.
Como consequência, a remoção do acesso a uma chave que protege um plug-in ativo (ou seja, um plug-in anexado a uma extensão) faz com que o plug-in não possa veicular tráfego. Todas as solicitações ao plug-in falham.
Quando a invocação do plug-in falha, o comportamento da extensão depende do campo fail_open:
- Se o campo estiver definido como
true, a solicitação vai para o serviço de destino, sem indicar que a invocação do plug-in falhou. - Se o campo estiver definido como
false, a solicitação não vai para o serviço de destino.
Limitações
A proteção CMEK definida em um plug-in é restrita a Service Extensions.
Para proteger recursos de plug-in em outros produtos do Google, ative a CMEK neles. Para as imagens de plug-in enviadas ao Artifact Registry, configure a CMEK para o Artifact Registry. Para proteger os registros gerados pelo plug-in, configure a CMEK para o Cloud Logging.
Não é possível mudar o modo de criptografia (gerenciado pelo Google ou CMEK) de um plug-in. No entanto, é possível atualizar o plug-in para usar uma chave do KMS diferente.
Somente plug-ins regionais são compatíveis. Além disso, os plug-ins só podem ser criptografados por uma chave na mesma região do plug-in.
A seguir
- Saiba mais sobre como criar um plug-in.
- Saiba mais sobre CMEK.
- Saiba mais sobre a criptografia padrão em repouso.