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 comment mettre à jour les secrets existants pour utiliser des clés CMEK.

Présentation

La fonctionnalité CMEK ajoute une couche de sécurité et de contrôle supplémentaire pour vos données sensibles stockées en tant que secrets régionaux. Vous pouvez utiliser CMEK pour atteindre les objectifs suivants :

  • Contrôlez 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 :

Avant de commencer

  1. Activez l'API Secret Manager une fois pour chaque projet.
  2. Attribuez le rôle "Administrateur Secret Manager" (roles/secretmanager.admin) au niveau du projet, du dossier ou de l'organisation.
  3. Authentifiez-vous 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 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 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 de clés CMEK dont vous avez besoin pour cette étape, consultez 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 chiffrement CMEK, utilisez l'une des méthodes suivantes :

Console

  1. Dans la console Google Cloud , accédez à la page Secret Manager.

    Accéder à Secret Manager

  2. Sur la page Secret Manager, cliquez sur l'onglet Secrets régionaux, puis 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 é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.

  5. Dans la liste Région, sélectionnez l'emplacement où vous souhaitez stocker votre secret régional.

  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 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 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 : Google Cloud emplacement dans lequel vous souhaitez créer le secret.
  • PROJECT_ID : ID du 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 s'agir du même emplacement que votre secret.
  • YOUR_KEY_RING : nom du trousseau de clés dans Cloud KMS où 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 CMEK, utilisez l'une des méthodes suivantes :

Console

  1. Dans la console Google Cloud , accédez à la page Secret Manager.

    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 :

    • Recherchez le secret dans la liste, puis cliquez sur le menu Actions associé. Dans le menu Actions, cliquez sur Modifier.

    • Cliquez sur le nom du secret pour accéder à la page d'informations le concernant. 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 sélectionnez 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 utiliser la clé.

  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 : Google Cloud emplacement 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 : Google Cloud emplacement du secret.
  • PROJECT_ID : ID du 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 s'agir du même emplacement que votre secret.
  • YOUR_KEY_RING : nom du trousseau de clés dans Cloud KMS où 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"
  }
}

Étapes suivantes