Richten Sie Ihre DevSecOps-Infrastruktur und die CI-Toolchain für die Implementierung einer sicheren App ein
Verwenden Sie dieses Lernprogramm für die automatisierte Einrichtung und Bereitstellung der Infrastruktur für Ihr CI und Ihre CD-Toolchains mithilfe einer Terraform-basierten Schnelleinstiegsvorlage. Die Vorlage verwendet die bewährten Verfahren von DevSecOps für Compliance und Sicherheit. Die Vorlage verwendet ein Arbeitsbereich ' IBM Cloud® Schematics ', das die Erstellung der erforderlichen Infrastruktur für die sichere Bereitstellung Ihrer App in Kubernetes oder Red Hat® OpenShift® automatisiert. Die Vorlage verwendet die DevSecOps IBM Cloud® Continuous Delivery -Toolchain-Pipelinestruktur. Die Toolchain ist für die kontinuierliche Bereitstellung mit der Bestandsintegration, dem Änderungsmanagement, der Angabensammlung und der Implementierung vorkonfiguriert.
IBM Cloud Schematics stellt mit Terraform as a Service eine höhere Scriptsprache zum Modellieren der gewünschten Ressourcen, die Sie in Ihrer IBM Cloud-Umgebung verwenden möchten, und zum Aktivieren von Infrastructure as Code (IaC) zur Verfügung. Terraform ist eine Open-Source-Software, die von HashiCorp entwickelt wird. Terraform ermöglicht eine vorhersehbare und konsistente Ressourcenbereitstellung für die schnelle Erstellung komplexer mehrschichtiger Cloudumgebungen.
In diesem Lernprogramm führen Sie drei einfache Schritte aus, um einen Schematics Arbeitsbereich zu erstellen, einen Terraform-Ausführungsplan anzuwenden und den Wert für die Umgebungseigenschaften zu aktualisieren. Wenn Sie den Plan anwenden, richtet der Schematics Arbeitsbereich Ihre sichere Infrastruktur ein. Diese Infrastruktur kann von Ihrem Team gemeinsam genutzt werden, und sie funktioniert für die DevSecOpsEine Methodik, die Sicherheitsvorkehrungen in den Lebenszyklus von Softwareentwicklung und -betrieb integriert. Ziel der Einbindung ist ein ausgewogenes Verhältnis von Geschwindigkeit und Sicherheit bei der Entwicklung. CI- und CD-Toolchain-Vorlagen.
Die automatische Installation von Infrastruktur erstellt Ressourcen, die automatisch bereitgestellt werden, indem die Standardwerte aus den DevSecOps-CI-und CD-Vorlagen verwendet werden. Sie können die Standardwerte im Abschnitt Variablen des Arbeitsbereichs Schematics finden. Die folgenden Ressourcen werden erstellt:
- Ein Cluster in IBM Cloud® Kubernetes Service oder Red Hat OpenShift an IBM Cloud.
- Eine Standardinstanz von IBM Cloud Object Storage Instanz und Gruppierung.
- IBM Cloud® Secrets Manager. Beachten Sie, dass nur eine Secrets Manager -Instanz zulässig ist. Wenn Sie bereits über einen Secrets Manager Service verfügen, müssen Sie
den Standardwert für
sm_service_namein Schritt 2überschreiben. - GPG-Image-Signierschlüssel.
- Eine voll funktionsfähige DevSecOps-CI-Toolchain , die eine Node.js-Beispielanwendung erstellt, prüft und implementiert, indem DevSecOps Best Practices der Compliance und der Sicherheit verwendet werden.
Vorbereitende Schritte
- Um dieses Lernprogramm abzuschließen. verwenden Sie ein Pay-As-You-Go oder Abonnements.-IBM CloudAccount, wo Sie der Eigentümer sind oder vollen Administratorzugriff haben. Wenn Sie bereits über ein IBM Cloud-Konto verfügen und dafür ein Upgrade durchführen müssen, finden Sie weitere Informationen unter Upgrade für Ihr Konto durchführen.
- Installieren Sie die IBM Cloud-CLI, wenn Sie mit Elementen der Toolchain oder der Infrastruktur interagieren möchten, nachdem sie erstellt wurden.
- Besorgen Sie sich ein GitLab Personal Access Token. Geben Sie einen Namen für Ihr persönliches Zugriffstoken ein. Erstellen Sie Ihr Token in derselben Region wie Ihre CI-Toolchain. Stellen Sie sicher, dass Sie das Token kopieren und speichern, da es später benötigt wird, und Sie nicht erneut darauf zugreifen können.
- Erstellen Sie einen IBM Cloud API-Schlüssel. Stellen Sie sicher, dass Sie den API-Schlüsselwert kopieren, und speichern oder herunterladen, da Sie ihn später benötigen und Sie nicht erneut darauf zugreifen können.
Schematics-Arbeitsbereich erstellen
-
Klicken Sie auf eine der folgenden Optionen für das Clusterimplementierungsziel. Bei Auswahl dieser Aktion wird die Seite "Implementieren in IBM Cloud " geöffnet, auf der Sie einen Schematics -Arbeitsbereich erstellen können. Füllen Sie die erforderlichen Felder auf dieser Seite aus, und klicken Sie anschließend auf Weiter.
Auf der Basis der ausgewählten Option wird die entsprechende Terraform-Vorlage dieses Repositorys automatisch in den neuen Schematics-Arbeitsbereich importiert.
-
Überprüfen Sie die Informationen, und klicken Sie anschließend auf Erstellen. Der Arbeitsbereich Schematicswird erstellt, und die Seite "Einstellungen" für den Arbeitsbereich Schematicswird angezeigt.
Terraform-Ausführungsplan anwenden
-
Geben Sie im Abschnitt Variablen der Seite mit den Schematics-Einstellungen die Werte für die einzelnen Variablen ein. Erforderliche Felder haben keine Standardwerte. Sie können Standardwerte überschreiben.
Wenn Sie den Wert
sm_service_nameüberschreiben, verwendet der Terraform-Ausführungsplan die vorhandene Ressource, anstatt eine neue Ressource zu erstellen. -
Geben Sie für die Variable
gitlab_tokendas persönliche Zugriffstoken ein, das Sie zuvor erhalten haben. -
Geben Sie für die Variable
ibmcloud_api_keyden IBM CloudAPI-Schlüssel, den Sie zuvor erhalten haben, ein. -
Geben Sie für die Variable
registry_namespaceeinen Containerregisternamensbereichswert ein. Um einen Namensraum zu erstellen, siehe Container Registry Namespaces. -
Für die Variable
kube_versionführen Sie:ibmcloud ks versionsin einer Befehlszeile aus, um die verfügbaren Versionen anzuzeigen. -
Optional. Wenn Sie bereits eine Secrets Manager -Instanz haben, geben Sie den Namen für die Variable
sm_service_nameein. Anderenfalls ändern Sie diese Variable nicht. -
Optional. Wenn Sie die Größe oder den Standort Ihres Clusters anpassen möchten, können Sie die folgenden Variablen außer Kraft setzen:
datacenter,default_pool_size,machine_type,hardware,public_vlan_numoderprivate_vlan_num(die Standardwerte sind für das Rechenzentrum dal12/us-south ). -
Optional. Klicken Sie auf Plan generieren. Durch diese Aktion wird ein Terraform-Ausführungsplan erstellt und Ihre Konfiguration wird auf Syntaxfehler überprüft. Auf der Seite Schematics Jobs können Sie Protokolldateien auf Fehler und IBM Cloud Ressourcen, die erstellt, geändert oder gelöscht werden müssen, überprüfen, um den korrekten Status der Terraformvorlage zu erreichen.
-
Nachdem Sie alle Werte für die Variablen eingegeben haben und mit den Änderungen zufrieden sind, klicken Sie auf Plan anwenden , um den Infrastrukturcode auszuführen.
Die Ausführung dieses Schritts nimmt einige Zeit in Anspruch (normalerweise 20 bis 30 Minuten, es kann jedoch auch länger dauern), da ein neuer Kubernetes- oder OpenShift-Cluster erstellt werden muss.
-
Auf der Seite Schematics Jobs können Sie das Protokoll anzeigen, indem Sie den Jobnamen erweitern.
-
Nachdem der Plan angewendet wurde, können Sie die URL der generierten Toolchain IBM Cloud DevSecOps CI anzeigen. Die URL befindet sich am Ende der Protokolldatei in einer Zeile, die mit
View the toolchain at:beginnt.
Wenn Sie den Plan ein zweites Mal anwenden, werden der zuvor erstellte Kubernetes- bzw. OpenShift-Cluster und alle darin bereitgestellten Anwendungen gelöscht und es wird ein neuer Cluster erstellt. Wenn Sie jedoch den Standardclusternamen überschreiben, wird dieser Cluster verwendet.
App bereitstellen
Folgen Sie diesen Schritten, um die Pipeline auszuführen.
- Gehen Sie zu Ihrer neu erstellten DevSecOps CI-Toolchain.
- Klicken Sie auf die Git kachel, die mit
compliance-appbeginnt. - Um die pr-pipeline auszulösen, aktualisieren Sie einen Text in der Datei
README.mdund starten dann einen PR gegen den Zweigmain. - Ändern Sie im Feld Zielzweig den Namen des Zweigs von
mainin einen anderen Namen. Zum Beispielmybranch. - Vergewissern Sie sich, dass das Kontrollkästchen "Einen neuen Zusammenführungsantrag mit diesen Änderungen starten" aktiviert ist.
- Klicken Sie auf Änderungen übernehmen.
- Optional. Fügen Sie auf der Seite Neue Zusammenführungsanfrage eine Beschreibung hinzu.
- Klicken Sie auf Seriendruckauftrag erstellen.
Die pr-Pipeline in der ci-toolchain wird ausgelöst. Überprüfen Sie, ob die Pipeline läuft, indem Sie diese Schritte ausführen:
-
Kehren Sie zu Ihrer CI-Toolchain zurück, und klicken Sie auf die Delivery Pipeline kachel für Ihre
pr-pipeline. Auf der Seite pr-pipeline Dashboard können Sie sehen, dass die pr-pipeline läuft. -
Um den Fortschritt zu sehen, klicken Sie auf den Link
pr-pipeline.
Abbildung 1. pr-pipeline Dashboard
Hinweise:
-
Wenn Schwachstellen gefunden werden, schlägt der Schritt Code-pr-finish fehl.
-
Um die Schwachstellen zu finden, gehen Sie zu
code-unit-tests>run-stage, um die Protokolle anzuzeigen. (Bildschirmfoto) -
Lösen Sie die Schwachstellen, und dann wird die Pr-Pipeline ausgelöst.
-
Gehen Sie zurück zur App-Repository-Kachel.
-
Klicken Sie im Navigationsbereich auf Anfragen zusammenführen.
-
Wählen Sie die PR.
-
Optional. Klicken Sie auf die Schaltfläche Genehmigen (andernfalls wird am Ende des ci-pipeline-Laufs ein Fehler angezeigt).
-
Wählen Sie "Quellzweig löschen"
-
Klicken Sie auf Zusammenführen.
Die Zusammenführung dieses PR löst automatisch die ci-pipeline aus. Um dies zu überprüfen, gehen Sie zurück zur Kachel ci-pipeline in der Toolchain und überprüfen Sie, ob die Pipeline läuft. Klicken Sie auf den Link zur Pipeline, um den Fortschritt zu sehen.
In diesem Schritt wird die Anwendung in dem neu erstellten Cluster bereitgestellt. Die Anwendung URL befindet sich am Ende der Protokolldatei im Schritt deploy-dev > run-stage der ci-pipeline.
Nächste Schritte
Fahren Sie mit dem Abschnitt "Toolchain durchsuchen" des nächsten Lernprogrammsfort und führen Sie die CI-PR-und CI-Pipelines aus. Fahren Sie anschließend mit dem Rest der Schritte in diesem Lernprogramm fort, um eine sichere App zu implementieren.
Sie können jederzeit alle Ressourcen anzeigen, die mit diesem Lernprogramm erstellt wurden, indem Sie auf das Symbol Menü klicken und Ressourcenliste auswählen. Sie können Ihren Schematics Arbeitsbereich, Cluster, IBM Cloud Object Storage Instanz, Secrets Manager-Service, Continuous Delivery-Service und Toolchain anzeigen.