Adicionar criptografia CMEK a secrets regionais

Nesta página, descrevemos como criar novos secrets com chaves de criptografia de criptografia de chaves (CMEK) e atualizar secrets atuais para usar chaves CMEK.

Visão geral

A CMEK adiciona uma camada extra de segurança e controle sobre os dados sensíveis armazenados como secrets regionais. É possível usar a CMEK para atingir as seguintes metas:

  • Controle total sobre as chaves de criptografia usadas para proteger suas chaves secretas.
  • Use seu próprio sistema de gerenciamento de chaves com políticas de segurança, recursos de auditoria e recursos de compliance potencialmente mais rígidos.
  • Cumpra as regulamentações de soberania de dados mantendo as chaves na sua própria infraestrutura.
  • Defina controles de acesso detalhados para suas chaves de criptografia, especificando quem pode usá-las e para quais finalidades.

Limitações:

O uso de 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 usando uma das seguintes maneiras:

    • Se você usa bibliotecas de cliente para acessar a API Secret Manager, configure o Application Default Credentials.
    • Se você usa a CLI do Google Cloud para acessar a API Secret Manager, use suas credenciais da CLI do Google Cloud para autenticação.
    • Para autenticar uma chamada REST, use as credenciais da Google Cloud CLI ou o Application Default Credentials.
  4. Para ativar a CMEK e criar as chaves e os keyrings de CMEK necessários para esta etapa, consulte Ativar chaves de criptografia gerenciadas pelo cliente no 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. Acesse a página do Secret Manager no console do Google Cloud:

    Acessar o Secret Manager

  2. Na página do Secret Manager, clique na guia Secrets regionais e Clique 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 do secret pode estar em qualquer formato, mas não pode ser maior que 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 o secret regional será armazenado na lista Região.

  6. Em Criptografia, selecione Chave de criptografia gerenciada pelo cliente (CMEK) e escolha sua chave CMEK na lista Chave de criptografia. Verifique se a chave CMEK existe no local especificado e se o projeto do Secret Manager tem as permissões necessárias para usá-la.

  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 para o secret
  • LOCATION: o local do Google Cloud em que você quer criar o segredo
  • CMEK_KEY: o caminho totalmente qualificado para a chave CMEK específica no Cloud Key Management Service que 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 local do Google Cloud em que você quer criar o segredo.
  • PROJECT_ID: o ID do projeto do Google Cloud.
  • SECRET_ID: o ID do secret ou identificador totalmente qualificado para o secret.
  • KMS_PROJECT_ID: o ID do projeto do Google Cloud que está executando o Cloud Key Management Service.
  • KMS_KEY_LOCATION: o nome do local da chave do Cloud KMS. Precisa ser igual local como seu 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 atual para usar a CMEK

Para atualizar um secret para usar a CMEK, use um dos seguintes métodos:

Console

  1. Acesse a página do Secret Manager no console do Google Cloud:

    Acessar o Secret Manager

  2. Na página do 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 botão Ações associado a esse secret. 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 Selecione sua chave CMEK na lista Chave de criptografia. Verifique se a chave CMEK existe no local especificado e o projeto do Secret Manager tem as permissões permissões 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 do identificador totalmente qualificado
  • LOCATION: o local do Google Cloud do segredo
  • CMEK_KEY: o caminho totalmente qualificado para a chave CMEK específica no Cloud Key Management Service que vai proteger o segredo.

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 local do Google Cloud do segredo.
  • PROJECT_ID: o ID do projeto do Google Cloud.
  • SECRET_ID: o ID do secret ou identificador totalmente qualificado para o secret.
  • KMS_PROJECT_ID: o ID do projeto do Google Cloud que está executando o Cloud Key Management Service.
  • KMS_KEY_LOCATION: o local da chave do Cloud KMS. Precisa ser igual local como seu 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