Cette rubrique traite de la prise en charge des clés de chiffrement gérées par le client (CMEK) dans Secret Manager.
Présentation
Secret Manager fournit des outils pour stocker, gérer et accéder des données sensibles dans vos applications.
Par défaut, les secrets stockés dans Secret Manager sont chiffrés Chiffrement par défaut de Google. Avec le chiffrement par défaut de Google, les charges utiles chiffrées par des clés gérées par Google avant qu'elles ne soient écrites sur le stockage persistant, sans aucune configuration.
Vous pouvez personnaliser le chiffrement utilisé par Secret Manager pour vos ressources en fournissant clés de chiffrement de clé. Les clés de chiffrement de clés ne chiffrent pas directement vos données, mais Clés générées par Google pour chiffrer vos données. Vous pouvez créer des clés CMEK ou vous pouvez utiliser Cloud KMS Autokey (Aperçu) afin de les créer pour vous. Pour Pour en savoir plus, consultez la présentation d'Autokey.
Pour en savoir plus sur les options de chiffrement dans Google Cloud, consultez Chiffrement au repos par défaut : Pour des informations spécifiques sur les CMEK, y compris leurs avantages et leurs limites, Clés de chiffrement gérées par le client.
Fonctionnement de CMEK dans Secret Manager
Avant d'écrire la version d'un secret sur un espace de stockage persistant dans un emplacement particulier, Secret Manager chiffre les données avec une clé de chiffrement des données unique (DEK). Cette DEK est ensuite chiffrée à l'aide d'une clé spécifique à l'instance répliquée, appelée clé de chiffrement (KEK) appartenant au service Secret Manager.
Lorsque vous utilisez une clé CMEK pour Secret Manager, la KEK est appelée "clé CMEK" une clé symétrique que vous gérez dans Cloud KMS. La clé CMEK doit être au format au même emplacement Google Cloud que l'instance répliquée de version de secret qu'elle chiffre. Vous pouvez également utiliser une clé Cloud EKM dans la stratégie CMEK pour le chiffrement et le déchiffrement.
Ce guide explique comment configurer Secret Manager pour qu'il utilise CMEK. Pour en savoir plus sur CMEK en général, y compris quand et pourquoi l'activer, consultez la documentation de Cloud Key Management Service.
Limites
Les clés CMEK ne sont disponibles que dans Secret Manager
l'API v1
et gcloud.
Avant de commencer
Vous pouvez choisir de stocker toutes les ressources dans le même projet ou de stocker des secrets et des clés dans des projets distincts. Consultez la page Séparation de Cloud KMS leurs obligations afin de mieux à comprendre cette décision.
Remplissez les conditions préalables suivantes pour configurer Secret Manager et Cloud KMS:
Secret Manager :
- Créez un projet ou utilisez un projet existant pour stocker votre Secret Manager ressources.
- Si nécessaire, suivez les étapes décrites dans le Configurer Secret Manager du guide de démarrage rapide de Secret Manager.
Cloud KMS :
- Créez un projet ou utilisez un projet existant pour stocker vos Cloud KMS ressources.
- Si nécessaire, Activez l'API Cloud KMS.
Définissez les variables suivantes sur les ID de projet de votre gestionnaire Secret Manager et les projets 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
Authentifiez-vous sur Google Cloud :
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.
gcloud auth login
Création manuelle ou automatique de clés
Vous pouvez créer des clés Cloud KMS manuellement ou utiliser la clé automatique Cloud KMS (bêta). La fonctionnalité de clé automatique simplifie la création et la gestion des clés Cloud KMS en automatisant le provisionnement et l'attribution. Avec la fonction de clé automatique, vous n'avez pas besoin de provisionner des trousseaux de clés, des clés et des comptes de service à l'avance. Ils sont générés lors de la création de ressources Secret Manager. Pour en savoir plus, consultez la page Présentation de la fonction de clé automatique. Pour activer Autokey pour Secret Manager, consultez Activez Autokey. Pour utiliser Autokey avec vos secrets, consultez Utiliser Autokey avec des ressources Secret Manager
Les instructions de cette page concernent la création et l'attribution manuelles de clés Cloud KMS.
Créer une identité d'agent de service
Vous devez créer une identité d'agent de service pour chaque qui nécessite des clés de chiffrement gérées par le client.
Pour créer une identité de service avec Google Cloud CLI, exécutez la commande suivante:
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.
gcloud beta services identity create \
--service "secretmanager.googleapis.com" \
--project "SM_PROJECT_ID"
Cette action renvoie un nom d'identité de service au format suivant:
service-PROJECT_NUMBER@gcp-sa-secretmanager.iam.gserviceaccount.com
Enregistrez le nom de l'identité du service:
The following variable is editable. Click on it to update the value, and it will
be reflected throughout this documentation page.
SM_SERVICE_IDENTITY
Vous allez accorder à cette identité de service l'accès aux clés Cloud KMS CMEK utilisé pour chiffrer et déchiffrer vos secrets.
Chiffrement CMEK avec réplication automatique
Cette section traite des secrets configurés via une réplication automatique .
Pour les secrets qui utilisent la stratégie de réplication automatique, votre clé CMEK doit être
située dans l'emplacement multirégional global
Cloud KMS. Si vous utilisez un
Cloud EKM, vous ne pouvez pas configurer votre secret pour qu'il utilise
réplication, car les clés Cloud EKM ne sont pas disponibles dans le global
dans la même région. Pour en savoir plus sur l'utilisation des clés Cloud EKM, consultez
Ajoutez une clé Cloud EKM à une stratégie CMEK.
Créer une clé Cloud KMS symétrique dans le service Cloud KMS global
une région, ou utilisez une clé existante. Cet exemple crée un trousseau appelé
secret-manager-cmek
, puis crée une clé appelée my-cmek-key
sur celle-ci.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application 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"
Accordez à l'identité du service l'accès à Secret Manager pour chiffrer et
à l'aide de la clé CMEK. Cette commande accorde au chiffreur Cloud KMS
/ Déchiffreur (roles/cloudkms.cryptoKeyEncrypterDecrypter
) sur le
my-cmek-key
à l'identité du service.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application 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"
Créer un secret avec réplication automatique. Le nom de ressource de la clé CMEK est stockées en tant que métadonnées sur le secret.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application 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
Ces exemples utilisent curl pour illustrer l'utilisation de l'API. Vous pouvez générer des jetons d'accès avec gcloud auth print-access-token. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.
Définir la valeur de replication.automatic.customerManagedEncryption.kmsKeyName
au nom de ressource de la clé 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
Chaque fois qu'une version de secret est créée dans ce secret, la charge utile est automatiquement chiffrée à l'aide de la clé avant qu'elle ne soit écrite un stockage persistant, tant que l'identité du service a accès à la clé CMEK. Si l'identité du service perd l'accès ou si la clé devient indisponible, une tente de créer une nouvelle version d'un secret ou d'accéder à une version existante renvoie une .
Ajouter une nouvelle version de secret. Notez que vous ne spécifiez pas d'API Cloud KMS le nom de ressource de la clé. il est lu à partir des métadonnées du secret.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.
echo -n "SECRET_DATA" | gcloud secrets versions add "SECRET_ID" \
--project "SM_PROJECT_ID" \
--data-file -
La version du secret est créée, même si l'appelant ne dispose pas d'un accès direct utilisez la clé CMEK. L'identité du service pour Secret Manager, et non l'appelant, est responsable du chiffrement et du déchiffrement des secrets lors de la lecture ou de les écrire.
De même, vous n'avez pas besoin d'un accès direct à la clé CMEK pour accéder secret. L'identité du service accède à la clé et chiffre ou déchiffre le secret. en votre nom.
Accédez à la version du secret que vous venez de créer :
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.
gcloud secrets versions access "latest" \
--project "SM_PROJECT_ID" \
--secret "SECRET_ID"
Mettre à jour la configuration CMEK
Créez de nouvelles clés KMS symétriques dans l'emplacement multirégional global
de Cloud KMS.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.
gcloud kms keys create "my-other-key" \
--project "KMS_PROJECT_ID" \
--location "global" \
--keyring "secret-manager-cmek" \
--purpose "encryption"
Accordez à l'identité du service l'accès à Secret Manager pour chiffrer et
à l'aide de la nouvelle clé CMEK. Cette commande accorde au service Cloud KMS
Rôle de chiffreur / déchiffreur (roles/cloudkms.cryptoKeyEncrypterDecrypter
) sur le
my-other-key
à l'identité du service.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application 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"
Modifiez la configuration CMEK d'un secret en mettant à jour la réplication sur le par les nouveaux noms de ressources de la clé Cloud KMS.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application 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
Ces exemples utilisent curl pour illustrer l'utilisation de l'API. Vous pouvez générer des jetons d'accès avec gcloud auth print-access-token. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application 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
Chiffrement CMEK avec réplication gérée par l'utilisateur
Cette section traite des secrets configurés avec une réplication gérée par l'utilisateur. . Une règle de réplication gérée par l'utilisateur vous permet de contrôler l'emplacement Google Cloud où le secret est stocké. Les secrets sont toujours accessibles depuis n'importe quel emplacement Google Cloud.
Les secrets associés à une règle de réplication gérée par l'utilisateur doivent utiliser des clés Cloud KMS qui correspondent exactement aux emplacements dans lesquels les versions du secret sont stockées. La les exemples présentés dans ce guide stockent un secret à deux emplacements distincts: us-east1, us- central1. Les requêtes d'accès à ce secret sont acheminées vers l'un de ces emplacements.
Dans chacune des deux régions, créez un trousseau de clés et une clé Cloud KMS avec
à des fins de chiffrement, ou utiliser une clé existante. Cet exemple crée un objet
de clés nommé "secret-manager-cmek"
, puis crée une clé appelée
"my-cmek-key"
dans chaque région.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application 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"
Accordez à l'identité du service Secret Manager l'autorisation de chiffrer et
à l'aide de la clé CMEK en accordant au chiffreur Cloud KMS /
Rôle de déchiffrement (roles/cloudkms.cryptoKeyEncrypterDecrypter
) pour chacun des
clés CMEK individuellement ou pour toutes les clés du projet.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application 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"
Créer un secret CMEK activé dont la réplication est gérée par l'utilisateur Le nom de ressource de la clé CMEK est stockée en tant que métadonnées sur le secret.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application 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
Ces exemples utilisent curl pour illustrer l'utilisation de l'API. Vous pouvez générer des jetons d'accès avec gcloud auth print-access-token. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.
Définissez la valeur de
replication.userManaged.replicas.customerManagedEncryption.kmsKeyName
à la
pour les clés 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
Chaque fois qu'une version de secret est créée dans ce secret, la charge utile est automatiquement chiffrée à l'aide de la clé avant qu'elle ne soit écrite un stockage persistant, tant que l'identité du service a accès à la clé CMEK. Si l'identité du service perd l'accès ou si la clé devient indisponible, une tente de créer une nouvelle version d'un secret ou d'accéder à une version existante renvoie une .
Ajouter une nouvelle version de secret. Notez que vous ne spécifiez pas d'API Cloud KMS le nom de ressource de la clé. il est lu à partir des métadonnées du secret.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.
echo -n "SECRET_DATA" | gcloud secrets versions add "my-ummr-secret" \
--project "SM_PROJECT_ID" \
--data-file -
La version du secret est créée, même si l'appelant ne dispose pas d'un accès direct utilisez la clé CMEK. L'identité du service pour Secret Manager, et non l'appelant, est responsable du chiffrement et du déchiffrement des secrets lors de la lecture ou de les écrire.
De même, vous n'avez pas besoin d'un accès direct à la clé CMEK pour accéder secret. L'identité du service accède à la clé et chiffre ou déchiffre le secret. en votre nom.
Accédez à la version du secret que vous venez de créer.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.
gcloud secrets versions access "latest" \
--project "SM_PROJECT_ID" \
--secret "my-ummr-secret"
Mettre à jour la configuration CMEK
Créez deux clés KMS symétriques dans les mêmes régions que le secret.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application 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"
Accordez à l'identité du service l'accès à Secret Manager pour chiffrer et
à l'aide des nouvelles clés CMEK. Cette commande accorde au service Cloud KMS
Rôle de chiffreur / déchiffreur (roles/cloudkms.cryptoKeyEncrypterDecrypter
) sur le
my-other-key
clés Cloud KMS à l'identité du service.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application 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"
Modifiez la configuration CMEK d'un secret en mettant à jour la réplication sur le par les nouveaux noms de ressources de la clé Cloud KMS.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application 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"
Afin de mettre à jour simultanément plusieurs clés d'un secret, vous pouvez obtenir et définir la règle de réplication via un fichier.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.
gcloud secrets replication get "my-ummr-secret" \
--project "SM_PROJECT_ID" \
--format=json > ./replication-policy.json
Mettez à jour le fichier pour refléter la configuration CMEK souhaitée dans la configuration de votre choix éditeur. Définissez ensuite la nouvelle règle:
gcloud secrets replication set "my-ummr-secret" \
--replication-policy-file ./replication-policy.json \
--project "SM_PROJECT_ID"
API
Ces exemples utilisent curl pour illustrer l'utilisation de l'API. Vous pouvez générer des jetons d'accès avec gcloud auth print-access-token. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application 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
Afficher la configuration CMEK de la version de secret
Pour inspecter les métadonnées d'une version de secret, y compris si la version est pour lesquelles la fonctionnalité CMEK est activée et le nom de ressource de la version de la clé CMEK doit afficher ses métadonnées.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.
gcloud secrets versions describe "latest" \
--secret "SECRET_ID" \
--project "SM_PROJECT_ID"
API
Ces exemples utilisent curl pour illustrer l'utilisation de l'API. Vous pouvez générer des jetons d'accès avec gcloud auth print-access-token. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application 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"
Renvoie le nom complet de la ressource Cloud KMS de la version de clé utilisée pour chiffrer la version du secret.
{
"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"
}
}
}
}
Ajouter une clé Cloud EKM à une stratégie CMEK
Cette section explique comment ajouter une clé Cloud EKM à une stratégie CMEK. Ces permettent d'utiliser une clé Cloud EKM pour chiffrer ou déchiffrer des secrets.
Comme Cloud EKM n'est actuellement pas compatible avec l'emplacement multirégional global
,
Les clés Cloud EKM ne peuvent être utilisées qu'avec des secrets configurés pour
et la réplication gérée.
Créez une clé symétrique dans la région Cloud KMS us-central1
(ou dans toute
à l'exception de global
). Cet exemple crée un trousseau appelé
secret-manager-cmek-ekm
, puis crée une clé appelée my-ekm-key
sur la clé.
son anneau.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.
Créez un trousseau de clés :
gcloud kms keyrings create "secret-manager-cmek-ekm" \
--project "KMS_PROJECT_ID" \
--location "us-central1"
Créez une clé dans ce trousseau:
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"
Ensuite, créez une nouvelle version de my-ekm-key
à l'aide de l'URI externe de la clé.
Pour en savoir plus sur les URI externes pour les clés Cloud EKM, consultez la section Créer
une clé externe.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application 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
Accordez à l'identité du service l'accès à Secret Manager pour chiffrer et
déchiffrer à l'aide de la clé externe. Cette commande accorde au service Cloud KMS
Rôle de chiffreur / déchiffreur (roles/cloudkms.cryptoKeyEncrypterDecrypter
) activé
my-ekm-key
à l'identité du service.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application 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"
Créez un secret compatible avec CMEK qui utilise une clé Cloud EKM.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application 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"
Désormais, chaque fois qu'une version de secret est créée dans my-ekm-secret
,
la charge utile est automatiquement chiffrée à l'aide de la clé Cloud EKM avant d'être écrite
un stockage persistant, tant que l'identité du service a accès à la clé.
Si l'identité du service perd l'accès ou si la clé devient indisponible, une
tente de créer une nouvelle version d'un secret ou d'accéder à une version existante renvoie une
.
Ajouter une nouvelle version de secret. Notez que le nom de ressource de la clé est lu à partir du les métadonnées du secret.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.
echo -n "SECRET_DATA" | gcloud secrets versions add "my-ekm-secret" \
--project "SM_PROJECT_ID" \
--data-file -
La version du secret est créée, même si l'appelant ne dispose pas d'un accès direct utiliser la clé. L'identité du service pour Secret Manager, et non de l'appelant, est responsable du chiffrement et du déchiffrement des secrets lors de la lecture de les écrire.
Accédez à la version du secret que vous venez de créer. C'est ici que l'identité du service accède à la clé et chiffre ou déchiffre le secret en votre nom.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.
gcloud secrets versions access "latest" \
--project "SM_PROJECT_ID" \
--secret "my-ekm-secret"
Désactiver les CMEK
Supprimez la configuration CMEK d'un secret en mettant à jour la règle de réplication.
gcloud
Pour utiliser Secret Manager avec la ligne de commande, commencez par Installez la Google Cloud CLI ou passez à la version 378.0.0 ou ultérieure. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.
gcloud secrets replication update "SECRET_ID" --remove-cmek \
--project "SM_PROJECT_ID"
API
Ces exemples utilisent curl pour illustrer l'utilisation de l'API. Vous pouvez générer des jetons d'accès avec gcloud auth print-access-token. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application 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
Étape suivante
- En savoir plus sur CMEK