Stockage des secrets arbitraires

Vous pouvez utiliser IBM Cloud® Secrets Manager pour stocker des secrets arbitraires qui sont utilisés pour accéder aux systèmes protégés qui se trouvent à l'intérieur ou à l'extérieur de IBM Cloud.

Un secret arbitraire est un type de valeur confidentielle d'application qui peut être utilisé pour contenir des données structurées ou non structurées, telles qu'une clé, un fichier de configuration ou tout autre élément d'information sensible. Après avoir créé le secret, vous pouvez l'utiliser pour connecter votre application à une ressource protégée, telle qu'une application ou une base de données tierce. Votre secret est stocké en toute sécurité dans votre instance de service Secrets Manager dédiée, où vous pouvez gérer de manière centralisée son cycle de vie.

Pour en savoir plus sur les types de secrets que vous pouvez gérer dans Secrets Manager, voir Qu'est-ce qu'un secret ?

Avant de commencer

Avant de commencer, vérifiez que vous disposez du niveau d'accès requis. Pour créer ou ajouter des secrets, vous devez utiliser le rôle de service Auteur ou supérieur.

Création de secrets arbitraires dans l'interface utilisateur

Pour ajouter un secret arbitraire à l'aide de l'interface utilisateur Secrets Manager, procédez comme suit.

  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 le tableau Secrets, cliquez sur Ajouter.

  4. Dans la liste des types secrets, cliquez sur la mosaïque Autre type de secret.

  5. Cliquez sur Suivant.

  6. Ajoutez un nom et une description pour facilement identifier votre secret.

  7. Sélectionnez le groupe de secretsEnvironnement et contraintes auxquels les secrets contenus doivent adhérer. Un utilisateur peut être associé à un groupe de secrets pour activer l'accès et la collaboration. que vous souhaitez attribuer au secret.

    Vous n'avez pas de groupe de secrets ? Dans la zone Groupe de secrets, vous pouvez cliquer sur Créer pour fournir un nom et une description pour un nouveau groupe. Votre secret est automatiquement ajouté au nouveau groupe. Pour plus d'informations sur les groupes de secrets, consultez Organisation de vos secrets.

  8. Facultatif : ajoutez des étiquettes pour vous aider à rechercher des secrets similaires dans votre instance.

  9. Facultatif: ajoutez des métadonnées à votre secret ou à une version spécifique de votre secret.

    1. Téléchargez un fichier ou entrez les métadonnées et les métadonnées de version au format JSON.
  10. Cliquez sur Suivant.

  11. Sélectionnez un fichier ou entrez la valeur de secret que vous souhaitez associer au secret.

Secrets Manager prend en charge les contenus basés sur du texte uniquement pour les secrets arbitraires. Si vous sélectionnez un fichier à affecter à un secret arbitraire, le service utilise le codage en base64 pour stocker les données dans votre instance. Pour accéder à ce secret plus tard, vous devez le décoder en base64. Envisagez d'apposer sur votre secret une étiquette contenant des données codées, telle que encode:base64, afin de pouvoir suivre les secrets qui nécessitent le décodage de base64.

  1. Facultatif : Activez l'expiration pour contrôler la durée de vie du secret.
  2. Pour définir une date d'expiration pour le secret, basculez le bouton d'expiration sur Oui.
  3. Cliquez sur Suivant.
  4. Passez en revue les détails de votre secret.
  5. Cliquez sur Ajouter.

Création de secrets arbitraires depuis interface de ligne de commande

Avant de commencer, suivez la documentation de l'interface de programmation pour définir votre point de terminaison API.

Pour créer un secret arbitraire à l'aide du plug-in Secrets Manager CLI, exécutez la commande ibmcloud secrets-manager secret-create. Vous pouvez spécifier le type de secret à l'aide de l'option --secret-type arbitrary. Par exemple, la commande suivante crée un secret arbitraire et stocke secret-data comme valeur.

Secrets Manager prend en charge les contenus basés sur du texte uniquement pour les secrets arbitraires. Si vous devez télécharger un fichier binaire, vous devez d'abord coder les données en base64 afin de pouvoir les transmettre à l'interface de ligne de commande Secrets Manager dans une chaîne à une seule ligne. Pour accéder à ce secret dans sa forme originale ultérieurement, vous devez le décoder en base64. Envisagez d'apposer sur votre secret une étiquette contenant des données codées, telle que encode:base64, afin de pouvoir suivre les secrets qui nécessitent le décodage de base64.

ibmcloud secrets-manager secret-create \
    --secret-name example-arbitrary-secret \
    --secret-description "Description of my arbitrary secret." \
    --secret-type arbitrary \
    --secret-group-id default \
    --secret-labels dev,us-south \
    --secret-expiration-date 2023-10-05T11:49:42Z \
    --arbitrary-payload secret-data \
    --secret-custom-metadata '{"anyKey": "anyValue"}' \
    --secret-version-custom-metadata '{"anyKey": "anyValue"}'

La commande génère en sortie la valeur d'ID du secret ainsi que d'autres métadonnées. Pour plus d'informations sur les options de commande, voir ibmcloud secrets-manager secret-create.

Création de secrets arbitraires à l'aide de l'API

Vous pouvez créer des secrets arbitraires à l'aide d'un programme en appelant l'API Secrets Manager.

L'exemple suivant montre une requête que vous pouvez utiliser pour créer et stocker un secret arbitraire. Lorsque vous appelez l'API, remplacez les variables d'ID et le jeton IAM par les valeurs spécifiques à votre instance Secrets Manager.

Vous pouvez stocker des métadonnées adaptées aux besoins de votre organisation à l'aide des paramètres de demande custom_metadata et version_custom_metadata. Les valeurs de version_custom_metadata sont renvoyées uniquement pour les versions d'un secret. Les métadonnées personnalisées de votre secret sont stockées comme toutes les autres métadonnées, pour un maximum de 50 versions, et vous ne devez pas inclure de données confidentielles.

Secrets Manager prend en charge les contenus basés sur du texte uniquement pour les secrets arbitraires. Si vous devez télécharger un fichier binaire, vous devez d'abord coder les données en base64 afin de pouvoir les transmettre à l'API Secrets Manager dans une chaîne à une seule ligne. Pour accéder à ce secret dans sa forme originale ultérieurement, vous devez le décoder en base64. Envisagez d'apposer sur votre secret une étiquette contenant des données codées, telle que encode:base64, afin de pouvoir suivre les secrets qui nécessitent le décodage de base64.

curl -X POST
    -H "Authorization: Bearer {iam_token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
          "custom_metadata": {
            "metadata_custom_key": "metadata_custom_value"
          },
          "description": "Description of my arbitrary secret.",
          "expiration_date": "2023-10-05T11:49:42Z",
          "labels": [
            "dev",
            "us-south"
          ],
          "name": "example-arbitrary-secret",
          "payload": "secret-data",
          "secret_group_id": "67d025e1-0248-418f-83ba-deb0ebfb9b4a",
          "secret_type": "arbitrary",
          "version_custom_metadata": {
          "custom_version_key": "custom_version_value"} }' \
      "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"

Une réponse ayant abouti renvoie la valeur d'ID du secret ainsi que d'autres métadonnées. Pour plus d'informations sur les paramètres de demande obligatoires et facultatifs, consultez la Référence des API.

Création de secrets arbitraires avec Terraform

Vous pouvez créer des secrets arbitraires à l'aide d'un programme en utilisant Terraform pour Secrets Manager.

Suivez les meilleures pratiques de Terraform pour protéger les variables d'entrée sensibles telles que les données d'identification secrètes. Pour plus d'informations, voir Protection des variables d'entrée sensibles.

L'exemple suivant illustre une configuration que vous pouvez utiliser pour créer un secret arbitraire en définissant des valeurs sensibles dans un fichier terraform.tfvars.

  1. Définissez une variable d'entrée pour le contenu de secret arbitraire dans un fichier variables.tf.

    		variable "arbitrary_secret_payload" {
    			description = "Arbitrary secret payload"
    			type        = string
    			sensitive   = true
    		}
    
  2. Affectez une valeur à la variable arbitrary_secret_payload dans un fichier terraform.tfvars.

    En définissant des valeurs avec un fichier .tfvars, vous pouvez séparer les valeurs sensibles du reste de vos valeurs de variable et vous assurer que les utilisateurs qui travaillent avec votre configuration savent quelles valeurs sont sensibles. Pour des raisons de sécurité, vous devez gérer et partager le fichier .tfvars uniquement avec vos utilisateurs disposant des droits d'accès appropriés. Vous devez également veiller à ne pas stocker les fichiers .tfvars avec des valeurs sensibles dans un contrôle de version tel que Github, en texte clair.

    	arbitrary_secret_payload = "my sensitive arbitrary payload"
    
  3. Créez le secret arbitraire dans le fichier main.tf.

    	resource "ibm_sm_arbitrary_secret" "sm_arbitrary_secret" {
    		instance_id = local.instance_id
    		region = local.region
    		description = "Extended description for this arbitrary secret"
    		labels = [ "tf-resource"]
    		name = "test-arbitrary-secret"
    		secret_group_id = ibm_sm_secret_group.sm_secret_group_test.secret_group_id
    		payload = var.arbitrary_secret_payload
    	}
    

Vous pouvez également utiliser les modules Terraform IBM (TIM) préconstruits, libres et prêts à l'emploi pour Secrets Manager Secret afin de créer des secrets arbitraires avec Terraform. En savoir plus sur les modules Terraform IBM.