Ajouter le chiffrement CMEK aux secrets régionaux

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 une sécurité potentiellement plus stricte des règles d'administration, des fonctionnalités d'audit et de conformité.
  • 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:

Avant de commencer

  1. Activez l'API Secret Manager une fois par projet.
  2. Attribuez le rôle "Administrateur de Secret Manager" (roles/secretmanager.admin) au projet, au dossier ou à l'organisation.
  3. 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, définissez 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.
  4. 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 chiffrement CMEK

Pour créer un secret avec le chiffrement CMEK, utilisez l'une des méthodes suivantes :

Console

  1. Accédez à la page Secret Manager dans la console Google Cloud.

    Accéder à Secret Manager

  2. Sur la page Secret Manager, cliquez sur l'onglet Secrets régionaux, puis Cliquez sur Créer un secret régional.

  3. 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.

  4. 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 aussi importer un fichier texte contenant la valeur du secret l'option Importer un fichier. Cette action crée automatiquement la version du secret.

  5. Choisissez l'emplacement de stockage de votre secret régional dans la liste Région.

  6. 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 les autorisations nécessaires pour utiliser la clé.

  7. 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 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 qui exécute 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 d'utiliser une clé CMEK, utilisez l'une des méthodes suivantes:

Console

  1. Accédez à la page Secret Manager dans la console Google Cloud.

    Accéder à Secret Manager

  2. Sur la page Secret Manager, cliquez sur l'onglet Secrets régionaux.

  3. Pour modifier un secret, utilisez l'une des méthodes suivantes :

    • Repérez le secret dans la liste et cliquez sur le bouton 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.

  4. Sur la page Modifier le secret, accédez à la section Chiffrement.

  5. 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.

  6. 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 vers 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 qui exécute 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"
  }
}

Étape suivante