Utiliser les intégrations de secrets dans vos chaînes d'outils

Les fonctionnalités de gestion des secrets fournies dans les interfaces utilisateur de la chaîne d'outils et du pipeline permettent de sélectionner des secrets en chambre forte en utilisant les intégrations de secrets pour IBM Cloud® Secrets Manager, IBM® Key Protect, ou HashiCorp Vault. En utilisant la boîte de dialogue Secrets Picker, un éditeur de chaîne d'outils ou de pipeline peut sélectionner des secrets nommés à partir d'une intégration de secrets liés qui est configurée par CRN (Cloud Resource Name) ou par nom, qui est ensuite résolue par référence au moment de l'exécution au sein de la chaîne d'outils et du pipeline. Une fois qu'un secret est choisi, un CRN ou une référence de secret canonique est injecté dans la chaîne d'outils correspondante ou dans la propriété sécurisée du pipeline où le format est soit crn:v1:...secret:<secret-guid> s'il s'agit d'une intégration Secrets Manager qui est configurée par CRN, ou bien {vault::integration-name.secret-name} s'il s'agit d'une intégration de coffre-fort qui utilise l'un des fournisseurs pris en charge et qui est configurée par nom.

Le format de référence canonique par nom ne résout pas actuellement un secret qui comprend le caractère point dans le nom du secret parce que ce caractère est utilisé pour délimiter chaque section du chemin canonique.

Quel que soit le type de référence secrète utilisé, soit par CRN soit par nom, les composants de l'interface utilisateur frontale et la boîte de dialogue Secrets Picker n'utilisent qu'une référence secrète. La valeur résolue d'une référence secrète by CRN ou by name n'est jamais exposée au front-end et est toujours résolue dynamiquement au moment de l'exécution au sein d'une chaîne d'outils et d'un pipeline sur la base d'une autorisation autorisée (configurée à l'aide des politiques d'autorisation et d'accès d'IAM).

Au sein de IBM Cloud®, le processus dynamique de résolution des par CRN et par nom références de secrets dans les chaînes d'outils et les pipelines est effectué en utilisant des points de terminaison privés virtuels (VPE) internes vers tous les IBM Cloud® Secrets Manager et IBM® Key Protect dans toutes les régions. Cela garantit que toutes les données de demande et de réponse entre les chaînes d'outils, les pipelines et les instances de fournisseurs IBM Cloud® Secrets Manager et IBM® Key Protect sont conservées dans le réseau privé IBM Cloud à l'intérieur des frontières et ne transitent pas par des canaux de réseau publics.

Outre la sélection manuelle des secrets choisis, un par un, parmi toutes les intégrations de secrets liés dans une chaîne d'outils, il est également possible d'utiliser un Secret Hint. Cette option permet de prédéfinir un modèle de chaîne d'outils avec des noms de secrets suggérés (également connus sous le nom de Hints) qui constituent une référence secrète abrégée. Le format d'un indice secret est {vault::secret-name} sans nom d'intégration secrète. Cela offre une certaine flexibilité à l'auteur de la chaîne d'outils en ce sens que tous les noms de secrets requis peuvent être pré-remplis dans un toolchain.yml, puis ces noms sont automatiquement résolus en fonction des intégrations de secrets configurées pour la chaîne d'outils.

Comme décrit précédemment, vous pouvez configurer Secrets Manager pour référencer les secrets par CRN. Pour plus d'informations, voir Cloud Resource Names(CRN). Ce format permet une plus grande flexibilité car vous pouvez référencer des secrets d'une instance Secrets Manager dans un compte différent si l'autorisation correcte est en place. Pour plus d'informations, voir Configuration du Secrets Manager.

Un Hint est un nom suggéré par défaut qui est automatiquement résolu par rapport au premier secret correspondant portant le même nom dans toutes les intégrations de secrets par nom disponibles qui sont liées à la chaîne d'outils.

Secrets du pipeline DevSecOps

Les secrets utilisés dans l'IC et le CD sont décrits ci-dessous :

SecretsDevSecOps
Secret Conseil Informations
Clé d'API IBM Cloud ibmcloud-api-key Requis : CI & CD Utilisé pour s'authentifier auprès du nuage public IBM et effectuer un large éventail d'opérations
Clé privée GPG signing_key Requis : CI uniquement Il s'agit du certificat utilisé pour signer les images créées par le pipeline CI
Clé d'API du service d'agent privé IBM private-worker-service-api-key Requis : CI uniquement Clé API Service ID Utilisée pour exécuter des charges de travail de pipeline de livraison sur un service de travailleur privé Tekton
Jeton d'accès GitHub git-token Facultatif : CI & CD Utilisé pour s'authentifier auprès de GitHub et donner accès aux référentiels
Artifactory Jeton API artifactory-token Nécessaire : CI & CD Utilisé pour accéder aux images utilisées par les tâches du pipeline
Webhook Slack slack-webhook Optionnel : CI & CD Ce webhook est nécessaire si vous choisissez d'utiliser l'intégration de l'outil Slack pour poster des notifications sur l'état de la chaîne d'outils
ServiceNow Token API servicenow-api-token Nécessaire : CD uniquement Utilisé pour accéder à Service Now pour les opérations de gestion du changement
ID de rôle HashiCorp Vault role-id Nécessaire : CI & CD Utilisé pour s'authentifier auprès du serveur HashiCorp Vault
ID de secret HashiCorp Vault secret-id Nécessaire : CI & CD Utilisé pour s'authentifier auprès du serveur HashiCorp Vault
Clé d'API avec accès en écriture IBM Cloud Object Storage cos-api-key Nécessaire : CI & CD Utilisée pour s'authentifier auprès du service Object Storage- Cette clé doit avoir writer la permission
Mot de passe ou jeton d'authentification SonarQube sonarqube-password Facultatif : CI Utilisé pour s'authentifier auprès de l'analyseur de code source SonarQube

Si vous utilisez un serveur HashiCorp Vault, assurez-vous que l'intégration de l'outil HashiCorp Vault utilise la méthode AppRole Auth Method. Lorsque vous utilisez la méthode d'authentification AppRole, vous avez besoin de role-id et secret-id pour intégrer avec succès le serveur HashiCorp Vault à la chaîne d'outils. Étant donné que role-id et secret-id sont des secrets en soi, il est recommandé de les stocker en utilisant une intégration d'outil IBM Key Protect afin qu'ils puissent être récupérés et appliqués en toute sécurité dans le flux de travail de la chaîne d'outils. Tous les autres secrets de la chaîne d'outils doivent être stockés et récupérés en utilisant l'intégration de l'outil HashiCorp Vault.

Si la propriété d'environnement du pipeline git-token n'est pas définie, ibmcloud-api-key est utilisé par défaut pour récupérer le jeton d'accès Git Repos and Issue Tracking. Cependant, si ibmcloud-api-key n'a pas accès à git, git-token doit être défini.

Configuration des magasins de secrets

Avec IBM Cloud, vous pouvez choisir parmi différentes offres de gestion des secrets et de protection des données qui vous aident à protéger vos données sensibles et à centraliser vos secrets. Vous pouvez choisir entre les intégrations de chambre forte en fonction de vos besoins, comme expliqué dans Gestion des IBM Cloud secrets. Cette documentation fournit des informations sur les conditions préalables et sur l'utilisation d'une liste de noms secrets prescrits, également connus sous le nom d'indices. En utilisant les suggestions présentées dans un modèle, des secrets préconfigurés peuvent être automatiquement définis dans la chaîne d'outils sans qu'il soit nécessaire de les sélectionner manuellement à partir des diverses intégrations de coffre qui sont associées à la chaîne d'outils.

Utilisez IBM Cloud® Secrets Manager pour stocker et appliquer en toute sécurité des secrets tels que des clés API, des signatures d'images ou des informations d'identification HashiCorp Vault qui font partie de votre chaîne d'outils.

Secrets Manager formulaire d'intégration d'outils
IBM Secrets Manager Tool Integration

Les modèles sont également accompagnés d'une intégration de l'outil Vault HashiCorp, comme dans l'exemple suivant :

Formulaire d'intégration de l'outil de la chambre forte deHashiCorp avec champs obligatoires et valeurs d'exemple
Intégration de l'outil de la chambre forte deHashiCorp

Pour utiliser HashiCorp Vault, vous devez fournir les informations suivantes :

Nom
Un nom pour l'intégration de cet outil. Il est affiché dans la chaîne d'outils.
URL de serveur
Le serveur URL de votre instance HashiCorp Vault. Par exemple, https://<vault-service>.<org>.com:8200.
Intégration URL
Le site URL vers lequel vous souhaitez naviguer lorsque vous cliquez sur la tuile HashiCorp Vault Integration.
Chemin des secrets
Le chemin de montage où vos secrets sont stockés dans votre instance HashiCorp Vault.
Méthode d'authentification
La méthode d'authentification pour votre instance HashiCorp Vault. Utilisez AppRole.
ID de rôle
Identifiant qui sélectionne le site AppRole par rapport auquel les autres références sont évaluées.
ID secret
Certificat requis par défaut pour toute connexion (avec secret_id) et destiné à être toujours secret.

Les modèles sont également accompagnés d'un outil IBM® Key Protect for IBM Cloud® intégré :

Key Protect Formulaire d'intégration de l'outil avec champs obligatoires et valeurs d'exemple
Intégration de l'outilIBM Key Protect

Si vous avez stocké les role id et secret id dans Key Protect à l'avance, vous pouvez sélectionner l'instance Key Protect qui contient ces secrets dans la carte d'outils, comme le montre la figure 2. Une fois cela fait, vous pouvez cliquer sur les icônes de clé des champs role id et secret id dans la carte d'outils HashiCorp Vault, et utiliser le sélecteur pour appliquer les secrets à ces champs.

De même, tous les autres secrets utilisés dans la chaîne d'outils ont une icône de clé attachée au champ de texte. Vous pouvez utiliser le même contrôle de sélection pour appliquer les secrets de HashiCorp Vault à toutes les instances restantes.