Verrouillage des secrets

Lorsque vous travaillez avec IBM Cloud® Secrets Manager, vous pouvez créer des verrous sur vos secrets afin d'empêcher qu'ils soient supprimés ou modifiés lorsqu'ils sont utilisés par vos applications.

Par défaut, un utilisateur ou une application autorisé peut modifier les secrets que vous gérez dans Secrets Manager à tout moment. Parfois, par exemple lors d'un audit de sécurité, vous pouvez empêcher une personne de votre équipe de supprimer accidentellement un secret. Ou, si vous prévoyez de faire pivoter vos secrets régulièrement, vous pouvez être à la recherche d'un moyen de déployer en toute sécurité la version la plus récente d'un secret après une rotation. Avec les verrous, vous pouvez générer des flux de travaux automatisés qui vous aident à:

  • Indique qu'un secret est utilisé par une ou plusieurs applications ou services.
  • Empêche la suppression des données secrètes même après l'expiration d'un secret.
  • Supprimez en toute sécurité les anciennes versions des secrets une fois que la version la plus récente a été entièrement déployée dans vos applications.
  • Evitez les temps d'indisponibilité inopinée dans vos applications.

Pour en savoir plus sur les instructions suggérées pour l'utilisation des verrous afin d'éviter les temps d'indisponibilité des applications, consultez la rubrique Meilleures pratiques pour la rotation et le verrouillage des secrets.

Avant de commencer

Avant de commencer, vérifiez que vous disposez du niveau d'accès requis. Pour gérer les verrous sur vos secrets, vous avez besoin du rôle de service Manager.

Verrouillage des secrets

Le verrouillage d'un secret empêche toute opération pouvant entraîner la modification ou la suppression de ses données secrètes. Pour verrouiller un secret, vous devez associer un ou plusieurs verrous à sa version actuelle ou précédente.

Lorsque vous essayez de modifier ou de supprimer un secret alors qu'il est verrouillé, Secrets Manager rejette la demande avec une réponse HTTP 412 Precondition Failed. Un message d'erreur similaire à l'exemple suivant s'affiche :

The requested action can't be completed because the secret version is locked.

Si vous utilisez des secrets dynamiquesValeur unique, telle qu'un mot de passe ou une clé d'API, créée dynamiquement et louée à une application qui requiert l'accès à une ressource protégée. Une fois qu'un secret dynamique atteint la fin de son bail, l'accès à la ressource protégée est révoqué et le secret est supprimé automatiquement., tels que des données d'identification IAM, le verrouillage de vos secrets signifie également que, par défaut, ces secrets ne sont pas accessibles en lecture ou en accès. Pour plus d'informations, voir Pourquoi ne puis-je pas lire un secret de données d'identification IAM verrouillé?

Un secret d'identification personnalisé ne peut être verrouillé qu'une fois toutes ses tâches accomplies.

Si un secret verrouillé atteint sa date d'expiration, il reste à l'état Actif et ses données restent accessibles à vos applications. Secrets Manager fait passer le secret à l'état Détruit et supprime définitivement les données de secret arrivées à expiration uniquement après la suppression de tous les verrous sur le secret.

SSL / TLS Les certificats atteignent toujours leur date d'expiration définie et passent à l'état détruit même s'ils sont verrouillés. Pour plus d'informations, voir Pourquoi mon certificat verrouillé est-il passé à l'état Détruit?

  • Si vous tentez de faire pivoter un secret alors que sa version actuelle est verrouillée et que la version précédente est déverrouillée (ou si une rotation automatique est planifiée), la demande de rotation du secret est autorisée. La version du secret en cours devient la nouvelle version précédente, en conservant ses verrous existants. Une nouvelle version en cours est créée sans aucun verrou.
  • Si vous essayez de faire pivoter un secret alors que sa version précédente est verrouillée (ou si une rotation automatique est planifiée), votre demande de rotation du secret est refusée. La rotation n'est autorisée qu'une fois que tous les verrous de la version de secret précédente ont été supprimés.

Création de verrous dans l'interface utilisateur

Vous pouvez créer jusqu'à 1000 verrous sur un secret à l'aide de l'interface utilisateur Secrets Manager. Chaque verrou peut être utilisé pour représenter une application ou un service unique qui utilise votre secret.

Un secret est considéré comme verrouillé une fois que vous lui avez associé un ou plusieurs verrous. Un verrou ne peut être appliqué que sur une version de secret qui contient du contenu actif ou des données de secret.

Pour vous aider à créer un nouveau verrou et à supprimer des verrous plus anciens en une seule opération, vous pouvez également spécifier un mode facultatif lors de la création du verrou.

Modes de verrouillage optionnels et leur description
Mode Description
Supprimer les verrous précédents Supprime tous les autres verrous correspondant au nom que vous spécifiez. Si des verrous correspondants sont trouvés dans la version précédente du secret, ils sont supprimés lorsque votre nouveau verrou est créé.

Par exemple, supposons que la version précédente de votre secret contienne un verrou lock-x. La création d'un verrou sur la version actuelle de votre secret et l'activation de l'option Supprimer les verrous correspondants entraîne la suppression de lock-x de la version précédente.

Supprimer les verrous précédents et supprimer les données de la version précédente Comme l'option précédente, mais supprime également définitivement les données de la version précédente du secret si celle-ci n'est associée à aucun verrou.

Supposons que la version précédente de votre secret contienne un verrou lock-z. La création d'un verrou sur la version actuelle de votre secret avec les options Supprimer les verrous correspondants et Supprimer les données de la version précédente entraîne la suppression de lock-z de la version précédente. De plus, étant donné que la version précédente ne possède pas d'autres verrous qui lui sont associés, les données secrètes associées à la version précédente sont également supprimées.

Création d'un verrou sur la version actuelle du secret

Vous pouvez verrouiller la version actuelle d'un secret à l'aide de l'interface utilisateur Secrets Manager. Une demande réussie associe un nouveau verrou à la version actuelle de votre secret sélectionné ou remplace un verrou du même nom s'il existe déjà.

  1. Dans la console, cliquez sur l'icône Menu Icône de menu > Liste de ressources.
  2. Dans la liste des services, sélectionnez votre instance de Secrets Manager.
  3. Dans l'interface utilisateur Secrets Manager, accédez à la liste desSecrets.
  4. Dans la ligne correspondant au secret que vous souhaitez verrouiller, cliquez sur le menu « Actions » Icône « Actions » > Verrous > Créer un verrou.
  5. Ajoutez un nom et une description pour identifier facilement le cadenas.
  6. Dans la liste des versions à verrouiller, sélectionnez En cours.
  7. Facultatif: joignez des attributs JSON à votre verrou. Vous pouvez inclure un objet JSON avec chaque verrou pour conserver toutes les informations dont vous pourriez avoir besoin pour un flux automatisé. Par exemple, une paire clé-valeur qui identifie la ressource que vous souhaitez associer à ce verrou.
  8. Facultatif: rendez le verrou exclusif. Choisissez cette option pour supprimer tous les autres verrous correspondant au nom que vous avez indiqué. Si des verrous correspondants sont trouvés dans la version précédente du secret, ils sont supprimés lorsque votre nouveau verrou est créé.
  9. Facultatif : supprimer les données de la version précédente. Sélectionnez cette option pour supprimer définitivement les données de la version de secret précédente si aucun verrou ne lui est associé.
  10. Cliquez sur Créer. Un nouveau verrou est créé pour la version de secret sélectionnée.

Création d'un verrou sur la version de secret précédente

Vous pouvez verrouiller la version précédente d'un secret à l'aide de l'interface utilisateur Secrets Manager. Une demande réussie associe un nouveau verrou à la version précédente de votre secret sélectionné ou remplace un verrou du même nom s'il existe déjà.

  1. Dans l'interface utilisateur Secrets Manager, accédez à la liste desSecrets.
  2. Dans la ligne correspondant au secret que vous souhaitez verrouiller, cliquez sur le menu « Actions » Icône « Actions » > Verrous > Créer un verrou.
  3. Ajoutez un nom et une description pour identifier facilement le cadenas.
  4. Dans la liste des versions à verrouiller, sélectionnez Précédent.
  5. Facultatif: joignez des attributs JSON à votre verrou. Vous pouvez inclure un objet JSON avec chaque verrou pour conserver toutes les informations dont vous pourriez avoir besoin pour un flux automatisé. Par exemple, une paire clé-valeur qui identifie la ressource que vous souhaitez associer à ce verrou.
  6. Cliquez sur Créer. Un nouveau verrou est créé pour la version de secret sélectionnée.

Création de verrous à partir de l'interface en ligne de commande

Vous pouvez créer jusqu'à 1000 verrous sur un secret à l'aide de l'interface de ligne de commande Secrets Manager. Chaque verrou peut être utilisé pour représenter une application ou un service unique qui utilise votre secret.

Un secret est considéré comme verrouillé une fois que vous lui avez associé un ou plusieurs verrous. Un verrou ne peut être appliqué que sur une version de secret qui contient du contenu actif ou des données de secret.

Pour vous aider à créer un nouveau verrou et à supprimer des verrous plus anciens en une seule opération, vous pouvez également spécifier un mode facultatif lors de la création du verrou.

Modes de verrouillage optionnels et leur description
Mode Description
Supprimer les verrous précédents Supprime tous les autres verrous correspondant au nom que vous spécifiez. Si des verrous correspondants sont trouvés dans la version précédente du secret, ils sont supprimés lorsque votre nouveau verrou est créé.

Par exemple, supposons que la version précédente de votre secret contienne un verrou lock-x. La création d'un verrou sur la version actuelle de votre secret et l'activation de l'option Supprimer les verrous correspondants entraîne la suppression de lock-x de la version précédente.

Supprimer les verrous précédents et supprimer les données de la version précédente Comme l'option précédente, mais supprime également définitivement les données de la version précédente du secret si celle-ci n'est associée à aucun verrou.

Supposons que la version précédente de votre secret contienne un verrou lock-z. La création d'un verrou sur la version actuelle de votre secret avec les options Supprimer les verrous correspondants et Supprimer les données de la version précédente entraîne la suppression de lock-z de la version précédente. De plus, étant donné que la version précédente ne possède pas d'autres verrous qui lui sont associés, les données secrètes associées à la version précédente sont également supprimées.

Création d'un verrou sur la version actuelle du secret

Vous pouvez verrouiller la version actuelle d'un secret à l'aide de l'interface de ligne de commande Secrets Manager. Une demande réussie associe un nouveau verrou à la version actuelle de votre secret sélectionné ou remplace un verrou du même nom s'il existe déjà.

Pour créer un verrou sur la version actuelle d'un secret à l'aide du plug-in d'interface de ligne de commande Secrets Manager, exécutez la commande ibmcloud secrets-manager secret-locks-bulk-create. Vous pouvez spécifier le type de secret, l'ID de secret et le mode.

ibmcloud secrets-manager secret-locks-bulk-create \
    --id=exampleString \
    --locks='[{"name": "lock-example-1", "description": "lock for consumer 1", "attributes": {"anyKey": "anyValue"}}]' \
    --mode=remove_previous

Création de verrous à l'aide de l'API

Vous pouvez créer jusqu'à 1000 verrous sur un secret à l'aide de l'API Secrets Manager. Chaque verrou peut être utilisé pour représenter une application ou un consommateur unique qui utilise votre secret. Une demande réussie associe un nouveau verrou à votre secret ou remplace un verrou du même nom s'il existe déjà.

Un secret est considéré comme verrouillé une fois que vous lui avez associé un ou plusieurs verrous. Un verrou ne peut être appliqué que sur une version de secret qui contient du contenu actif ou des données de secret.

Pour vous aider à créer un nouveau verrou et à supprimer des verrous plus anciens en une seule opération, vous pouvez également spécifier un mode facultatif lors de la création du verrou.

Modes de verrouillage optionnels et leur description
Mode Paramètre de requête Description
Supprimer les verrous précédents mode=remove_previous Supprime tous les autres verrous correspondant au nom que vous spécifiez. Si des verrous correspondants sont trouvés dans la version précédente du secret, ils sont supprimés lorsque votre nouveau verrou est créé.

Par exemple, supposons que la version précédente de votre secret contienne un verrou lock-x. La création d'un verrou et l'activation du mode remove_previous sur la version de secret en cours entraînent la suppression de lock-x de la version précédente.

Supprimer les verrous précédents mode=remove_previous_and_delete Identique à l'option « remove_previous », mais supprime également définitivement les données de la version précédente du secret si celle-ci n'est associée à aucun verrou.

Supposons que la version précédente de votre secret contienne un verrou lock-z. La création d'un verrou et l'activation du mode remove_previous_and_delete sur la version de secret en cours entraînent la suppression de lock-z de la version précédente. De plus, étant donné que la version précédente ne possède pas d'autres verrous qui lui sont associés, les données secrètes associées à la version précédente sont également supprimées.

Création de verrous sur la version de secret en cours

La demande suivante crée deux verrous sur la version actuelle d'un secret. Lorsque vous appelez l'API, remplacez les variables d'ID et le jeton IAM par les valeurs spécifiques à votre instance Secrets Manager.

curl -X POST
-H "Authorization: Bearer {iam_token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
      "locks": [
        {
          "name": "lock-1",
          "description": "Lock for consumer 1.",
          "attributes": {
            "key": "value"
          }
        },
        {
          "name": "lock-2",
          "description": "Lock for consumer 2.",
          "attributes": {
            "key": "value"
            }
          }
        ]
      }' \
    "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{id}/locks_bulk"

Si vous générez un flux automatisé, vous pouvez utiliser l'objet attributes pour spécifier des données clé-valeur avec chaque verrou sur votre secret. Par exemple, vous pouvez inclure un identificateur de ressource, tel qu'un ID ou un nom de ressource de cloud (CRN).

Une réponse réussie renvoie des détails sur les nouveaux verrous, ainsi que d'autres métadonnées.

{
  "secret_id": "0cf4addb-7a90-410b-a3a7-a15bbe2b7909",
  "secret_group_id": "d8371728-95c8-4c12-b2af-1af98adb9e41",
  "versions": [
    {
      "version_id": "7bf3814d-58f8-4df8-9cbd-f6860e4ca973",
      "version_alias": "current",
      "locks": [
        "lock-3",
        "lock-4"
      ],
      "payload_available": true
    },
    {
      "version_id": "5bf89b0c-df55-c8d5-7ad6-8816951c6784",
      "version_alias": "previous",
      "locks": [
        "lock-1",
        "lock-2"
      ],
      "payload_available": true
    }
  ]
}

Pour plus d'informations sur les paramètres de demande obligatoires et facultatifs, voir la Référence des API.

Création de verrous sur la version précédente du secret

La demande suivante crée deux verrous sur la version précédente d'un secret. Lorsque vous appelez l'API, remplacez les variables d'ID et le jeton IAM par les valeurs spécifiques à votre instance Secrets Manager.

curl -X POST
    -H "Authorization: Bearer {iam_token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
      "locks": [
        {
          "name": "lock-1",
          "description": "Lock for consumer 1.",
          "attributes": {
            "key": "value"
            }
          },
          {
            "name": "lock-2",
            "description": "Lock for consumer 2.",
            "attributes": {
              "key": "value"
              }
            }
          ]
        }' \ "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{id}/versions/{version_id}/locks_bulk"

Une réponse réussie renvoie des détails sur les nouveaux verrous, ainsi que d'autres métadonnées.

{
  "secret_id": "0cf4addb-7a90-410b-a3a7-a15bbe2b7909",
  "secret_group_id": "d8371728-95c8-4c12-b2af-1af98adb9e41",
  "versions": [
    {
      "version_id": "7bf3814d-58f8-4df8-9cbd-f6860e4ca973",
      "version_alias": "current",
      "locks": [
        "lock-3",
        "lock-4"
      ],
      "payload_available": true
    },
    {
      "version_id": "5bf89b0c-df55-c8d5-7ad6-8816951c6784",
      "version_alias": "previous",
      "locks": [
        "lock-1",
        "lock-2"
      ],
      "payload_available": true
    }
  ]
}

Pour plus d'informations sur les paramètres de demande obligatoires et facultatifs, voir la Référence des API.

Déverrouillage des secrets

Un secret est considéré comme déverrouillé et ne peut être modifié ou supprimé que lorsque tous les verrous qui lui sont associés ont été supprimés. Vous pouvez utiliser l'interface utilisateur Secrets Manager ou les API pour supprimer les verrous associés à un secret.

Suppression des verrous dans l'interface utilisateur

Vous pouvez supprimer un verrou associé à un secret existant à l'aide de l'interface utilisateur Secrets Manager.

  1. Dans la console, cliquez sur l'icône Menu Icône de menu > Liste de ressources.
  2. Dans la liste des services, sélectionnez votre instance de Secrets Manager.
  3. Dans l'interface utilisateur Secrets Manager, accédez à la liste desSecrets.
  4. Dans la ligne correspondant au secret que vous souhaitez mettre à jour, cliquez sur le menu « Actions » Icône « Actions » > Serrures.
  5. Dans la ligne correspondant au verrou que vous souhaitez supprimer, cliquez sur le menu « Actions » Icône « Actions » > Supprimer.
  6. Pour confirmer la suppression, entrez le nom du secret. Cliquez sur Supprimer.

Votre verrou est maintenant supprimé. Pour déverrouiller complètement le secret, vous pouvez supprimer tous les verrous existants.

Suppression des verrous via l'API

Vous pouvez utiliser l'API Secrets Manager pour supprimer un ou plusieurs verrous associés à la version de secret spécifique.

Une demande réussie supprime les verrous que vous spécifiez. Pour supprimer tous les verrous, vous pouvez transmettre {"locks": ["*"]} dans le corps de la demande. Sinon, indiquez les noms des verrous que vous souhaitez supprimer. Par exemple, {"locks": ["lock-1", "lock-2"]}.

Pour savoir si un secret contient des verrous, vérifiez la zone locks_total qui est renvoyée dans les métadonnées de votre secret.

curl -X DELETE  
  -H "Authorization: Bearer {iam_token}" \
  -H "Accept: application/json" \
  "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{secret_id}/versions/{id}/locks_bulk?name=[ "lock-example-1" ]"

Pour plus d'informations sur les paramètres de demande obligatoires et facultatifs, voir la Référence des API.