Adicionar criptografia CMEK a secrets regionais

Esta página descreve como criar novos segredos com chaves de criptografia gerenciadas pelo cliente (CMEKs) e atualizar segredos 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 segredos regionais. É possível usar a CMEK para alcançar 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 da CMEK com segredos 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. Faça a autenticação na API Secret Manager de uma destas formas:

    • Se você usa bibliotecas de cliente para acessar a API Secret Manager, configure o Application Default Credentials.
    • Se você usa a Google Cloud CLI para acessar a API Secret Manager, use suas credenciais da Google Cloud CLI para autenticação.
    • 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 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 Secret Manager, clique na guia Regional secrets 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 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 vai ser armazenado na lista Região.

  6. Em Criptografia, selecione Chave de criptografia gerenciada pelo cliente (CMEK) e escolha a 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 do identificador totalmente qualificado
  • 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 vai proteger o segredo.

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 do identificador totalmente qualificado.
  • KMS_PROJECT_ID: o ID do seu projeto do Google Cloud que está executando o Cloud Key Management Service.
  • KMS_KEY_LOCATION: o nome do local da chave do Cloud KMS. Ele precisa estar no mesmo local que o 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 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 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, em seguida, selecione a 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.

  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 do identificador totalmente qualificado.
  • KMS_PROJECT_ID: o ID do seu projeto do Google Cloud que está executando o Cloud Key Management Service.
  • KMS_KEY_LOCATION: o local da chave do Cloud KMS. Ele precisa estar no mesmo local que o 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