Adicione a encriptação CMEK a segredos regionais

Esta página descreve como pode criar novos segredos com chaves de encriptação geridas pelo cliente (CMEK) e atualizar os segredos existentes para usar chaves CMEK.

Vista geral

A CMEK adiciona uma camada adicional de segurança e controlo sobre os seus dados confidenciais armazenados como segredos regionais. Pode usar as CMEK para atingir os seguintes objetivos:

  • Ter controlo total sobre as chaves de encriptação usadas para proteger os seus segredos.
  • Use o seu próprio sistema de gestão de chaves com políticas de segurança potencialmente mais rigorosas, capacidades de auditoria e funcionalidades de conformidade.
  • Aja em conformidade com os regulamentos de soberania dos dados mantendo as chaves na sua própria infraestrutura.
  • Defina controlos de acesso detalhados para as suas chaves de encriptação, especificando quem as pode usar e para que fins.

Limitações:

A utilização de 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 a função 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 formas:

    • Se usar bibliotecas cliente para aceder à API Secret Manager, configure as Credenciais padrão da aplicação.
    • Se usar a CLI Google Cloud para aceder à Secret Manager API, use as suas credenciais da CLI Google Cloud para autenticar.
    • Para autenticar uma chamada REST, use as credenciais da CLI do Google Cloud ou as Credenciais padrão da aplicação.
  4. Para ativar a CMEK e criar as chaves CMEK e os conjuntos de chaves necessários para este passo, consulte o artigo Ative chaves de encriptação geridas pelo cliente para o Secret Manager.

Crie um segredo regional com encriptação CMEK

Para criar um novo segredo com encriptação CMEK, use um dos seguintes métodos:

Consola

  1. Na Google Cloud consola, aceda à página Secret Manager.

    Aceda ao Secret Manager

  2. Na página Secret Manager, clique no separador Segredos regionais e, de seguida, clique em Criar segredo regional.

  3. Na página Criar segredo regional, introduza um nome para o segredo no campo Nome. Um nome de secret pode conter letras maiúsculas e minúsculas, números, hífenes e sublinhados. O comprimento máximo permitido para um nome é de 255 carateres.

  4. Introduza um valor para o segredo (por exemplo, abcd1234). O valor do segredo pode estar em qualquer formato, mas não pode ser superior a 64 KiB. Também pode carregar um ficheiro de texto que contenha o valor secreto através da opção Carregar ficheiro. Esta ação cria automaticamente a versão do Secret.

  5. Escolha a localização onde quer que o seu segredo regional seja armazenado na lista Região.

  6. Em Encriptação, selecione Chave de encriptação gerida pelo cliente (CMEK) e, de seguida, escolha a sua chave CMEK na lista Chave de encriptação. Certifique-se de que a chave CMEK existe na localização especificada e que o projeto do Secret Manager tem as autorizações necessárias para usar a chave.

  7. Clique em Criar segredo.

gcloud

Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

  • SECRET_ID: o ID do segredo ou o identificador totalmente qualificado do segredo
  • LOCATION: a Google Cloud localização onde 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 qualquer um dos dados do pedido, faça as seguintes substituições:

  • LOCATION: a Google Cloud localização onde quer criar o segredo.
  • PROJECT_ID: o Google Cloud ID do projeto.
  • SECRET_ID: o ID do segredo ou o identificador totalmente qualificado do segredo.
  • KMS_PROJECT_ID: o ID do seu Google Cloud projeto que está a executar o Cloud Key Management Service.
  • KMS_KEY_LOCATION: o nome da localização da sua chave do Cloud KMS. Tem de ser a mesma localização que o seu segredo.
  • YOUR_KEY_RING: o nome do conjunto de chaves no Cloud KMS onde armazenou a sua chave CMEK.
  • YOUR_CMEK_KEY: a chave de encriptação gerida pelo cliente (CMEK) específica que criou no conjunto de chaves 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 do pedido:

{"customer_managed_encryption": {"kms_key_name": "projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"}}

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

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

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

$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

Deve receber uma resposta JSON semelhante à seguinte:

{
  "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"
  }
}

Atualize um segredo existente para usar a CMEK

Para atualizar um segredo existente para usar as CMEK, use um dos seguintes métodos:

Consola

  1. Na Google Cloud consola, aceda à página Secret Manager.

    Aceda ao Secret Manager

  2. Na página Secret Manager, clique no separador Segredos regionais.

  3. Para editar um segredo, use um dos seguintes métodos:

    • Localize o segredo na lista e clique no menu Ações associado a esse segredo. No menu Ações, clique em Editar.

    • Clique no nome do segredo para aceder à página de detalhes do segredo. Na página de detalhes do segredo, clique em Editar segredo.

  4. Na página Editar segredo, aceda à secção Encriptação.

  5. Em Encriptação, selecione Chave de encriptação gerida pelo cliente (CMEK) e, de seguida, selecione a sua chave CMEK na lista Chave de encriptação. Certifique-se de que a chave CMEK existe na localização especificada e que o projeto do Secret Manager tem as autorizações necessárias para usar a chave.

  6. Clique em Atualizar chave secreta.

gcloud

Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

  • SECRET_ID: o ID do segredo ou o identificador totalmente qualificado do segredo
  • LOCATION: a Google Cloud localização 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 qualquer um dos dados do pedido, faça as seguintes substituições:

  • LOCATION: a Google Cloud localização do segredo.
  • PROJECT_ID: o Google Cloud ID do projeto.
  • SECRET_ID: o ID do segredo ou o identificador totalmente qualificado do segredo.
  • KMS_PROJECT_ID: o ID do seu Google Cloud projeto que está a executar o Cloud Key Management Service.
  • KMS_KEY_LOCATION: a localização da sua chave do Cloud KMS. Tem de ser a mesma localização que o seu segredo.
  • YOUR_KEY_RING: o nome do conjunto de chaves no Cloud KMS onde armazenou a sua chave CMEK.
  • YOUR_CMEK_KEY: a chave de encriptação gerida pelo cliente (CMEK) específica que criou no conjunto de chaves 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 do pedido:

{"customer_managed_encryption": {"kms_key_name": "projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"}}"

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

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

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

$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

Deve receber uma resposta JSON semelhante à seguinte:

{
  "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"
  }
}

O que se segue?