Configuration de l'infrastructure DevSecOps et de la chaîne d'outils CI pour le déploiement d'une application sécurisée
Utilisez ce tutoriel pour la configuration et la mise à disposition automatisés de l'infrastructure de vos chaînes d'outils d'EC et de CD à l'aide d'un modèle de démarrage rapide Terraform. Le modèle suit les meilleures pratiques de conformité et de sécurité de DevSecOps. Le modèle utilise un espace de travail IBM Cloud® Schematicsqui automatise la création de l'infrastructure requise pour le déploiement sécurisé de votre application sur Kubernetes ou Red Hat® OpenShift®. Le modèle utilise la structureDevSecOps. de pipeline de la chaîne d'outils IBM Cloud® Continuous Delivery La chaîne d'outils est préconfigurée pour une distribution continue (CD) avec l'intégration de l'inventaire, la gestion des modifications, la collecte des preuves et le déploiement.
IBM Cloud Schematics fournit Terraform-as-a-Service qui vous permet d'utiliser un langage de script de haut niveau afin de modéliser les ressources de votre choix dans votre environnement IBM Cloud et d'activer Infrastructure as Code (IaC). Terraform est un logiciel open source développé par HashiCorp. Terraform permet une mise à disposition prévisible et cohérente des ressources pour générer rapidement des environnements de cloud complexes et à plusieurs niveaux.
Au cours de ce tutoriel, vous allez suivre une procédure facile en trois étapes pour créer un espace de travail Schematics, appliquer un plan d'exécution Terraform et mettre à jour la valeur des propriétés d'environnement. Lorsque vous appliquez le plan, l'espace de travail Schematics configure votre infrastructure sécurisée. Cette infrastructure peut être partagée avec votre équipe et fonctionne pour les modèles de chaînes d'outils CI et CD DevSecOpsMéthodologie qui intègre les pratiques de sécurité au développement logiciel et au cycle de vie des opérations. L'objectif de la fusion est de prioriser l'équilibre entre la vitesse de développement et la sécurité. CI et CD.
Au cours de la configuration automatisée de l'infrastructure, les ressources créées sont mises à disposition automatiquement en utilisant les valeurs par défaut des modèles CI et CD de DevSecOps. Vous trouverez ces valeurs par défaut dans la section Variables de l'espace de travail Schematics. Les ressources créées sont les suivantes :
- Un cluster dans IBM Cloud® Kubernetes Service ou Red Hat OpenShift sur IBM Cloud.
- Une instance et un compartiment IBM Cloud Object Storage standard.
- IBM Cloud® Secrets Manager. Sachez qu'une instance Secrets Manager seulement est autorisée. Si vous disposez déjà d'un service Secrets Manager, veillez à remplacer la
valeur par défaut de
sm_service_nameà l'étape 2. - Une clé de signature d'image GPG.
- Une chaîne d'outils CI DevSecOps qui génère, teste et déploie un exemple d'application Node.js en suivant les meilleures pratiques de conformité et de sécurité.
Avant de commencer
- Pour suivre ce tutoriel, utilisez un compte IBM Cloud de type Paiement à la carte ou Abonnement dont vous êtes propriétaire ou pour lequel vous disposez de droits d'administrateur complets. Si vous disposez déjà d'un compte IBM Cloud et que vous devez le mettre à niveau, consultez Mise à niveau de votre compte.
- Installez l'interface de ligne de commande d'IBM Cloud si vous souhaitez interagir avec des éléments de la chaîne d'outils ou de l'infrastructure après leur création.
- Obtenir un jeton d'accès personnel GitLab. Entrez un nom pour votre jeton d'accès personnel. Créez votre jeton dans la même région que votre chaîne d'outils CI. Veillez à copier et à sauvegarder le jeton car vous en aurez besoin ultérieurement et vous ne pourrez plus y accéder.
- Créez une clé d'API IBM Cloud. Veillez à copier et à sauvegarder la valeur de la clé d'API car vous en aurez besoin ultérieurement et vous ne pourrez plus y accéder.
Création d'un espace de travail Schematics
-
Cliquez sur l'une des options ci-dessous pour la cible de déploiement de cluster. Cette action vous mène à la page Déployer sur IBM Cloud où vous créez un espace de travail Schematics. Renseignez les zones requises dans cette page, puis cliquez sur Suivant.
En fonction de l'option que vous sélectionnez, le modèle Terraform correspondant provenant de ce référentiel est importé automatiquement dans le nouvel espace de travail Schematics.
-
Vérifiez les informations, puis cliquez sur Créer. L'espace de travail Schematics est créé et la page Paramètres de l'espace de travail Schematics s'affiche.
Application du plan d'exécution Terraform
-
Dans la section Variables de la page Paramètres Schematics, entrez les valeurs de chaque variable. Les zones obligatoires n'ont pas de valeurs par défaut. Vous pouvez remplacer les valeurs par défaut.
Si vous remplacez la valeur
sm_service_name, le plan d'exécution Terraform utilise la ressource existante au lieu de créer une nouvelle ressource. -
Pour la variable
gitlab_token, entrez le jeton d'accès personnel que vous avez obtenu précédemment. -
Pour la variable
ibmcloud_api_key, entrez la clé d'API IBM Cloud que vous avez obtenue précédemment. -
Pour la variable
registry_namespace, entrez une valeur d'espace de nom Container Registry. Pour créer un espace de noms, voir Container Registry Namespaces. -
Pour la variable
kube_version, exécutez :ibmcloud ks versionssur une ligne de commande pour voir les versions disponibles. -
Optionnel. Si vous disposez déjà d'une instance Secrets Manager, entrez son nom dans la variable
sm_service_name. Sinon, ne modifiez pas cette variable. -
Optionnel. Si vous souhaitez modifier la taille ou l'emplacement de votre cluster, vous pouvez remplacer les variables suivantes :
datacenterdefault_pool_size,machine_type,hardware,public_vlan_numouprivate_vlan_num(les valeurs par défaut sont celles du centre de données dal12/us-south ). -
Optionnel. Cliquez sur Générer un plan. Cette action crée un plan d'exécution Terraform et recherche toute erreur de syntaxe dans la configuration. Dans la page Travaux Schematics, vous pouvez consulter les fichiers journaux afin d'identifier les erreurs et les ressources IBM Cloud qui doivent être créées, modifiées ou supprimées pour que le modèle Terraform soit dans un état correct.
-
Une fois que vous avez entré toutes les valeurs des variables et que vous êtes satisfait des modifications, cliquez sur Appliquer le plan pour exécuter le code de votre infrastructure.
Cette étape prend un certain temps (généralement de 20 à 30 minutes, mais elle peut prendre plus de temps), car un nouveau cluster Kubernetes ou OpenShift est créé.
-
Sur la page Travaux Schematics, vous pouvez visualiser le journal en développant le nom du travail.
-
Une fois le plan appliqué, affichez l'URL de la chaîne d'outils CI de DevSecOps IBM Cloud. L'URL se trouve près de la fin du fichier journal sur une ligne qui commence par
View the toolchain at:.
Si vous appliquez votre plan une deuxième fois, le cluster Kubernetes ou OpenShift précédemment créé et toutes les applications qui sont déployées dans le cluster sont supprimées et un nouveau cluster est créé. Toutefois, si vous remplacez le nom de la grappe par défaut, c'est cette grappe qui est utilisée.
Déploiement de l'application
Suivez les étapes suivantes pour exécuter le pipeline.
- Allez dans votre chaîne d'outils DevSecOps CI nouvellement créée.
- Cliquez sur la tuile Git qui commence par
compliance-app. - Pour déclencher la pr-pipeline, mettez à jour du texte dans le fichier
README.md, puis lancez une PR contre la branchemain. - Dans le champ Branche cible, remplacez le nom de la branche
mainpar un autre nom. Par exemple,mybranch. - Assurez-vous que la case "Lancer une nouvelle demande de fusion avec ces modifications" est cochée.
- Cliquez sur Valider les modifications.
- Optionnel. Sur la page Nouvelle demande de fusion, ajoutez une description.
- Cliquez sur Créer une demande de fusion.
La ligne de conduite pr de la chaîne d'outils ci est déclenchée. Vérifiez que le pipeline est en cours d'exécution en procédant comme suit :
-
Retournez à votre chaîne d'outils CI et cliquez sur la tuile Delivery Pipeline pour votre
pr-pipeline. Sur la page du tableau de bord de pr-pipeline, vous pouvez voir que pr-pipeline est en cours d'exécution. -
Pour voir l'état d'avancement, cliquez sur le lien
pr-pipeline.
Figure 1. Tableau de bord pr-pipeline
Remarques :
-
Si des vulnérabilités sont détectées, l'étape de finalisation du code échoue.
-
Pour trouver les vulnérabilités, allez sur
code-unit-tests>run-stagepour voir les journaux. (capture d'écran) -
Résoudre les vulnérabilités, c'est déclencher la ligne de préemption.
-
Retournez à la tuile de l'application.
-
Dans le volet de navigation, cliquez sur Fusionner les demandes.
-
Sélectionnez le PR.
-
Optionnel. Cliquez sur le bouton Approuver (si ce n'est pas le cas, vous verrez une erreur à la fin de l'exécution de ci-pipeline).
-
Sélectionnez "Supprimer la branche source"
-
Cliquez sur Fusionner.
La fusion de ce PR déclenche automatiquement la ci-pipeline. Pour vérifier, retournez à la tuile ci-pipeline dans la chaîne d'outils et vérifiez que le pipeline est en cours d'exécution. Cliquez sur le lien du pipeline pour voir l'état d'avancement.
Cette étape permet de déployer l'application sur le cluster nouvellement créé. L'application URL se trouve au bas du fichier journal dans l'étape deploy-dev > run-stage de la ligne de conduite ci.
Etapes suivantes
Passez à la section "Explorer votre chaîne d'outils CI" du tutoriel suivant, et exécutez les pipelines CI-PR et CI. Exécutez ensuite les étapes restantes du tutoriel pour déployer une application sécurisée.
Vous pouvez afficher les ressources créées avec ce tutoriel à tout moment en cliquant sur l'icône Menu et en sélectionnant Liste des ressources.
Vous pouvez afficher l'espace de travail Schematics, le cluster, l'instance IBM Cloud Object Storage, le service Secrets Manager, le service de distribution continue et la chaîne d'outils.