Por predefinição, o Secret Manager encripta o conteúdo do cliente em repouso. O Secret Manager processa a encriptação por si sem ações adicionais da sua parte. Esta opção chama-se Encriptação predefinida da Google.
Se quiser controlar as suas chaves de encriptação, pode usar chaves de encriptação geridas pelo cliente (CMEK) no Cloud KMS com serviços integrados com CMEK, incluindo o Secret Manager. A utilização de chaves do Cloud KMS dá-lhe controlo sobre o respetivo nível de proteção, localização, programação de rotação, utilização e autorizações de acesso, bem como limites criptográficos. A utilização do Cloud KMS também permite monitorizar a utilização das chaves, ver registos de auditoria e controlar os ciclos de vida das chaves. Em vez de a Google possuir e gerir as chaves de encriptação de chaves (KEKs) simétricas que protegem os seus dados, controla e gere estas chaves no Cloud KMS.
Depois de configurar os seus recursos com CMEKs, a experiência de acesso aos seus recursos do Secret Manager é semelhante à utilização da encriptação predefinida da Google. Para mais informações acerca das suas opções de encriptação, consulte o artigo Chaves de encriptação geridas pelo cliente (CMEK).
O Secret Manager oferece ferramentas para armazenar, gerir e aceder a dados confidenciais nas suas aplicações.
CMEK com chave automática do Cloud KMS
Pode criar CMEKs manualmente para proteger os seus recursos do Secret Manager ou usar a chave automática do Cloud KMS. Com a Autokey, os conjuntos de chaves e as chaves são gerados a pedido como parte da criação de recursos no Secret Manager. Os agentes de serviço que usam as chaves para operações de encriptação e desencriptação são criados se ainda não existirem e recebem as funções de gestão de identidade e de acesso (IAM) necessárias. Para mais informações, consulte o artigo Vista geral do Autokey.
O Secret Manager só é compatível com a chave automática do Cloud KMS quando cria recursos através do Terraform ou da API REST.
Para saber como usar CMEKs criadas manualmente para proteger os recursos do Secret Manager, consulte CMEK com replicação automática e CMEK com replicação gerida pelo utilizador nesta página.
Para saber como usar CMEKs criadas pela chave automática do Cloud KMS para proteger os seus recursos do Secret Manager, consulte o artigo Usar a chave automática com recursos do Secret Manager.
Como funciona a CMEK no Secret Manager
Antes de escrever uma versão secreta no armazenamento persistente numa determinada localização, o Secret Manager encripta os dados com uma chave de encriptação de dados (DEK) exclusiva. Esta DEK é, em seguida, encriptada com uma chave específica da réplica, denominada chave de encriptação de chaves (KEK), que é propriedade do serviço Secret Manager.
Quando usa a CMEK para o Secret Manager, a KEK é denominada chave CMEK e é uma chave simétrica que gere no Cloud KMS. A chave CMEK tem de estar na mesma Google Cloud localização que a réplica da versão secreta que encripta. Também pode usar uma chave do EKM na política de CMEK para encriptação e desencriptação.
Este guia explica como configurar o Secret Manager para usar a CMEK. Para mais informações sobre as CMEK em geral, incluindo quando e por que motivo as ativar, consulte a documentação do Cloud Key Management Service.
Limitações
A CMEK só está disponível na API Secret Manager
v1
e na
CLI Google Cloud.
Antes de começar
Pode optar por armazenar todos os recursos no mesmo projeto ou armazenar segredos e chaves em projetos separados. Leia o artigo Separação de funções do Cloud KMS para compreender melhor esta decisão.
Conclua os seguintes pré-requisitos para configurar o Secret Manager e o Cloud KMS:
Secret Manager:
- Crie ou use um projeto existente para alojar os seus recursos do Secret Manager.
- Se necessário, conclua os passos na secção Configurar o Secret Manager do início rápido do Secret Manager.
Cloud KMS:
- Crie ou use um projeto existente para alojar os seus recursos do Cloud KMS.
- Se necessário, ative a API Cloud KMS.
Defina as seguintes variáveis para os IDs dos projetos do Secret Manager e do Cloud KMS.
This is an editable variable. Set it to your Secret Manager project ID and the
value will be used in all commands on this page.
SM_PROJECT_ID
This is an editable variable. Set it to your Cloud KMS project ID and the value
will be used in all commands on this page.
KMS_PROJECT_ID
Autentique-se em Google Cloud:
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
gcloud auth login
Criar uma identidade de agente de serviço
Tem de criar uma identidade de agente de serviço para cada projeto que exija chaves de encriptação geridas pelo cliente.
Para criar uma identidade de serviço com a CLI gcloud, execute o seguinte comando:
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
gcloud beta services identity create \
--service "secretmanager.googleapis.com" \
--project "SM_PROJECT_ID"
Que devolve um nome de identidade do serviço no seguinte formato:
service-PROJECT_NUMBER@gcp-sa-secretmanager.iam.gserviceaccount.com
Guarde o nome da identidade do serviço:
The following variable is editable. Click on it to update the value, and it will
be reflected throughout this documentation page.
SM_SERVICE_IDENTITY
Concede a esta identidade de serviço acesso às chaves do Cloud KMS da CMEK usadas para encriptar e desencriptar os seus segredos.
CMEK com replicação automática
Esta secção aborda segredos configurados através de uma política de replicação automática.
Para segredos que usam a política de replicação automática, a sua chave CMEK tem de estar localizada na multirregião do global
Cloud KMS. Se estiver a usar uma chave do EKM na nuvem, não pode configurar o seu segredo para usar a replicação automática, porque as chaves do EKM na nuvem não estão disponíveis na região global
. Para saber como usar as chaves do EKM da nuvem, consulte o artigo
Adicione uma chave do EKM da nuvem a uma política de CMEK.
Crie uma chave simétrica do Cloud KMS na região do global
Cloud KMS
ou use uma chave existente. Este exemplo cria um novo conjunto de chaves denominado
secret-manager-cmek
e, em seguida, cria uma nova chave denominada my-cmek-key
no mesmo.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
gcloud kms keyrings create "secret-manager-cmek" \
--project "KMS_PROJECT_ID" \
--location "global"
gcloud kms keys create "my-cmek-key" \
--project "KMS_PROJECT_ID" \
--location "global" \
--keyring "secret-manager-cmek" \
--purpose "encryption"
Conceda à identidade de serviço do Secret Manager acesso para encriptar e desencriptar através da chave CMEK. Este comando concede a função de encriptar/desencriptar do Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter
) à identidade de serviço na chave do Cloud KMS my-cmek-key
.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
gcloud kms keys add-iam-policy-binding "my-cmek-key" \
--project "KMS_PROJECT_ID" \
--location "global" \
--keyring "secret-manager-cmek" \
--member "serviceAccount:SM_SERVICE_IDENTITY" \
--role "roles/cloudkms.cryptoKeyEncrypterDecrypter"
Crie um segredo com replicação automática. O nome do recurso da chave CMEK é armazenado como metadados no segredo.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
gcloud secrets create "SECRET_ID" \
--replication-policy "automatic" \
--kms-key-name "projects/KMS_PROJECT_ID/locations/global/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key" \
--project "SM_PROJECT_ID"
API
Estes exemplos usam o curl para demonstrar a utilização da API. Pode gerar chaves de acesso com gcloud auth print-access-token. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
Defina o valor de replication.automatic.customerManagedEncryption.kmsKeyName
para o nome do recurso da chave CMEK.
curl "https://secretmanager.googleapis.com/v1/projects/${SM_PROJECT_ID}/secrets?secretId=SECRET_ID" \
--request "POST" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--data-binary @- <<EOF
{
"replication":{
"automatic":{
"customerManagedEncryption":{
"kmsKeyName": "projects/KMS_PROJECT_ID/locations/global/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
}
}
}
}
EOF
Agora, sempre que é criada uma versão secreta nesse segredo, a carga útil da versão secreta é automaticamente encriptada através da chave antes de ser escrita no armazenamento persistente, desde que a identidade do serviço tenha acesso à chave CMEK. Se a identidade do serviço perder o acesso ou se a chave ficar indisponível, uma tentativa de criar uma nova versão do segredo ou aceder a uma existente devolve um erro.
Adicione uma nova versão do segredo. Tenha em atenção que não especifica o nome do recurso da chave do Cloud KMS. Este é lido a partir dos metadados do segredo.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
echo -n "SECRET_DATA" | gcloud secrets versions add "SECRET_ID" \
--project "SM_PROJECT_ID" \
--data-file -
A versão do segredo é criada, mesmo que o autor da chamada não tenha acesso direto à chave CMEK. A identidade do serviço do Secret Manager, em vez do autor da chamada, é responsável por encriptar e desencriptar segredos quando os lê ou escreve.
Da mesma forma, não precisa de acesso direto à chave CMEK para aceder ao segredo. A identidade do serviço acede à chave e encripta ou desencripta o segredo em seu nome.
Aceda à versão do Secret que acabou de criar:
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
gcloud secrets versions access "latest" \
--project "SM_PROJECT_ID" \
--secret "SECRET_ID"
Atualize a configuração de CMEK
Crie novas chaves KMS simétricas na global
multirregião do Cloud KMS.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
gcloud kms keys create "my-other-key" \
--project "KMS_PROJECT_ID" \
--location "global" \
--keyring "secret-manager-cmek" \
--purpose "encryption"
Conceda à identidade de serviço do Secret Manager acesso para encriptar e
desencriptar através da nova chave CMEK. Este comando concede a função de encriptar / desencriptar (roles/cloudkms.cryptoKeyEncrypterDecrypter
) do Cloud KMS à identidade de serviço na chave do Cloud KMS my-other-key
.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
gcloud kms keys add-iam-policy-binding "my-other-key" \
--project "KMS_PROJECT_ID" \
--location "global" \
--keyring "secret-manager-cmek" \
--member "serviceAccount:SM_SERVICE_IDENTITY" \
--role "roles/cloudkms.cryptoKeyEncrypterDecrypter"
Modifique a configuração da CMEK num segredo atualizando a replicação no segredo com os novos nomes de recursos de chaves do Cloud KMS.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
gcloud secrets replication update "SECRET_ID" \
--set-kms-key "projects/KMS_PROJECT_ID/locations/global/keyRings/secret-manager-cmek/cryptoKeys/my-other-key" \
--project "SM_PROJECT_ID"
API
Estes exemplos usam o curl para demonstrar a utilização da API. Pode gerar chaves de acesso com gcloud auth print-access-token. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
curl "https://secretmanager.googleapis.com/v1/projects/${SM_PROJECT_ID}/secrets/SECRET_ID?updateMask=replication" \
--request "PATCH" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--data-binary @- <<EOF
{
"replication": {
"automatic":{
"customerManagedEncryption":{
"kmsKeyName": "projects/KMS_PROJECT_ID/locations/global/keyRings/secret-manager-cmek/cryptoKeys/my-other-key"
}
}
}
}
EOF
CMEK com replicação gerida pelo utilizador
Esta secção aborda os segredos configurados com uma política de replicação gerida pelo utilizador. Com uma política de replicação gerida pelo utilizador, controla a Google Cloud localização onde o Secret é armazenado. Os Secrets estão sempre acessíveis a partir de todas as Google Cloud localizações.
Os segredos com uma política de replicação gerida pelo utilizador têm de usar chaves do Cloud KMS que correspondam exatamente às localizações nas quais as versões secretas estão armazenadas. Os exemplos neste guia armazenam um segredo em duas localizações separadas: us-east1 e us-central1. As solicitações de acesso ao segredo são encaminhadas para uma destas localizações.
Em cada uma das duas regiões, crie um conjunto de chaves e uma chave do Cloud KMS com o objetivo de encriptação ou use uma chave existente. Este exemplo cria um novo conjunto de chaves denominado "secret-manager-cmek"
e, em seguida, cria uma chave denominada "my-cmek-key"
em cada região.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
gcloud kms keyrings create "secret-manager-cmek" \
--project "KMS_PROJECT_ID" \
--location "us-east1"
gcloud kms keys create "my-cmek-key" \
--project "KMS_PROJECT_ID" \
--location "us-east1" \
--keyring "secret-manager-cmek" \
--purpose "encryption"
gcloud kms keyrings create "secret-manager-cmek" \
--project "KMS_PROJECT_ID" \
--location "us-central1"
gcloud kms keys create "my-cmek-key" \
--project "KMS_PROJECT_ID" \
--location "us-central1" \
--keyring "secret-manager-cmek" \
--purpose "encryption"
Conceda à identidade de serviço autorização do Secret Manager para encriptar e
desencriptar através da chave CMEK, concedendo a função de encriptar/
desencriptar do Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter
) para cada uma das
chaves CMEK individualmente ou para todas as chaves no projeto.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
gcloud kms keys add-iam-policy-binding "my-cmek-key" \
--project "KMS_PROJECT_ID" \
--location "us-east1" \
--keyring "secret-manager-cmek" \
--member "serviceAccount:SM_SERVICE_IDENTITY" \
--role "roles/cloudkms.cryptoKeyEncrypterDecrypter"
gcloud kms keys add-iam-policy-binding "my-cmek-key" \
--project "KMS_PROJECT_ID" \
--location "us-central1" \
--keyring "secret-manager-cmek" \
--member "serviceAccount:SM_SERVICE_IDENTITY" \
--role "roles/cloudkms.cryptoKeyEncrypterDecrypter"
Crie um segredo ativado com CMEK com replicação gerida pelo utilizador. O nome do recurso da chave CMEK é armazenado como metadados no segredo.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
cat <<EOF > ./replication-policy.json
{
"userManaged":{
"replicas":[
{
"location":"us-east1",
"customerManagedEncryption":{
"kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-east1/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
}
},
{
"location":"us-central1",
"customerManagedEncryption":{
"kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-central1/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
}
}
]
}
}
EOF
gcloud secrets create "my-ummr-secret" \
--replication-policy-file ./replication-policy.json \
--project "SM_PROJECT_ID"
API
Estes exemplos usam o curl para demonstrar a utilização da API. Pode gerar chaves de acesso com gcloud auth print-access-token. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
Defina o valor de
replication.userManaged.replicas.customerManagedEncryption.kmsKeyName
para os
nomes dos recursos das chaves CMEK.
curl "https://secretmanager.googleapis.com/v1/projects/SM_PROJECT_ID/secrets?secretId=my-ummr-secret" \
--request "POST" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--data-binary @- <<EOF
{
"replication":{
"userManaged":{
"replicas":[
{
"location":"us-east1",
"customerManagedEncryption":{
"kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-east1/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
}
},
{
"location":"us-central1",
"customerManagedEncryption":{
"kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-central1/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
}
}
]
}
}
}
EOF
Agora, sempre que é criada uma versão secreta nesse segredo, a carga útil da versão secreta é automaticamente encriptada através da chave antes de ser escrita no armazenamento persistente, desde que a identidade do serviço tenha acesso à chave CMEK. Se a identidade do serviço perder o acesso ou se a chave ficar indisponível, uma tentativa de criar uma nova versão do segredo ou aceder a uma existente devolve um erro.
Adicione uma nova versão do segredo. Tenha em atenção que não especifica o nome do recurso da chave do Cloud KMS. Este é lido a partir dos metadados do segredo.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
echo -n "SECRET_DATA" | gcloud secrets versions add "my-ummr-secret" \
--project "SM_PROJECT_ID" \
--data-file -
A versão do segredo é criada, mesmo que o autor da chamada não tenha acesso direto à chave CMEK. A identidade do serviço do Secret Manager, em vez do autor da chamada, é responsável por encriptar e desencriptar segredos quando os lê ou escreve.
Da mesma forma, não precisa de acesso direto à chave CMEK para aceder ao segredo. A identidade do serviço acede à chave e encripta ou desencripta o segredo em seu nome.
Aceda à versão do Secret que acabou de criar.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
gcloud secrets versions access "latest" \
--project "SM_PROJECT_ID" \
--secret "my-ummr-secret"
Atualize a configuração de CMEK
Crie duas novas chaves KMS simétricas nas mesmas regiões que o segredo.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
gcloud kms keys create "my-other-key" \
--project "KMS_PROJECT_ID" \
--location "us-east1" \
--keyring "secret-manager-cmek" \
--purpose "encryption"
gcloud kms keys create "my-other-key" \
--project "KMS_PROJECT_ID" \
--location "us-central1" \
--keyring "secret-manager-cmek" \
--purpose "encryption"
Conceda à identidade de serviço do Secret Manager acesso para encriptar e
desencriptar através das novas chaves CMEK. Este comando concede a função de encriptar / desencriptar (roles/cloudkms.cryptoKeyEncrypterDecrypter
) do Cloud KMS às chaves do Cloud KMS my-other-key
à identidade do serviço.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
gcloud kms keys add-iam-policy-binding "my-other-key" \
--project "KMS_PROJECT_ID" \
--location "us-east1" \
--keyring "secret-manager-cmek" \
--member "serviceAccount:SM_SERVICE_IDENTITY" \
--role "roles/cloudkms.cryptoKeyEncrypterDecrypter"
gcloud kms keys add-iam-policy-binding "my-other-key" \
--project "KMS_PROJECT_ID" \
--location "us-central1" \
--keyring "secret-manager-cmek" \
--member "serviceAccount:SM_SERVICE_IDENTITY" \
--role "roles/cloudkms.cryptoKeyEncrypterDecrypter"
Modifique a configuração da CMEK num segredo atualizando a replicação no segredo com os novos nomes de recursos de chaves do Cloud KMS.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
gcloud secrets replication update "my-ummr-secret" \
--set-kms-key "projects/KMS_PROJECT_ID/locations/us-east1/keyRings/secret-manager-cmek/cryptoKeys/my-other-key" \
--location us-east1 \
--project "SM_PROJECT_ID"
gcloud secrets replication update "my-ummr-secret" \
--set-kms-key "projects/KMS_PROJECT_ID/locations/us-central1/keyRings/secret-manager-cmek/cryptoKeys/my-other-key" \
--location us-central1 \
--project "SM_PROJECT_ID"
Para atualizar várias chaves num segredo em simultâneo, pode obter e definir a política de replicação através de um ficheiro.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
gcloud secrets replication get "my-ummr-secret" \
--project "SM_PROJECT_ID" \
--format=json > ./replication-policy.json
Atualize o ficheiro para refletir a configuração CMEK pretendida no seu editor preferido. Em seguida, defina a nova política:
gcloud secrets replication set "my-ummr-secret" \
--replication-policy-file ./replication-policy.json \
--project "SM_PROJECT_ID"
API
Estes exemplos usam o curl para demonstrar a utilização da API. Pode gerar chaves de acesso com gcloud auth print-access-token. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
curl "https://secretmanager.googleapis.com/v1/projects/${SM_PROJECT_ID}/secrets/my-ummr-secret?updateMask=replication" \
--request "PATCH" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--data-binary @- <<EOF
{
"replication":{
"userManaged":{
"replicas":[
{
"location":"us-east1",
"customerManagedEncryption":{
"kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-east1/keyRings/secret-manager-cmek/cryptoKeys/my-other-key"
}
},
{
"location":"us-central1",
"customerManagedEncryption":{
"kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-central1/keyRings/secret-manager-cmek/cryptoKeys/my-other-key"
}
}]
}
}
}
EOF
Veja a configuração CMEK da versão secreta
Para inspecionar os metadados de uma versão secreta, incluindo se a versão secreta tem a CMEK ativada e o nome do recurso da versão da chave CMEK, veja os respetivos metadados.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
gcloud secrets versions describe "latest" \
--secret "SECRET_ID" \
--project "SM_PROJECT_ID"
API
Estes exemplos usam o curl para demonstrar a utilização da API. Pode gerar chaves de acesso com gcloud auth print-access-token. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
curl "https://secretmanager.googleapis.com/v1/projects/SM_PROJECT_ID/secrets/SECRET_ID/versions/latest" \
--request "GET" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Content-Type: application/json"
Isto devolve o nome do recurso do Cloud KMS completo da versão da chave usada para encriptar a versão do segredo.
{
"name": "projects/PROJECT_NUMBER/secrets/SECRET_ID/versions/1",
"createTime": "2021-07-...",
"state": "ENABLED",
"replicationStatus": {
"automatic": {
"customerManagedEncryption": {
"kmsKeyVersionName": "projects/KMS_PROJECT_ID/locations/global/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key/cryptoKeyVersions/1"
}
}
}
}
Adicione uma chave do Cloud EKM a uma política CMEK
Esta secção aborda a adição de uma chave do Cloud EKM a uma política de CMEK. Estes passos permitem usar uma chave do EKM do Google Cloud para encriptar ou desencriptar segredos.
Uma vez que o EKM na nuvem não suporta atualmente a global
multirregião,
as chaves do EKM na nuvem só podem ser usadas com segredos configurados para replicação gerida pelo utilizador.
Crie uma chave simétrica na região do us-central1
Cloud KMS (ou em qualquer região, exceto global
). Este exemplo cria um novo conjunto de chaves denominado secret-manager-cmek-ekm
e, em seguida, cria uma nova chave denominada my-ekm-key
no conjunto de chaves.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
Crie um novo conjunto de chaves:
gcloud kms keyrings create "secret-manager-cmek-ekm" \
--project "KMS_PROJECT_ID" \
--location "us-central1"
Crie uma chave nesse conjunto de chaves:
gcloud kms keys create "my-ekm-key" \
--keyring "secret-manager-cmek-ekm" \
--location "us-central1" \
--purpose "encryption" \
--protection-level "external" \
--skip-initial-version-creation \
--default-algorithm "external-symmetric-encryption"
Em seguida, crie uma nova versão do my-ekm-key
com o URI externo da chave.
Para mais informações sobre os URIs externos das chaves do Cloud EKM, consulte o artigo Crie uma chave externa.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
gcloud kms keys versions create \
--key "my-ekm-key" \
--keyring "secret-manager-cmek-ekm" \
--location "us-central1" \
--external-key-uri EXTERNAL_KEY_URI \
--primary
Conceda à identidade do serviço para o Secret Manager acesso para encriptar e desencriptar através da chave externa. Este comando concede a função de encriptar / desencriptar (roles/cloudkms.cryptoKeyEncrypterDecrypter
) do Cloud KMS à identidade do serviço.my-ekm-key
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
gcloud kms keys add-iam-policy-binding "my-ekm-key" \
--project "KMS_PROJECT_ID" \
--location "us-central1" \
--keyring "secret-manager-cmek-ekm" \
--member "serviceAccount:SM_SERVICE_IDENTITY" \
--role "roles/cloudkms.cryptoKeyEncrypterDecrypter"
Crie um segredo ativado com CMEK que use uma chave do Cloud EKM.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
cat <<EOF > ./replication-policy.json
{
"userManaged":{
"replicas":[
{
"location":"us-central1",
"customerManagedEncryption":{
"kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-central1/keyRings/secret-manager-cmek-ekm/cryptoKeys/my-ekm-key"
}
}
]
}
}
EOF
gcloud secrets create "my-ekm-secret" \
--replication-policy-file ./replication-policy.json \
--project "SM_PROJECT_ID"
Agora, sempre que é criada uma versão secreta em my-ekm-secret
, a carga útil da versão secreta é automaticamente encriptada através da chave do Cloud EKM antes de ser escrita no armazenamento persistente, desde que a identidade do serviço tenha acesso à chave.
Se a identidade do serviço perder o acesso ou se a chave ficar indisponível, uma tentativa de criar uma nova versão do segredo ou aceder a uma existente devolve um erro.
Adicione uma nova versão do segredo. Tenha em atenção que o nome do recurso da chave é lido a partir dos metadados do segredo.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
echo -n "SECRET_DATA" | gcloud secrets versions add "my-ekm-secret" \
--project "SM_PROJECT_ID" \
--data-file -
A versão do Secret é criada, mesmo que o autor da chamada não tenha acesso direto para usar a chave. A identidade do serviço do Secret Manager, em vez do autor da chamada, é responsável por encriptar e desencriptar segredos quando os lê ou escreve.
Aceda à versão do Secret que acabou de criar. É aqui que a identidade do serviço acede à chave e encripta ou desencripta o segredo em seu nome.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
gcloud secrets versions access "latest" \
--project "SM_PROJECT_ID" \
--secret "my-ekm-secret"
Desative as CMEK
Remova a configuração da CMEK de um segredo atualizando a política de replicação.
gcloud
Para usar o Secret Manager na linha de comandos, primeiro instale ou atualize para a versão 378.0.0 ou superior da CLI Google Cloud. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
gcloud secrets replication update "SECRET_ID" --remove-cmek \
--project "SM_PROJECT_ID"
API
Estes exemplos usam o curl para demonstrar a utilização da API. Pode gerar chaves de acesso com gcloud auth print-access-token. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.
curl "https://secretmanager.googleapis.com/v1/projects/${SM_PROJECT_ID}/secrets/SECRET_ID?updateMask=replication" \
--request "PATCH" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--data-binary @- <<EOF
{
"replication":{
"automatic":{}
}
}
EOF
O que se segue?
- Saiba mais acerca das CMEK.