Cette page explique comment créer des secrets avec des clés de chiffrement gérées par le client (CMEK) et mettre à jour des secrets existants pour qu'ils utilisent des clés CMEK.
Présentation
CMEK ajoute une couche supplémentaire de sécurité et de contrôle sur vos données sensibles stockées en tant que secrets régionaux. Vous pouvez utiliser CMEK pour atteindre les objectifs suivants:
- Contrôler entièrement les clés de chiffrement utilisées pour protéger vos secrets
- Utilisez votre propre système de gestion des clés avec des règles de sécurité, des fonctionnalités d'audit et des fonctionnalités de conformité potentiellement plus strictes.
- Respectez les réglementations sur la souveraineté des données en conservant les clés dans votre propre infrastructure.
- Définissez des contrôles d'accès précis pour vos clés de chiffrement, en spécifiant qui peut les utiliser et à quelles fins.
Limites :
L'utilisation de CMEK avec des secrets régionaux présente les limites suivantes:
- Autokey de Cloud Key Management Service (Preview) n'est pas compatible avec les secrets régionaux.
- L'emplacement de la clé CMEK doit être identique à celui du secret régional.
Avant de commencer
- Activez l'API Secret Manager une fois par projet.
- Attribuez le rôle "Administrateur de Secret Manager" (
roles/secretmanager.admin
) au projet, au dossier ou à l'organisation. S'authentifier auprès de l'API Secret Manager de l'une des manières suivantes:
- Si vous utilisez des bibliothèques clientes pour accéder à l'API Secret Manager, configurez les identifiants par défaut de l'application.
- Si vous utilisez la Google Cloud CLI pour accéder à l'API Secret Manager, utilisez vos identifiants Google Cloud CLI pour vous authentifier.
- Pour authentifier un appel REST, utilisez les identifiants de la Google Cloud CLI ou les Identifiants par défaut de l'application.
Pour activer CMEK et créer les clés et les trousseaux CMEK dont vous avez besoin pour cette étape, consultez la section Activer les clés de chiffrement gérées par le client pour Secret Manager.
Créer un secret régional avec le chiffrement CMEK
Pour créer un secret avec le chiffrement CMEK, utilisez l'une des méthodes suivantes:
Console
-
Accédez à la page Secret Manager dans la console Google Cloud.
-
Sur la page Secret Manager, cliquez sur l'onglet Secrets régionaux, puis sur Créer un secret régional.
-
Sur la page Créer un secret régional, saisissez un nom pour le secret dans le champ Nom. Un nom de secret peut contenir des lettres majuscules et minuscules, des chiffres, des traits d'union et des traits de soulignement. La longueur maximale autorisée pour un nom est de 255 caractères.
-
Saisissez une valeur pour le secret (par exemple,
abcd1234
). La valeur du secret peut être indiquée dans n'importe quel format, mais elle ne doit pas dépasser 64 Kio. Vous pouvez également importer un fichier texte contenant la valeur du secret à l'aide de l'option Importer un fichier. Cette action crée automatiquement la version du secret. -
Dans la liste Région, sélectionnez l'emplacement où vous souhaitez stocker votre secret régional.
-
Sous Chiffrement, sélectionnez Clé de chiffrement gérée par le client (CMEK), puis choisissez votre clé CMEK dans la liste Clé de chiffrement. Assurez-vous que votre clé CMEK existe à l'emplacement spécifié et que votre projet Secret Manager dispose des autorisations nécessaires pour l'utiliser.
-
Cliquez sur Créer un secret.
gcloud
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- SECRET_ID: ID du secret ou identifiant complet du secret
- LOCATION: emplacement Google Cloud dans lequel vous souhaitez créer le secret
- CMEK_KEY: chemin d'accès complet à la clé CMEK spécifique dans Cloud Key Management Service qui protégera le secret
Exécutez la commande suivante :
Linux, macOS ou Cloud Shell
gcloud secrets create SECRET_ID --location=LOCATION \ --regional-kms-key-name=CMEK_KEY
Windows (PowerShell)
gcloud secrets create SECRET_ID --location=LOCATION ` --regional-kms-key-name=CMEK_KEY
Windows (cmd.exe)
gcloud secrets create SECRET_ID --location=LOCATION ^ --regional-kms-key-name=CMEK_KEY
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- LOCATION: emplacement Google Cloud dans lequel vous souhaitez créer le secret.
- PROJECT_ID : ID de projet Google Cloud.
- SECRET_ID: ID du secret ou identifiant complet du secret.
- KMS_PROJECT_ID: ID de votre projet Google Cloud exécutant Cloud Key Management Service.
- KMS_KEY_LOCATION: nom de l'emplacement de votre clé Cloud KMS. Il doit être identique à celui de votre secret.
- YOUR_KEY_RING: nom du trousseau de clés Cloud KMS dans lequel vous avez stocké votre clé CMEK.
- YOUR_CMEK_KEY: clé de chiffrement gérée par le client (CMEK) spécifique que vous avez créée dans le trousseau de clés de votre choix dans Cloud KMS.
Méthode HTTP et URL :
POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID
Corps JSON de la requête :
{"customer_managed_encryption": {"kms_key_name": "projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"}}
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID"
PowerShell
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-03-27T13:30:07.437859Z", "etag": "\"1614a467b60423\"" "customerManagedEncryption": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key" } }
Mettre à jour un secret existant pour utiliser CMEK
Pour mettre à jour un secret existant afin qu'il utilise CMEK, utilisez l'une des méthodes suivantes:
Console
-
Accédez à la page Secret Manager dans la console Google Cloud.
-
Sur la page Secret Manager, cliquez sur l'onglet Secrets régionaux.
-
Pour modifier un secret, utilisez l'une des méthodes suivantes:
-
Recherchez le secret dans la liste, puis cliquez sur le menu
Actions associé à ce secret. Dans le menu Actions, cliquez sur Modifier. -
Cliquez sur le nom du secret pour accéder à sa page d'informations. Sur la page des détails du secret, cliquez sur
Modifier le secret.
-
-
Sur la page Modifier le secret, accédez à la section Chiffrement.
-
Sous Chiffrement, sélectionnez Clé de chiffrement gérée par le client (CMEK), puis votre clé CMEK dans la liste Clé de chiffrement. Assurez-vous que votre clé CMEK existe à l'emplacement spécifié et que votre projet Secret Manager dispose des autorisations nécessaires pour l'utiliser.
-
Cliquez sur Mettre à jour le secret.
gcloud
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- SECRET_ID: ID du secret ou identifiant complet du secret
- LOCATION: emplacement Google Cloud du secret
- CMEK_KEY: chemin d'accès complet à la clé CMEK spécifique dans Cloud Key Management Service qui protégera le secret
Exécutez la commande suivante :
Linux, macOS ou Cloud Shell
gcloud secrets update SECRET_ID --location=LOCATION \ --regional-kms-key-name=CMEK_KEY
Windows (PowerShell)
gcloud secrets update SECRET_ID --location=LOCATION ` --regional-kms-key-name=CMEK_KEY
Windows (cmd.exe)
gcloud secrets update SECRET_ID --location=LOCATION ^ --regional-kms-key-name=CMEK_KEY
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- LOCATION: emplacement Google Cloud du secret.
- PROJECT_ID : ID de projet Google Cloud.
- SECRET_ID: ID du secret ou identifiant complet du secret.
- KMS_PROJECT_ID: ID de votre projet Google Cloud exécutant Cloud Key Management Service.
- KMS_KEY_LOCATION: emplacement de votre clé Cloud KMS. Il doit être identique à celui de votre secret.
- YOUR_KEY_RING: nom du trousseau de clés Cloud KMS dans lequel vous avez stocké votre clé CMEK.
- YOUR_CMEK_KEY: clé de chiffrement gérée par le client (CMEK) spécifique que vous avez créée dans le trousseau de clés de votre choix dans Cloud KMS.
Méthode HTTP et URL :
PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=customer_managed_encryption
Corps JSON de la requête :
{"customer_managed_encryption": {"kms_key_name": "projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"}}"
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=customer_managed_encryption"
PowerShell
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=customer_managed_encryption" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-03-27T13:30:07.437859Z", "etag": "\"16211daf5f29c5\"" "customerManagedEncryption": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key" } }