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

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