Adicionar criptografia CMEK a secrets regionais

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:

Antes de começar

  1. Ative a API Secret Manager, uma vez por projeto.
  2. Atribua o papel de administrador do Secret Manager (roles/secretmanager.admin) no projeto, na pasta ou na organização.
  3. 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.
  4. 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

  1. No console Google Cloud , acesse a página Secret Manager.

    Acessar o Secret Manager

  2. Na página Secret Manager, clique na guia Secrets regionais e em Criar secret regional.

  3. 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.

  4. 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.

  5. Escolha o local em que você quer armazenar o secret regional na lista Região.

  6. 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.

  7. 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

  1. No console Google Cloud , acesse a página Secret Manager.

    Acessar o Secret Manager

  2. Na página Secret Manager, clique na guia Secrets regionais.

  3. 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.

  4. Na página Editar secret, acesse a seção Criptografia.

  5. 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.

  6. 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"
  }
}

A seguir