Nesta página, descrevemos como criar novos secrets com chaves de criptografia gerenciadas pelo cliente (CMEK) e atualizar os secrets atuais para usar chaves CMEK.
Visão geral
A CMEK adiciona uma camada extra de segurança e controle aos seus dados sensíveis armazenados como secrets regionais. Você pode usar a CMEK para atingir as seguintes metas:
- Ter controle total sobre as chaves de criptografia usadas para proteger seus secrets.
- Use seu próprio sistema de gerenciamento de chaves com políticas de segurança, recursos de auditoria e conformidade potencialmente mais rigorosos.
- Mantenha as chaves na sua própria infraestrutura para obedecer às regulamentações de soberania de dados.
- Defina controles de acesso refinados para suas chaves de criptografia, especificando quem pode usá-las e para quais fins.
Limitações:
O uso da CMEK com secrets regionais tem as seguintes limitações:
- O Cloud Key Management Service Autokey (prévia) não é compatível com secrets regionais.
- O local da chave de CMEK precisa ser o mesmo do segredo regional.
Antes de começar
- Ative a API Secret Manager, uma vez por projeto.
- Atribua o papel de administrador do Secret Manager (
roles/secretmanager.admin
) no projeto, na pasta ou na organização. Autentique-se na API Secret Manager de uma das seguintes maneiras:
- Se você usar bibliotecas de cliente para acessar a API Secret Manager, configure as Application Default Credentials.
- Se você usar a Google Cloud CLI para acessar a API Secret Manager, use suas credenciais da CLI gcloud para autenticar.
- Para autenticar uma chamada REST, use as credenciais da Google Cloud CLI ou Application Default Credentials.
Para ativar a CMEK e criar as chaves e os keyrings necessários para esta etapa, consulte Ativar chaves de criptografia gerenciadas pelo cliente para o Secret Manager.
Criar um secret regional com criptografia CMEK
Para criar um novo secret com criptografia CMEK, use um dos seguintes métodos:
Console
-
No console Google Cloud , acesse a página Secret Manager.
-
Na página Secret Manager, clique na guia Secrets regionais e em Criar secret regional.
-
Na página Criar secret regional, insira um nome para o secret no campo Nome. O nome do secret pode conter letras maiúsculas e minúsculas, numerais, hifens e sublinhados. O comprimento máximo permitido para um nome é de 255 caracteres.
-
Insira um valor para o secret (por exemplo,
abcd1234
). O valor pode estar em qualquer formato, mas não pode ultrapassar 64 KiB. Também é possível fazer upload de um arquivo de texto com o valor do secret usando a opção Fazer upload do arquivo. Essa ação cria automaticamente a versão do secret. -
Escolha o local em que você quer armazenar o secret regional na lista Região.
-
Em Criptografia, selecione Chave de criptografia gerenciada pelo cliente (CMEK) e escolha sua chave na lista Chave de criptografia. Verifique se a chave da CMEK existe no local especificado e se o projeto do Secret Manager tem as permissões necessárias para usar a chave.
-
Clique em Criar secret.
gcloud
Antes de usar os dados do comando abaixo, faça estas substituições:
- SECRET_ID: o ID do secret ou o identificador totalmente qualificado do secret.
- LOCATION: o Google Cloud local em que você quer criar o secret.
- CMEK_KEY: o caminho totalmente qualificado para a chave CMEK específica no Cloud Key Management Service que vai proteger o secret.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud secrets create SECRET_ID --location=LOCATION \ --regional-kms-key-name=CMEK_KEY
Windows (PowerShell)
gcloud secrets create SECRET_ID --location=LOCATION ` --regional-kms-key-name=CMEK_KEY
Windows (cmd.exe)
gcloud secrets create SECRET_ID --location=LOCATION ^ --regional-kms-key-name=CMEK_KEY
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION: o Google Cloud local em que você quer criar o secret.
- PROJECT_ID: o ID do projeto do Google Cloud .
- SECRET_ID: o ID do secret ou o identificador totalmente qualificado do secret.
- KMS_PROJECT_ID: o ID do seu projeto Google Cloud que está executando o Cloud Key Management Service.
- KMS_KEY_LOCATION: o nome do local da chave do Cloud KMS. Precisa ser o mesmo local do secret.
- YOUR_KEY_RING: o nome do keyring no Cloud KMS em que você armazenou a chave CMEK.
- YOUR_CMEK_KEY: a chave de criptografia gerenciada pelo cliente (CMEK) específica que você criou no keyring escolhido no Cloud KMS.
Método HTTP e URL:
POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID
Corpo JSON da solicitação:
{"customer_managed_encryption": {"kms_key_name": "projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"}}
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID"
PowerShell
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID" | Select-Object -Expand Content
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-03-27T13:30:07.437859Z", "etag": "\"1614a467b60423\"" "customerManagedEncryption": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key" } }
Atualizar um secret para usar a CMEK
Para atualizar um secret e usar a CMEK, use um dos seguintes métodos:
Console
-
No console Google Cloud , acesse a página Secret Manager.
-
Na página Secret Manager, clique na guia Secrets regionais.
-
Para editar um secret, use um dos seguintes métodos:
-
Localize o secret na lista e clique no menu
Ações associado a ele. No menu Ações, clique em Editar. -
Clique no nome do secret para acessar a página de detalhes. Na página de detalhes do secret, clique em
Editar secret.
-
-
Na página Editar secret, acesse a seção Criptografia.
-
Em Criptografia, selecione Chave de criptografia gerenciada pelo cliente (CMEK) e escolha sua chave de CMEK na lista Chave de criptografia. Verifique se a chave da CMEK existe no local especificado e se o projeto do Secret Manager tem as permissões necessárias para usar a chave.
-
Clique em Atualizar secret.
gcloud
Antes de usar os dados do comando abaixo, faça estas substituições:
- SECRET_ID: o ID do secret ou o identificador totalmente qualificado do secret.
- LOCATION: o Google Cloud local do secret
- CMEK_KEY: o caminho totalmente qualificado para a chave CMEK específica no Cloud Key Management Service que vai proteger o secret.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud secrets update SECRET_ID --location=LOCATION \ --regional-kms-key-name=CMEK_KEY
Windows (PowerShell)
gcloud secrets update SECRET_ID --location=LOCATION ` --regional-kms-key-name=CMEK_KEY
Windows (cmd.exe)
gcloud secrets update SECRET_ID --location=LOCATION ^ --regional-kms-key-name=CMEK_KEY
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION: o Google Cloud local do secret.
- PROJECT_ID: o ID do projeto do Google Cloud .
- SECRET_ID: o ID do secret ou o identificador totalmente qualificado do secret.
- KMS_PROJECT_ID: o ID do seu projeto Google Cloud que está executando o Cloud Key Management Service.
- KMS_KEY_LOCATION: o local da sua chave do Cloud KMS. Precisa ser o mesmo local do secret.
- YOUR_KEY_RING: o nome do keyring no Cloud KMS em que você armazenou a chave CMEK.
- YOUR_CMEK_KEY: a chave de criptografia gerenciada pelo cliente (CMEK) específica que você criou no keyring escolhido no Cloud KMS.
Método HTTP e URL:
PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=customer_managed_encryption
Corpo JSON da solicitação:
{"customer_managed_encryption": {"kms_key_name": "projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"}}"
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=customer_managed_encryption"
PowerShell
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=customer_managed_encryption" | Select-Object -Expand Content
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-03-27T13:30:07.437859Z", "etag": "\"16211daf5f29c5\"" "customerManagedEncryption": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key" } }