Activer les clés de chiffrement gérées par le client pour Secret Manager

Par défaut, Secret Manager chiffre le contenu client reste. Le Gestionnaire de secrets gère le chiffrement sans intervention de votre part. Cette option est appelée Chiffrement par défaut de Google.

Si vous souhaitez contrôler vos clés de chiffrement, vous pouvez utiliser des clés de chiffrement gérées par le client (CMEK) dans Cloud KMS avec des services intégrés aux CMEK, y compris Secret Manager. L'utilisation de clés Cloud KMS vous permet de contrôler leur protection le niveau d'accès, l'emplacement, le calendrier de rotation, les autorisations d'utilisation et d'accès, ainsi que les limites cryptographiques. Cloud KMS vous permet également vous pouvez suivre l'utilisation des clés, consulter les journaux d'audit et de contrôler les cycles de vie des clés. Au lieu de laisser Google posséder et gérer la clé symétrique clés de chiffrement de clés (KEK) qui protègent vos données, vous contrôlez gérer ces clés dans Cloud KMS.

Une fois que vous avez configuré vos ressources avec des clés CMEK, l'accès à vos ressources Secret Manager est semblable à l'utilisation du chiffrement par défaut de Google. Pour en savoir plus sur vos options de chiffrement, consultez Clés de chiffrement gérées par le client (CMEK).

Secret Manager fournit des outils de stockage, de gestion et d'accès aux données sensibles de vos applications.

Chiffrement CMEK avec Cloud KMS Autokey

Vous pouvez créer des CMEK manuellement pour protéger votre Secret Manager ou utiliser Cloud KMS Autokey. Avec Autokey, les trousseaux de clés et les clés sont générés à la demande lors de la création de ressources dans Secret Manager. Les agents de service qui utilisent les clés pour les opérations de chiffrement et de déchiffrement sont créés s'ils n'existent pas déjà et sont attribués aux rôles IAM (Identity and Access Management) requis. Pour en savoir plus, consultez la section Présentation de la clé automatique.

Secret Manager est compatible uniquement avec Cloud KMS Autokey créer des ressources à l'aide de Terraform ou de l'API REST.

Pour découvrir comment utiliser des CMEK créées manuellement pour protéger vos ressources Secret Manager, consultez les sections CMEK avec réplication automatique et CMEK avec réplication gérée par l'utilisateur sur cette page.

Pour apprendre à utiliser des clés CMEK créées par Cloud KMS Autokey pour protéger vos ressources Secret Manager, voir Utiliser Autokey avec Secret Manager ressources.

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 par une clé spécifique à l'instance dupliquée, appelée clé de chiffrement de clé (KEK, Key Encryption Key) appartenant au service Secret Manager.

Lorsque vous utilisez CMEK pour Secret Manager, la KEK est appelée clé CMEK. Il s'agit d'une clé symétrique que vous gérez dans Cloud KMS. La clé CMEK doit être 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

CMEK n'est disponible qu'avec l'API v1 de Secret Manager et la Google Cloud CLI.

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 section Séparation des tâches de Cloud KMS pour mieux comprendre cette décision.

Remplissez les conditions préalables suivantes pour configurer Secret Manager et Cloud KMS:

  • Secret Manager :

    • Créez ou utilisez un projet existant pour stocker vos ressources Secret Manager.
    • Si nécessaire, suivez les étapes décrites dans le Configurer Secret Manager du guide de démarrage rapide de Secret Manager.
  • 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é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"

Ce qui 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

Accordez à cette identité de service l'accès aux clés CMEK de Cloud KMS 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 utilisant la règle de réplication automatique, votre clé CMEK doit se trouver dans l'emplacement multirégional global de 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 la section Ajouter une clé Cloud EKM à une règle CMEK.

Créez une clé Cloud KMS symétrique dans la région Cloud KMS global 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 installer ou mettre à niveau Google Cloud CLI vers la version 378.0.0 ou une version 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é de service de Secret Manager l'accès au chiffrement et au déchiffrement à 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 installer ou mettre à niveau Google Cloud CLI vers la version 378.0.0 ou une version 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.

Attribuez comme valeur à replication.automatic.customerManagedEncryption.kmsKeyName le 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

Désormais, chaque fois qu'une version de secret est créée dans ce secret, la charge utile de cette version est automatiquement chiffrée à l'aide de la clé avant d'être écrite sur le stockage persistant, tant que l'identité du service a accès à la clé CMEK. Si l'identité du service perd cet accès ou si la clé est indisponible, une tentative de création de version du secret ou d'accès à une version existante renvoie une erreur.

Ajouter une nouvelle version de secret. Notez que vous n'indiquez pas le nom de ressource de la clé Cloud KMS ; celui-ci 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 de secret est créée, même si l'appelant ne dispose pas d'un accès direct à l'utilisation de la clé CMEK. L'identité de service de Secret Manager, et non l'appelant, est responsable du chiffrement et du déchiffrement des secrets lors de leur lecture ou de leur écriture.

De même, vous n'avez pas besoin d'un accès direct à la clé CMEK pour accéder au 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 installer ou mettre à niveau Google Cloud CLI vers la version 378.0.0 ou une version 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 installer ou mettre à niveau Google Cloud CLI vers la version 378.0.0 ou une version 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é de service de Secret Manager l'accès au chiffrement et au déchiffrement à 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 installer ou mettre à niveau Google Cloud CLI vers la version 378.0.0 ou une version 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

CMEK et réplication gérée par l'utilisateur

Cette section traite des secrets configurés avec une règle de 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 suivant une règle de réplication gérée par l'utilisateur doivent recourir à des clés Cloud KMS qui correspondent exactement aux emplacements dans lesquels les versions des secrets sont stockées. Les exemples de ce guide stockent un secret dans deux emplacements distincts : us-east1 et 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 destinée au chiffrement, ou utilisez une clé existante. Cet exemple crée un trousseau de clés nommé "secret-manager-cmek", puis 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é de service de Secret Manager l'autorisation de chiffrer et de déchiffrer à l'aide de la clé CMEK en attribuant le rôle de chiffreur/déchiffreur Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) à chaque clé CMEK ou à 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é sous forme de métadonnées sur le secret.

gcloud

Pour utiliser Secret Manager avec la ligne de commande, commencez par installer ou mettre à niveau Google Cloud CLI vers la version 378.0.0 ou une version 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.

Attribuez comme valeur à replication.userManaged.replicas.customerManagedEncryption.kmsKeyName les noms des ressources destinées aux 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 n'indiquez pas le nom de ressource de la clé Cloud KMS ; celui-ci 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é de service de Secret Manager, et non l'appelant, est responsable du chiffrement et du déchiffrement des secrets lors de leur lecture ou de leur écriture.

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 installer ou mettre à niveau Google Cloud CLI vers la version 378.0.0 ou une version 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é de service de Secret Manager l'accès au chiffrement et au déchiffrement à l'aide des nouvelles clés CMEK. Cette commande accorde à l'identité de service le rôle de chiffreur/déchiffreur Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) des clés Cloud KMS my-other-key.

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 du secret au moyen des nouveaux noms de ressources de la clé Cloud KMS.

gcloud

Pour utiliser Secret Manager avec la ligne de commande, commencez par installer ou mettre à niveau Google Cloud CLI vers la version 378.0.0 ou une version 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 l'éditeur de votre choix. Définissez ensuite la nouvelle stratégie :

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"

Cette commande 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 règle CMEK. Ces permettent de chiffrer ou de déchiffrer des secrets à l'aide d'une clé Cloud EKM.

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 n'importe quelle région, sauf global). Cet exemple crée un trousseau de clés appelé secret-manager-cmek-ekm, puis une clé appelée my-ekm-key dans le trousseau.

gcloud

Pour utiliser Secret Manager avec la ligne de commande, commencez par installer ou mettre à niveau Google Cloud CLI vers la version 378.0.0 ou une version 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 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 Créer une clé externe.

gcloud

Pour utiliser Secret Manager avec la ligne de commande, commencez par installer ou mettre à niveau Google Cloud CLI vers la version 378.0.0 ou une version 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é de service de Secret Manager l'accès au chiffrement et au déchiffrement à l'aide de la clé externe. Cette commande accorde à l'identité de service le rôle de chiffreur/déchiffreur Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) sur my-ekm-key.

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 CMEK activé 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 installer ou mettre à niveau Google Cloud CLI vers la version 378.0.0 ou une version 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 stratégie 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