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 :
| 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.
Les modèles sont également accompagnés d'une intégration de l'outil Vault HashiCorp, comme dans l'exemple suivant :
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é :
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.