Zuordnen von Containerimages aus dem Code zur Cloud

Wenn ein Sicherheitsrisiko in einem Containerimage identifiziert wird, das in einer Container-Registry gespeichert ist oder in einem Kubernetes-Cluster läuft, kann es für einen Sicherheitsexperten schwierig sein, die CI/CD-Pipeline zurückzuverfolgen, die das Containerimage zuerst erstellt hat, und eine*n Entwickler*in zu identifizieren, die/der für die Behebung verantwortlich ist. Mit den DevOps-Sicherheitsfunktionen in Microsoft Defender Cloud Security Posture Management (CSPM) können Sie Ihre Cloud-nativen Anwendungen vom Code bis zur Cloud zuordnen, um Entwickler-Workflows zur Behebung von Schwachstellen in Ihren Containerimages einfach zu starten und die Zeit bis zur Behebung zu verkürzen.

Voraussetzungen

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

  • Azure DevOps- und GitHub-Umgebungen, die in Microsoft Defender integriert sind, werden automatisch freigegeben und in allen verbundenen Azure DevOps-Organisationen installiert. Dadurch werden Aufgaben automatisch in alle Azure-Pipelines eingefügt, um Daten für die Containerzuordnung zu sammeln.

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

  • Für GitHub konfigurierte MSDO-Aktion (Microsoft Security DevOps) in Ihren GitHub-Repositorys. Darüber hinaus muss der GitHub-Workflow über "id-token: write" Berechtigungen für den Partnerverbund mit Defender for Cloud verfügen. Ein Beispiel finden Sie in dieser YAML.

  • Defender CSPM aktiviert.

  • Die Containerimages müssen mit Docker erstellt werden, und der Docker-Client muss während des Builds auf den Docker-Server zugreifen können.

Zuordnen Ihres Containerimages aus Azure DevOps-Pipelines zur Containerregistrierung

Nachdem Sie ein Containerimage in einer Azure DevOps CI/CD-Pipeline erstellt und in eine Registrierung übertragen haben, sehen Sie sich die Zuordnung mit dem Cloud Security Explorer an:

  1. Melden Sie sich beim Azure-Portal an.

  2. Gehen Sie zu Microsoft Defender for Cloud>Cloudsicherheits-Explorer. Es kann maximal 4 Stunden dauern, bis die Containerimagezuordnung im Cloud Security Explorer angezeigt wird.

  3. Um die grundlegende Zuordnung anzuzeigen, wählen Sie Containerimages+>>Von Coderepositorys gepusht aus.

    Screenshot, der zeigt, wie Sie die grundlegende Zuordnung von Containern finden.

  4. (Optional) Wählen Sie + nach Containerimages aus, um Ihrer Abfrage weitere Filter hinzuzufügen, z. B. Hat Sicherheitsrisiken, um nur Containerimages mit CVEs zu filtern.

  5. Nachdem Sie Ihre Abfrage ausgeführt haben, wird die Zuordnung zwischen der Containerregistrierung und der Azure DevOps-Pipeline angezeigt. Klicken Sie am Rand auf ..., um weitere Details darüber anzuzeigen, wo die Azure DevOps-Pipeline ausgeführt wurde.

    Screenshot einer erweiterten Abfrage für Containerzuordnungsergebnisse.

Nachfolgend finden Sie ein Beispiel für eine erweiterte Abfrage, die die Containerimagezuordnung verwendet. Ausgehend von einer Kubernetes-Workload, die dem Internet ausgesetzt ist, können Sie alle Containerimages mit schwerwiegenden CVEs bis zur Azure DevOps-Pipeline zurückverfolgen, in der das Containerimage erstellt wurde, so dass ein Sicherheitsexperte in der Lage ist, einen Abhilfeworkflow für Entwickler*inen zu starten.

Screenshot der grundlegenden Ergebnisse der Containerzuordnung.

Hinweis

Wenn Ihre Azure DevOps-Organisation der Azure DevOps-Connector vor dem 15. November 2023 installiert hatte, navigieren Sie zu Organisationseinstellungen>Erweiterungen > Freigegebene, und installieren Sie den Zuordnungsdekoror für das Containerimage. Wenn die für Ihre Organisation freigegebene Erweiterung nicht angezeigt wird, füllen Sie das folgende Formular aus.

Zuordnen Ihres Containerimages aus GitHub-Workflows zur Containerregistrierung

  1. Stellen Sie sicher, dass Sie einen GitHub-Connector in Defender for Cloud integriert haben.

  2. Führen Sie den folgenden MSDO-Workflow aus:

name: Build and Map Container Image

on: [push, workflow_dispatch]

jobs:
  build:
    runs-on: ubuntu-latest
    # Set Permissions
    permissions:
      contents: read
      id-token: write
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.8' 
    # Set Authentication to Container Registry of Choice. 
    # The example below is for Azure Container Registry. Amazon Elastic Container Registry and Google Artifact Registry are also supported. 
   - name: Azure Container Registry Login 
        uses: Azure/docker-login@v1 
        with:
        login-server: <containerRegistryLoginServer>
        username: ${{ secrets.ACR_USERNAME }}
        password: ${{ secrets.ACR_PASSWORD }}
    # Build and Push Image
    - name: Build and Push the Docker image 
        uses: docker/build-push-action@v2
        with:
          push: true
          tags: ${{ secrets.IMAGE_TAG }}
          file: Dockerfile
     # Run Mapping Tool in MSDO
    - name: Run Microsoft Security DevOps Analysis
      uses: microsoft/security-devops-action@latest
      id: msdo

Nachdem Sie ein Containerimage in einer GitHub-Worklflow erstellt und in eine Registrierung übertragen haben, sehen Sie sich die Zuordnung mit dem Cloud Security Explorer an:

  1. Melden Sie sich beim Azure-Portal an.

  2. Gehen Sie zu Microsoft Defender for Cloud>Cloudsicherheits-Explorer. Es kann maximal 4 Stunden dauern, bis die Containerimagezuordnung im Cloud Security Explorer angezeigt wird.

  3. Um die grundlegende Zuordnung anzuzeigen, wählen Sie Containerimages+>>Von Coderepositorys gepusht aus.

    Screenshot der grundlegenden Containerzuordnung.

  4. (Optional) Wählen Sie + nach Containerimages aus, um Ihrer Abfrage weitere Filter hinzuzufügen, z. B. Hat Sicherheitsrisiken, um nur Containerimages mit CVEs zu filtern.

  5. Nachdem Sie Ihre Abfrage ausgeführt haben, wird die Zuordnung zwischen der Containerregistrierung und der GitHub-Workflow angezeigt. Wählen Sie am Rand ... aus, um weitere Details darüber anzuzeigen, wo der GitHub-Workflow ausgeführt wurde.

Nachfolgend finden Sie ein Beispiel für eine erweiterte Abfrage, die die Containerimagezuordnung verwendet. Ausgehend von einer Kubernetes-Workload, die dem Internet ausgesetzt ist, können Sie alle Containerimages mit schwerwiegenden CVEs bis zur GitHub-Workflow zurückverfolgen, in der das Containerimage erstellt wurde, so dass ein Sicherheitsexperte in der Lage ist, einen Abhilfeworkflow für Entwickler*inen zu starten.

Screenshot der grundlegenden Ergebnisse der Containerzuordnung.

Nächste Schritte