Erstellen einer Pipeline mit Inferred DevSecOps

Sobald Sie Ihre eigene Anwendung oder Ihren eigenen Microservice zur Continuous-Integration-Toolkette (CI) von „ DevSecOps “ hinzugefügt haben, können Sie die Funktion „Inferred DevSecOps Pipeline Configuration“ nutzen, um schnell loszulegen. Diese Funktion:

  • Ermittelt den Inhalt der DevSecOps " .pipeline-config.yaml für Sie
  • Identifiziert die Skripte, die zum Erstellen, Testen und Bereitstellen Ihres Codes erforderlich sind
  • Stellt den Code für diese Skripte bereit, damit Sie sich auf Ihre Anwendung konzentrieren können

Mit dieser Funktion können Sie Ihre Microservices oder Anwendungen ganz einfach in DevSecOps Pipelines integrieren und deren DevSecOps Einführung optimieren.

Es sind keine zusätzlichen Schritte erforderlich, um die abgeleitete DevSecOps Pipeline-Konfiguration zu konfigurieren, da diese bereits in die DevSecOps integriert ist.

DevSecOps Die Toolchain für Continuous Deployment (CD) verfügt ebenfalls über eine Standard-Pipeline-Konfiguration. Damit können Anwender, die auf der CI-Seite die „ DevSecOps-Konfiguration“ von Inferred nutzen, denselben Ansatz sicher auf ihre CD-Pipelines ausweiten. Die Bereitstellungsmaßnahmen werden auf der Grundlage der Metadaten „ app_artifacts “ aus den Bestandsdatensätzen festgelegt.

DevSecOps Auch die Toolchain für kontinuierliche Compliance (CC) kann von der Konfiguration der abgeleiteten Konformitätsbewertung ( DevSecOps ) profitieren. Die Pipeline-Konfiguration wird anhand des Inhalts der in den Inventareinträgen vorhandenen Repositorys abgeleitet.

Voraussetzungen

  1. Richten Sie Ihre DevSecOps Toolchains ein und integrieren Sie das Quellcode-Repository Ihrer Anwendung.

    Verwenden Sie nicht das Standard-Repository für Beispielanwendungen. Stattdessen sollten Sie das Repository Ihrer eigenen Anwendung einbinden.

  2. Informieren Sie sich über die Grundlagen der DevSecOps und erfahren Sie mehr über die verschiedenen verfügbaren Vorlagen, Support-Optionen und andere wichtige Informationen für Ihren Einstieg in DevSecOps.

Einführung

Konfigurieren Sie zunächst Ihre Toolchains so, dass sie Ihr eigenes Quellcode-Repository verwenden. Dann, ' laufen Ihr erster ' DevSecOps CI-Pipeline. Diese Funktion ist standardmäßig aktiviert, so dass keine weiteren Einstellungen erforderlich sind. Es leitet dynamisch die DevSecOps und Skripte ab, die zum Erstellen, Testen und Bereitstellen Ihrer Anwendung oder Ihres Dienstes erforderlich sind.

Um diese Funktion zu deaktivieren, setzen Sie einen ' pipeline-config, der mit einer bestehenden Datei in Ihrem Repository übereinstimmt.

Spots mit abgeleiteter DevSecOps

Die Funktion "Inferred DevSecOps Pipeline Configuration" verwendet Quelltext-Introspektion und Sprachdefinition, um " spots in Ihrem Quelltext-Repository zu identifizieren. Ein " spot ist eine Stelle in Ihrem Code, an der eine bestimmte Aktion ausgeführt werden muss.

Jeder Spot hat die folgenden Eigenschaften:

Spot-Eigenschaften
Eigenschaft Beschreibung
Quelle Gibt einen Ort im Quellcode-Repository als Kontext des Spots an.
Prozesse Ein oder mehrere Prozesse, die die Art des auszuführenden Vorgangs angeben.
Tools Ein Array, das mit einem Prozess verknüpft ist und die Werkzeuge auflistet, die zur Durchführung der Aktion gestartet werden müssen. Jedes Werkzeug kann einen eigenen Satz von Eigenschaften haben.
Umgebungskonfiguration Verweist auf eine Skriptdatei (oder Skriptbefehle), die gestartet wird, um die Umgebung für den auszuführenden Prozessvorgang (Werkzeugaufrufe) einzurichten.

Identifizierte Punkte

Die Funktion Inferred DevSecOps Pipeline Configuration identifiziert derzeit die folgenden Arten von " spots: code, deployment, acceptance-test, dynamic-scan und release.

Code-Spots

Code-Spots beziehen sich auf eine unterstützte Quellcode-Sprache, einschließlich:

Die ' code Spots behandeln die folgenden Prozesse:

  • building: Definiert die Werkzeuge, die den Build des angegebenen Quellcodes durchführen.
  • unit-testing: Hier finden Sie die Tools, die Unit-Tests für das Build-Ergebnis durchführen.

Einsatzorte

Die ' deployment Spots lokalisieren ein Einsatzfahrzeug, einschließlich der Einsatzmittel und -werkzeuge. die deployment Spots haben einen Einsatzprozess, der die Einsatzmittel auflistet. Die derzeit unterstützten Einsatzfahrzeuge sind:

Akzeptanzprüfungsstellen

Die " acceptance-test Spots lokalisieren eine auszuführende Akzeptanztestsuite. die acceptance-test haben einen " acceptance-testing, der die Werkzeuge für die Ausführung der Akzeptanztestsuite angibt.

Dynamic-Scan-Spots

Die ' dynamic-scan-Punkte kennzeichnen Orte für einen dynamischen Scan. Dynamic-Scan-Spots haben einen ' scanning, um die Scan-Tools aufzulisten, die während des dynamischen Scans aufgerufen werden.

Der OWASP ZAP-Scan ist das einzige unterstützte Tool, das einen Sub-Webhook-Trigger auslösen kann.

Spots freigeben

Die ' release-Punkte markieren den Freigabeprozess. Freigabestellen haben einen ' releasing, der die Werkzeuge auflistet, die während der Freigabephase ausgeführt werden sollen. Derzeit werden folgende Werkzeuge für den Freigabeprozess unterstützt:

Beispiel für den Inhalt von polyglot-spots.json

Die Inferred DevSecOps Pipeline Configuration-Funktion extrahiert Spots und generiert den folgenden JSON-Inhalt, um bestimmte Aktionen und Tools während der CI-Pipeline-Phasen auszulösen.

{
  "code": [
    {
      "source": "Dockerfile",
      "language": "Dockerfile",
      "building": {
        "tools": [
          {
            "tool": "docker"
          }
        ]
      }
    },
    {
      "source": "package.json",
      "language": "NodeJS",
      "building": {
        "tools": [
          {
            "tool": "npm"
          }
        ]
      },
      "unit-testing": {
        "tools": [
          {
            "tool": "npm",
            "command": "test"
          }
        ]
      }
    }
  ],
  "acceptance-test": [
    {
      "source": "package.json",
      "acceptance-testing": {
        "tools": [
          {
            "tool": "npm",
            "command": "run acceptance-test"
          }
        ]
      }
    }
  ],
  "deployment": [
    {
      "source": "deployment_iks.yml",
      "deploying": {
        "tools": [
          {
            "tool": "kubectl"
          }
        ],
        "environment-setup": ".env.deploy.sh"
      }
    },
    {
      "source": "deployment_os.yml",
      "deploying": {
        "tools": [
          {
            "tool": "kubectl"
          }
        ],
        "environment-setup": ".env.deploy.sh"
      }
    }
  ],
  "dynamic-scan": [
    {
      "source": "definitions/definitions1.json",
      "scanning": {
        "tools": [
          {
            "tool": "trigger-async-zap",
            "kind": "api"
          }
        ],
        "environment-setup": "scripts/zap/zap-custom-scripts/.env.dynamic-scan.sh"
      }
    },
    {
      "source": "scripts/zap/uiscripts/run.sh",
      "scanning": {
        "tools": [
          {
            "tool": "trigger-async-zap",
            "kind": "ui"
          }
        ],
        "environment-setup": "scripts/zap/zap-custom-scripts/.env.dynamic-scan.sh"
      }
    }
  ],
  "release": []
}

Erweiterte Konfiguration

Injektion von Dateien

Die Funktion "Inferred DevSecOps Pipeline Configuration" verwendet den Inhalt der Dateien " polyglot-spots.json und " .pipeline-config.yaml, um die Ausführung des DevSecOps anzupassen.

Während der " finish-Phase einer CI-Pipeline werden sowohl " polyglot-spots.json als auch " .pipeline-config.yaml (entsprechend der statischen Pipeline-Konfiguration der CI-Pipeline-Ausführung) zu einer Verzweigung mit dem Namen " inferred-devsecops (Standard) im Quellcode-Repository der Anwendung hinzugefügt.

Die Pipeline-Konfiguration mit der Formatversion 2 (z. B. verwendbar mit dem Compliance-Pipelines-Zweig v11 ) kann auch generiert werden, wenn die Eigenschaft create-inferred-pipeline-configuration-v2 auf true (Standardwert: false ) gesetzt ist. Eine zusätzliche Pipeline-Konfigurationsdatei wie .pipeline-config-v2.yaml wird dann dem Zweig mit dem Namen inferred-devsecops (Standard) im Quellcode-Repository der Anwendung hinzugefügt.

Konfigurieren des Einspritzzweigs

Mit der Pipeline-Eigenschaft " inferred-devsecops-branch können Sie den Namen der Verzweigung für die Injektion der von DevSecOps abgeleiteten Dateien konfigurieren. Der Standardwert ist inferred-devsecops.

Verwenden Sie die Pipeline-Eigenschaft push-inferred-pipeline-configuration-files (die push-polyglot-files-Eigenschaft ist zugunsten der push-inferred-pipeline-configuration-files-Eigenschaft veraltet), um die Erstellung und Aktualisierung des inferred-devsecops-Zweigs zu aktivieren oder zu deaktivieren:

Aktivieren oder Deaktivieren der inferred-devsecops-Verzweigung
Wert Beschreibung
true(Standard) Die Konfigurationsdateien werden hinzugefügt und in den Zweig " inferred-devsecops des Quellcode-Repositorys der Anwendung verschoben.
false Konfigurationsdateien werden dem inferred-devsecops-Zweig nicht hinzugefügt.

Konfigurieren der Fleckenextraktion

Konfigurieren Sie die Extraktion von Spots mit Hilfe der folgenden Pipeline-Umgebungseigenschaften:

Flecken ignorieren

Sie können bestimmte Stellen bei der Extraktion ignorieren, indem Sie reguläre Ausdrücke verwenden. Die folgenden Konfigurationsoptionen sind verfügbar:

  • ignore-code-spot-pattern: Ignoriert Codestellen, die dem angegebenen regulären Ausdruck entsprechen.
  • ignore-deployment-spot-pattern: Ignoriert Einsatzstellen, die dem angegebenen regulären Ausdruck entsprechen.
  • ignore-dynamic-scan-spot-pattern: Ignoriert dynamisch gescannte Spots, die dem angegebenen regulären Ausdruck entsprechen.
  • ignore-acceptance-test-spot-pattern: Ignoriert Akzeptanztest-Spots, die dem angegebenen regulären Ausdruck entsprechen.
  • ignore-release-spot-pattern: Ignoriert Freigabepunkte, die dem angegebenen regulären Ausdruck entsprechen.

Code Engine Konfiguration

Wenn Sie IBM Cloud Code Engine für die Bereitstellung verwenden, geben Sie das Projekt Code Engine an und konfigurieren Sie den Build-Prozess mit den folgenden Eigenschaften der Pipeline-Umgebung:

  • code-engine-project: Gibt das Code Engine an.
  • code-engine-build-use-native-docker: (Standard: ' false) Gibt an, ob Docker CLI anstelle des Befehls ' ibmcloud code-engine buildrun verwendet werden soll.
  • code-engine-disable-buildpacks-strategy(Standard false) Gibt an, dass der Erstellungsprozess nicht die Strategie buildpacks verwenden soll (nur gültig, wenn code-engine-project festgelegt wurde)
  • root-as-build-context: (Standard: false ) gibt an, dass der Build-Kontext für das mit Dockerfile verknüpfte Build-Tool (wie docker oder code-engine ) das Stammverzeichnis des Repositorys als Build-Kontext verwenden sollte und nicht den Ordner, der die Docker-Datei enthält.

Konfiguration zum Erstellen von Container-Images

  • container-image-builder: (Standardmäßig docker) Für Dockerfile-bezogene Builds geben Sie das zu verwendende Tool (docker oder podman) zum Erstellen des Container-Images an.
  • root-as-build-context: (Standard: false) gibt an, dass der Build-Kontext für Dockerfile zugehörige Build-Tools (wie docker, podman oder code-engine) den Stamm des Repositorys als Build-Kontext verwenden soll und nicht den Ordner, der die Dockerfile enthält.

Golang Konfiguration

Um den Spotextraktionsprozess für Golang zu konfigurieren, legen Sie die folgenden Eigenschaften der Pipeline-Umgebung fest:

  • go-ignore-main: (Voreinstellung: ' false) Gibt an, ob die Code-Spot-Extraktion sich nicht auf die Erkennung des Hauptpakets und der Hauptfunktion für das Hauptquellargument konzentrieren soll.
  • go-output: Gibt die ausführbare Ausgabedatei des go build-Befehls an.

Gradle

Zum Konfigurieren der Gradle Aufgaben für Setup, Unit-Tests, Build-Artefakte und Akzeptanztests verwenden Sie die folgenden Eigenschaften der Pipeline-Umgebung:

  • gradle-setup-tasks: (Standard: ' assemble) Kommagetrennte Liste von Gradle für die Einrichtungsphase.
  • gradle-unit-testing-tasks: (Standard: ' test) Kommagetrennte Liste von Gradle für die Unit-Test-Phase.
  • gradle-build-artifact-tasks: (Standard: ' build) Komma-getrennte Liste von Gradle für die Build-Artefakt-Stufe.
  • gradle-acceptance-testing-tasks: Komma-getrennte Liste von Gradle für die Akzeptanztestphase.

NPM-Konfiguration

Sie können die NPM-Skripterkennung für Unit-Tests und Akzeptanztests konfigurieren.

  • hint-npm-unit-testing-script: (Standard: ' test) Hinweise zur Erkennung von NPM-Unit-Test-Skripten.
  • hint-npm-acceptance-testing-script: (Standard: ' acceptance-test) Hinweise zur Erkennung von NPM-Akzeptanztestskripten.

Python

Um die Python Poetry-Version zu konfigurieren, verwenden Sie die folgenden Eigenschaften der Pipeline-Umgebung:

  • hint-python-poetry-version: (Standard: ' 1.8.2) Hinweise zur Python Poetry Version.
  • discover-python-unittest-from-ancestor: (Standard: false) gibt an, dass das Vorgängerverzeichnis als Ausgangspunkt für die Erkennung von Python unittest verwendet wird (z. B. um Unit-Tests aus dem Verzeichnis zu erkennen, das requirements.txt im Stammverzeichnis des Repositorys enthält, und nicht aus dem requirements.txt (falls vorhanden), das den Python-Unittest-Dateien am nächsten liegt).

Terraform-Konfiguration

Um den Terraform-Bereitstellungsprozess zu konfigurieren, verwenden Sie die folgenden Eigenschaften der Pipeline-Umgebung:

  • terraform-deployment: (Standard: ' false) Deaktiviert Schematics als Verteilungsvehikel zugunsten von Terraform und Cloud Object Storage für die Zustandsspeicherung.

Helm Konfiguration

Verwenden Sie die folgenden Pipeline-Umgebungseigenschaften, um den Helm-Release-Prozess zu konfigurieren:

  • helm-oci-registry-support: (Standardmäßig aktiviert false) Aktivieren Sie die Übertragung des Helm-Charts in die OCI-Registrierung im Release-Schritt.
  • configuration-file-pattern-<config_file_type>: Definieren Sie ein Muster, um Konfigurationsdateien eines bestimmten Typs zu identifizieren. Beispielsweise wählt der Befehl „ configuration-file-pattern-dev-config=chart/dev-values.yaml “ die Datei(en) „ chart/dev-values.yaml “ als Artefakt vom Typ „ dev-config “ aus.

Artefakt-Upload

Um den Artefakt-Upload-Prozess zu konfigurieren, verwenden Sie die folgenden Eigenschaften der Pipeline-Umgebung:

  • artifact-upload-to-devsecops-cos: (Standard: ' false) Ermöglicht das Hochladen von Artefakten in einen Cloud Object Storage unter Verwendung des DevSecOps CLI-Artefakt-Uploads für nicht als Bild gespeicherte Artefakte.

Umgebung einrichten Dateien

Jedes Quellcode-Repository erfordert eine spezifische Einrichtung oder Anpassung für eine bestimmte Phase. Die Funktion "Inferred DevSecOps Pipeline Configuration" bietet eine Möglichkeit, eine Eigenschaft für die Einrichtung der Umgebung anzugeben, die als bash-Skript definiert werden kann. Dieses Skript wird aufgerufen, bevor die entsprechende Aktion für einen Prozess ausgeführt wird.

Während der Extraktion von Spots verwendet dieses abgeleitete Devsecops-Konfigurationsmerkmal einen Hinweis, der auf dem Dateinamen basiert, um die Umgebungskonfigurationsdateien zu bestimmen. Zum Beispiel wird eine Datei mit dem Namen .env.npm-test.sh als Umgebungs-Setup-Skript ausgewählt, das vor der Ausführung des npm-Unit-Tests aufgerufen wird.

Das standardisierte Format für eine Umgebungskonfigurationsdatei sieht wie folgt aus: .env.<process>.sh oder .env.<tool>-<process>.sh.

Der Wert für <process> kann einer der folgenden sein: build, test, acceptance-test, deploy, dynamic-scan oder release.

Für den Prozess build kann der Wert von <tool> einer der folgenden sein: code-engine, docker, docker-maven-plugin, go, gradle, helm, maven, npm, pip, pipenv, poetry, terraform oder yarn.

Für test- und acceptance-test-Prozesse kann der Wert von <tool> einer der folgenden sein: go, gradle, helm, maven, npm, pytest, python oder terratest.

Für den Prozess deploy kann der Wert von <tool> einer der folgenden sein: code-engine,helm, kubectl-liberty-app, kubectl, schematics oder terraform.

Für den Prozess dynamic-scan kann der Wert von <tool> trigger-async-zap sein.

Für den Prozess release kann der Wert von <tool> einer der Werte maven, poetry oder semantic-release sein.

Hier sind einige Beispiele:

  • .env.build.sh die Datei ist als "environment-setup" für die Prozess-Erstellung in Code-Spots verknüpft. Sie kann durch eine Umgebungs-Setup-Datei für ein bereichsspezifisches Tool (wie Docker, Maven usw.) überschrieben werden, z. B. .env.docker-build.sh, .env.maven-build.sh,...
  • .env.test.sh die Datei ist als "environment-setup" für die Prozess-Unit-Tests in Code-Spots verknüpft. Sie kann durch eine Umgebungs-Setup-Datei für ein bereichsbezogenes Tool (wie go, npm...) überschrieben werden, z. B. .env.go-test.sh, .env.npm-test.sh,...
  • .env.deploy.sh die Datei ist als "Umgebungseinstellung" für den Prozess in Bereitstellungsspeicherorten zugeordnet. Sie kann durch eine Umgebungs-Setup-Datei für ein Tool mit Geltungsbereich (wie Code-Engine, Helm, Kubectl usw.) überschrieben werden, z. B. .env.code-engine-deploy.sh, .env.helm-deploy.sh,...
  • .env.acceptance-test.sh die Datei ist als Umgebungskonfiguration für den Prozess in Akzeptanztest-Spots verknüpft. Sie kann durch eine Umgebungs-Setup-Datei für ein Tool mit Geltungsbereich (wie go, maven, npm...) überschrieben werden, z. B. .env.maven-acceptance-test.sh, .env.python-acceptance-test.sh,...
  • .env.dynamic-scan.sh die Datei ist als "environment-setup" für den Prozess in "dynamic-scan spots" verknüpft.
  • .env.release.sh die Datei ist als "environment-setup" für den Prozess in den Freigabestellen zugeordnet. Sie kann durch eine Umgebungs-Setup-Datei für ein Tool mit Geltungsbereich (wie maven, semantic-release...) überschrieben werden, z. B. .env.maven-acceptance-test.sh, .env.semantic-release-acceptance-test.sh,...

Ein Beispiel für die Verwendung dieses Skripts finden Sie im Hello Compliance App Repository auf IBM Cloud.

Umgebung Kontext Injektion

Die Funktion Inferred DevSecOps Pipeline Configuration integriert Umgebungsvariablen aus Pipeline- und Triggereigenschaften in verschiedene Projektkontexte. Die Projektkontexte sind wie folgt:

  • Phasen der Pipeline-Ausführung
  • Helm-Bereitstellungen
  • Code Engine

Mit dieser Funktion können Sie Kontext, wie z. B. Umgebungsvariablen, aus Pipeline- und Triggereigenschaften auf der Grundlage normalisierter Eigenschaftsnamen injizieren oder festlegen.

Einige Werkzeuge verarbeiten Eigenschaften mit normalisierten Namen, die in bestimmte Kontexte eingefügt werden, wie z. B.:

  • docker-Build-Argumente und/oder Docker-Build-Geheimnisse
  • ergänzende ' values.yaml-Dateien für Helm
  • configmap oder ' secret für Code Engine

Durch die Verwendung normalisierter Eigenschaftsnamen können Sie Umgebungsvariablen und anderen Kontext in Ihre Pipeline und Bereitstellungen einfügen.

Injektion von Umgebungsvariablen in Pipeline-Ausführungsphasen

Die Funktion "Inferred DevSecOps Pipeline Configuration" bietet ein " export-properties-Dienstprogramm zum Exportieren von Pipeline- und Triggereigenschaften als Umgebungsvariablen während der Ausführung der Phase. Dieses Dienstprogramm wird in jeder angepassten Phase aufgerufen:

export-properties "GLOBAL" && export-properties "${STAGE^^}"
Globale Umgebungsvariablen

Der Befehl " export-properties "GLOBAL" exportiert Pipeline- und Triggereigenschaften mit normalisierten Namen mit " ENV_GLOBAL_<XXX> als Umgebungsvariablen wie " XXX in jedem Ausführungskontext der Pipelinestufe.

Beispiel für eine globale Umgebungsvariable
Beispiel für globale Umgebungsvariablen
Eigenschaftsname Immobiliengutachter Resultierende Umgebungsvariable
ENV_GLOBAL_my_var my_value my_var=my_value
Stufenspezifische Umgebungsvariablen

Der Befehl " export-properties "${STAGE^^}" exportiert Pipeline- oder Triggereigenschaften, die für die aktuell ausgeführte Stufe relevant sind, mit dem normierten Namen " ENV_<stage in upper case>_<XXX> als Umgebungsvariablen in die angegebene ausgeführte Stufe.

Beispiel für stufenspezifische Umgebungsvariablen
Beispiel für globale Umgebungsvariablen
Eigenschaftsname Immobiliengutachter Resultierende Umgebungsvariable
ENV_SETUP_CGO_ENABLED true CGO_ENABLED=true

In der CI-Pipeline ist für den Schritt " code-setup - run-stage die Umgebungsvariable " CGO_ENABLED auf den richtigen Wert gesetzt.

Eine Liste der Stufen und ihrer Beschreibungen finden Sie unter " etappenbeschreibungen.

Ein typischer Anwendungsfall für diese Funktion ist die Einbindung von Umgebungsvariablen vor der Ausführung von Unit-Tests, um die Konfiguration zu ermöglichen. In diesem Fall würde der normalisierte Name der Eigenschaften " ENV_TEST_<a_var> lauten, wobei " <a_var> der Name der exportierten Umgebungsvariablen ist, die für die Ausführung der Testphase verfügbar sein soll.

Beispiel
Beispiel für stufenspezifische Umgebungsvariablen
Eigenschaftsname Immobiliengutachter Resultierende Umgebungsvariable
ENV_TEST_MY_VAR my_value MY_VAR=my_value

Verwenden Sie diese Funktion, um Ihre Pipeline-Konfiguration zu vereinfachen und die Konsistenz in Ihren Bereitstellungen zu verbessern.

Tool-Ausführung und Konfiguration

Einige Tools in der Funktion "Abgeleitete DevSecOps " verwenden Pipeline- und Trigger-Eigenschaften, um eine ergänzende Konfiguration abzuleiten.

Docker
  • Build-Argumente: Der Docker-Build-Befehl wird mit --build-arg auf der Grundlage von Pipeline- und Trigger-Eigenschaften mit einem normalisierten Namen wie " DOCKER_BUILD_ARG_ abgeschlossen.
    • Beispiel: Durch Hinzufügen einer Eigenschaft mit dem Namen " DOCKER_BUILD_ARG_my_arg wird der Parameter " --build-arg="my_arg=" in den Docker-Build-Befehl eingefügt.
  • Build-Geheimnisse: Der Docker-Build-Befehl wird mit --secret auf der Grundlage von Pipeline- und Trigger-Eigenschaften mit einem normalisierten Namen wie " DOCKER_BUILD_SECRET_ abgeschlossen.
    • Wenn Sie beispielsweise eine Eigenschaft mit dem Namen DOCKER_BUILD_SECRET_my_secret hinzufügen, wird der Parameter --secret id=my_secret,env= in den Docker-Build-Befehl eingefügt.

Weitere Informationen finden Sie unter docker build arguments und docker build secret

Helm
  • Bereitstellungsverarbeitung: Zusätzliche Werte können in den Helm auf der Grundlage von normalisierten Pipeline- und Triggereigenschaften eingespeist werden.
    • Wenn eine Eigenschaft einen Namen wie " HELM_VALUE_, hat, fügt die vom Helm verwaltete ergänzende Wertedatei einen Eintrag " a_value_property mit dem Wert der Pipeline- oder Triggereigenschaft hinzu.
    • Die ergänzende Wertedatei wird als Argument des letzten ' -f | --values-Parameters für den Steuerkommando verwendet.

Weitere Informationen finden Sie unter Komplementäre Werte.

Terraform
Schematics
Code Engine
  • Bereitstellungsprozess: Zusätzliche Konfigurationen für die Anwendung können durch die Definition einer ergänzenden Configmap oder eines Geheimnisses für die Anwendung erstellt werden.
    • Für Pipeline- und Triggereigenschaften mit einem normalisierten Namen wie " CE_ENV_<XXXX> wird ein Eintrag in einer ergänzenden Configmap oder einem Geheimnis (das mit der Code Engine oder dem Auftrag verbunden ist) mit dem Schlüssel " <XXXX> erstellt und sein Wert auf der Grundlage des Werts der entsprechenden Pipeline- oder Triggereigenschaft festgelegt.

Weitere Informationen finden Sie unter code-engine configmap(s)zur Konfiguration von Anwendungen oder Jobs und code-engine secret zur Konfiguration von Anwendungen oder Jobs

DevSecOps Bibliothek mit gemeinsamen Skripten

Inferred DevSecOps Pipeline Configuration verwendet in bestimmten Phasen Skripte/Funktionen aus den Skripten der allgemeinen Bibliothek, die eine Reihe wiederverwendbarer Skripte bietet, die Ihnen helfen können, wenn Sie mit der Anpassung beginnen möchten.

Weitere Informationen über die allgemeine Skriptbibliothek, einschließlich Skripts, Tools, Verwendung und Parameter, finden Sie unter Allgemeine Skriptbibliothek.

Häufig gestellte Fragen

Schutz der Branche

Verzweigungsschutz standardmäßig einschalten

DevSecOps PR- und CI-Pipelines aktivieren standardmäßig den Zweigschutz für das Quellcode-Repository. Diese Überprüfung erfolgt in der Phase der Code-Einstellung.

Abzweigschutz deaktivieren

Um den Verzweigungsschutz zu deaktivieren, setzen Sie die Eigenschaft " setup-branch-protection auf " false.

Anpassen der Statusprüfungen für den Zweigschutz

Um das Präfix für die Prüfungen des Zweigschutzstatus anzupassen, setzen Sie die Eigenschaft ' branch-protection-status-check-prefix. Das Standardpräfix ist " tekton.

Konfiguration und Ausführung von Pre-Commit-Hooks

Standardmäßig führen PR- und CI-Pipelines mit der Konfiguration " DevSecOps " Pre-Commit-Hooks in der Setup-Phase aus, wenn eine Pre-Commit-Konfigurationsdatei im Quellcode-Repository vorhanden ist (Standardmäßig .pre-commit-config.yaml ). Der Name der Pre-Commit-Konfigurationsdatei kann durch die Pipeline-/Trigger-Eigenschaft pre-commit-config-file angegeben werden, die auf den Namen der Konfigurationsdatei gesetzt wird.

Einige Pre-Commit-Hooks können übersprungen werden (z. B. weil ein bestimmter Hook wie detect-secrets in einer bestimmten Phase der PR- oder CI-Pipelines ausgeführt wird). Um die zu überspringenden Hooks festzulegen, setzen Sie die Pipeline-/Trigger-Eigenschaft pre-commit-skip-hooks auf eine durch Kommas getrennte Liste der zu überspringenden Hook-IDs.

Sonarqube-Server mit selbstsigniertem Zertifikat

wenn das sonarqube-config ist eingestellt auf custom um einen vorhandenen SonarQube-Server zu verwenden und der Server über ein selbstsigniertes Zertifikat verfügt, muss das selbstsignierte Zertifikat zu den vertrauenswürdigen CA-Zertifikaten hinzugefügt werden, damit der Sonar-Scanner erfolgreich eine Verbindung zum SonarQube-Server herstellen kann.

Durch die Bereitstellung des Zertifikats im Format PEM als Wert der Pipeline/Trigger-Eigenschaft sonarqube-root-certificate fügt die statische Scan-Implementierung in der Pipeline-Konfiguration Inferred DevSecOps es entsprechend für die Verwendung von SonarScanner für Maven, SonarScanner für Gradle Sonar oder SonarScanner aufgerufen mit Docker hinzu.

Poesie und private Repositorien

Konfigurieren Sie Poesie für private Repositories

Bei der Verwendung von Poetry (pyproject.toml wird als Code-Spot identifiziert) wird eine alternative Quelle oder ein Repository definiert, um Abhängigkeiten abzurufen, z. B.:

[[tool.poetry.source]]
name = "local"
url = "<artifactory-url>"
secondary = true

oder wenn Poesie im Spiel ist (z. B. pyproject.toml mit einem build-system-Abschnitt, bei dem build-backend gleich poetry.core.masonry.api ist, ist eine identifizierte Freigabestelle), dann müssen unter Umständen Anmeldedaten angegeben werden, um sich bei den privaten Registern zu authentifizieren.

Authentifizierung mit privaten Repositories in der IBM Cloud

Es ist erforderlich, Anmeldeinformationen für dieses " local-Source-Repository anzugeben. Die Dokumentation von Poetry zur Konfiguration der Anmeldeinformationen gibt an, dass die Umgebungsvariablen für http-Benutzer und -Passwort " POETRY_HTTP_BASIC_LOCAL_USERNAME und " POETRY_HTTP_BASIC_LOCAL_PASSWORD sein sollten.

Verwenden Sie die Funktion zur Injektion von Umgebungsvariablen, und fügen Sie die folgenden Pipeline-Umgebungseigenschaften hinzu:

  • ENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_USERNAME (Text) mit dem entsprechenden Wert
  • ENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_PASSWORD (gesichert) mit dem entsprechenden gesicherten Wert

Authentifizierung zur Veröffentlichung in privaten Repositories

Wenn Poesie involviert ist (d.h. pyproject.toml, das einen build-system Abschnitt mit build-backend gleich poetry.core.masonry.api enthält, ist ein identifizierter Freigabepunkt), kann die Konfiguration für Token oder Benutzernamen mit Hilfe von Pipeline-Umgebungseigenschaften wie (für ein Repository namens local) definiert werden:

  • ENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_USERNAME (Text) mit dem entsprechenden Wert
  • ENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_PASSWORD (gesichert) mit dem entsprechenden gesicherten Wert

oder

  • ENV_GLOBAL_POETRY_PYPI_TOKEN_LOCAL (gesichert) mit dem entsprechenden gesicherten Wert, der dem Token entspricht

Maven, pom.xml, settings.xml, und Umgebungsauflösung

Konfigurieren Sie Maven für benutzerdefinierte Einstellungsdateien in IBM Cloud

Wenn Ihr Maven-Projekt eine spezifische Einstellungsdatei mit einem benutzerdefinierten Dateinamen definiert, wie z.B. ' ci-settings.xml, definieren Sie eine Pipeline-Umgebungseigenschaft maven-user-settings-file-path mit dem Wert ' ci_settings.xml in den PR-, CI-Pipeline- oder Trigger-Eigenschaften.

Außerdem, wenn es einen ' env.<VARIABLE> gibt, der aufgelöst werden muss, wie:

    <server>
      <username>${env.MAVEN_USERNAME}</username>
      <password>${env.MAVEN_PASSWORD}</password>
      <id>central</id>
    </server>

Verwenden Sie die Funktion der Umgebungsvariableninjektion, um diese Variablen durch Hinzufügen von 2 Pipeline-Eigenschaften (in der PR- und CI-Pipeline) bereitzustellen:

  • ENV_GLOBAL_MAVEN_USERNAME (Text) mit dem Wert, der für den Maven-Benutzernamen verwendet werden soll
  • ENV_GLOBAL_MAVEN_PASSWORD (gesichert) mit dem Wert, der für das Maven-Passwort verwendet werden soll

Statisches Linking für Go Builds erzwingen

Statisches Linking für Go-Builds einschalten

Standardmäßig erzeugt ' go build eine dynamisch gelinkte Binärdatei. Um es in einem Docker zu verwenden, aktivieren Sie statisches Linking, indem Sie während des Builds ' CGO_ENABLED=0 setzen.

Konfigurieren Sie die Umgebungsvariable für Go Build

Um die statische Verknüpfung zu aktivieren, verwenden Sie die Funktion zur Injektion von Umgebungsvariablen, um die folgende Pipeline-Umgebungseigenschaft in der CI-Pipeline hinzuzufügen:

  • ENV_SETUP_CGO_ENABLED mit dem Wert ' 0

Unterstützung anfordern

IBM Cloud der KI-Assistent von IBM, der von watsonx unterstützt wird, soll Ihnen dabei helfen, sich mit der Arbeit in IBM Cloud vertraut zu machen und Lösungen mit dem verfügbaren Angebotskatalog zu erstellen. Siehe "Hilfe vom KI-Assistenten erhalten ".

Wenn Sie das Problem weiterhin nicht lösen können, können Sie einen Supportfall öffnen. Weitere Informationen finden Sie in Supportfälle erstellen. Wenn Sie uns Feedback geben möchten, klicken Sie auf "Feedback einreichen ".