Freigeben über


Integrieren der Defender for Cloud-CLI in CI/CD-Pipelines

Die Defender for Cloud-Befehlszeilenschnittstelle (Command Line Interface, CLI) ist eine Anwendung, die Sie in CI/CD-Pipelines (Continuous Integration und Continuous Deployment) verwenden können. Sie führt statische Analysetools aus und verbindet Code mit Clouddiensten. Sie können die Defender for Cloud-CLI in jedem Buildprozess verwenden, um Images mit integrierten Sicherheitsscannern auf Sicherheitsrisiken zu überprüfen. Sie sendet die Scanergebnisse an das Defender for Cloud-Portal. Der Cloudsicherheits-Explorer kann dann auf das Containerimage und seine Sicherheitsrisiken zugreifen.

Voraussetzungen

  • Ein Azure-Abonnement, in das Defender for Cloud integriert ist. Wenn Sie noch kein Azure-Konto besitzen, erstellen Sie ein kostenloses Konto.

  • Eins der folgenden CI/CD-Pipelinetools: Jenkins, BitBucket Pipelines, Google Cloud Build, Bamboo, CircleCI, Travis CI, TeamCity, Oracle DevOps Services, AWS CodeBuild

  • Für Azure DevOps wurde die Microsoft Security DevOps (MSDO)-Erweiterung in der Azure DevOps-Organisation installiert.

  • Defender CSPM muss aktiviert sein.

  • Berechtigung als Sicherheitsadministrator zum Erstellen der Client-ID und des Geheimnisses.

Setup

In den folgenden Abschnitten wird erläutert, wie Sie Client-ID und Geheimnisse abrufen, das CI/CD-Pipelineskript aktualisieren und Umgebungsvariablen zur CI/CD-Pipeline hinzufügen.

Abrufen des API-Tokens

Damit Sicherheitsdaten aus der Defender for Cloud-CLI an das Defender for Cloud-Back-End übergeben werden können, muss der Sicherheitsadministrator in Defender for Cloud zunächst einen API-Schlüssel aus Defender for Cloud für die Authentifizierung generieren.

Wenn Token generiert werden, wählt der Sicherheitsadministrator einen Abonnementbereich aus, der dem Token zugeordnet werden soll. Die Daten, die aus diesem Token in Defender for Cloud gepusht werden, sind auf das Abonnement festgelegt, dem das Token zugeordnet ist. Diese API-Token sind unveränderlich und können nur generiert/gelöscht werden.

Von dort aus muss der Sicherheitsadministrator das Token sicher an Entwickler übergeben, damit es der CI/CD-Pipeline hinzugefügt werden kann.

  1. Melden Sie sich beim Azure-Portal an.

  2. Navigieren Sie zu Microsoft Defender for Cloud>Verwaltung>Umgebungseinstellungen>Integrationen.

    Screenshot: Umgebungseinstellungen für die Integration in Defender for Cloud

  3. Wählen Sie Integration hinzufügen und dann DevOps-Erfassung aus.

    Screenshot: Neue Option für die DevOps-Erfassung

  4. Geben Sie einen aussagekräftigen Namen für das Token ein, und der ausgewählte Mandant speichert die Tokeninformationen. Der geheime Clientschlüssel wird generiert, wenn Sie eine Beschreibung für das Geheimnis und das Ablaufdatum eingeben.

    Screenshot: Hinzufügen der Integration für die DevOps-Erfassung

  5. Aktivieren Sie das Token unter Konfiguration, und erstellen Sie die Token.

    Screenshot: Erstellung der DevOps-Erfassung und Erstellung von Token

  6. Kopieren Sie die einzelnen Token. Sie können nicht bearbeitet oder abgerufen werden, nachdem Sie OK/ ausgewählt haben.

    Screenshot: Erfolgreiche Erstellung der DevOps-Erfassung

  7. In der Tabelle Integrationen wird die neue Erfassung angezeigt.

    Screenshot: Tabelle der DevOps-Integrationen mit der neuen Erfassung

Aktualisieren des CI/CD-Pipelineskripts

Jedes CI/CD-Pipelinetool hat eine andere Syntax. Dieser Code ist ein Beispiel für eine Bitbucket-Pipeline:

image: atlassian/default-image:3
 
pipelines:
  default:
    - parallel:
      - step:
          name: 'MSDO trivy test'
          script:
            - curl -L -o ./msdo_linux.zip https://www.nuget.org/api/v2/package/Microsoft.Security.DevOps.Cli.linux-x64/
            - unzip ./msdo_linux.zip
            - chmod +x tools/guardian
            - chmod +x tools/Microsoft.Guardian.Cli
            - ls -lah .
            - tools/guardian init --force
            - tools/guardian run -t trivy --export-file ./ubuntu-test.sarif --publish-file-folder-path ./ubuntu-test.sarif            

Pipelinevariablen

Nachdem die Token sicher empfangen wurden, muss der Entwickler eine Umgebungsvariable für den Schlüssel konfigurieren. Die Umgebungsvariable wird über das Shellskript, das der Entwickler über curl erhalten kann, an die CLI übergeben. Oder er kann das Shellskript manuell in das Repository kopieren.

Name Wert
GDN_PUSH_TOKEN_CLIENT_ID <Client-ID>
GDN_PUSH_TOKEN_CLIENT_ID <Client-ID>
GDN_PUSH_TOKEN_CLIENT_SECRET <Geheimer Clientschlüssel>
GDN_PIPELINENAME bitbucket, jenkins, gcp, bamboo, circle, travis, teamcity, oci, aws
GDN_PUSH_TOKEN_TENANT_ID <Mandanten-ID>

Überprüfen der Ergebnisse im Cloudsicherheits-Explorer

  1. Navigieren Sie nach der erfolgreichen Ausführung der Pipeline erneut zu Microsoft Defender for Cloud.

  2. Wählen Sie im Defender for Cloud-Menü den Cloudsicherheits-Explorer aus.

  3. Wählen Sie das Dropdownmenü Ressourcentypen auswählen und anschließend DevOps und Fertig aus.

    Screenshot: CI/CD-Pipeline im Cloudsicherheits-Explorer

  4. Wählen Sie das Symbol + aus, um neue Suchkriterien hinzuzufügen.

    Screenshot: Neue Suche im Cloudsicherheits-Explorer

  5. Wählen Sie die Dropdownliste Bedingung auswählen aus. Wählen Sie anschließend Daten und dann Pushes aus.

    Screenshot: Auswählen einer Bedingung im Cloudsicherheits-Explorer

  6. Wählen Sie das Dropdownmenü Ressourcentypen auswählen aus. Wählen Sie dann Container und Containerimages und anschließend Fertig aus.

    Screenshot: Auswählen von Containerimages im Cloudsicherheits-Explorer

  7. Wählen Sie den Bereich aus, der während der Erstellung der Integration in den Umgebungseinstellungen ausgewählt wurde.

    Screenshot: Auswählen des Bereichs im Cloudsicherheits-Explorer

  8. Klicken Sie auf Suchen.

    Screenshot: Suchen im Cloudsicherheits-Explorer

  9. Sehen Sie sich die Ergebnisse der Zuordnung zwischen Pipeline und Image an.

Korrelieren mit überwachten Containern

  1. Geben Sie im Cloudsicherheits-Explorer die folgende Abfrage ein: CI/CD-Pipeline >Pipeline + Containerimages >Enthalten in + Containerregistrierungen (Gruppe).

  2. Überprüfen Sie die Ressourcennamen, um die Containerzuordnung anzuzeigen.