Freigeben über


Schnellstart: Mit Abhängigkeitsupdates und Sicherheit von Containerimages mit Dependabot und Copacetic auf dem neuesten Stand bleiben

In diesem Schnellstarthandbuch führen wir Sie durch den Prozess zum Konfigurieren und Verwenden von Dependabot und Copacetic, um die Softwareabhängigkeitsupdates zu optimieren, zu Standard zu unterstützen und die Sicherheit von Containerimages in der sicheren Lieferkette von Containern zu verbessern.

Diese Tools automatisieren den Prozess und stellen sicher, dass Ihre Containerimages immer aktuell und sicher sind.

In dieser Schnellstartanleitung wird Folgendes vermittelt:

Aktualisieren Von Containerimageabhängigkeiten und Sicherheit mithilfe von Dependabot. Überwachen, scannen und patchen Sie Containerimages kontinuierlich mithilfe von Copa.

Voraussetzungen

  • Ein Azure-Abonnement. Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
  • Die neueste Version der Azure CLI wurde installiert und für Ihr Abonnement konfiguriert.
  • Eine vorhandene Azure Container Registry (ACR) in Ihrem Abonnement.

Aktualisieren von Containerimageabhängigkeiten und Sicherheit mithilfe von Dependabot

Dependabot ist ein Tool, mit dem der Prozess der Verwaltung von Softwareabhängigkeiten auf dem neuesten Stand ist. Es funktioniert, indem Sie Ihr Repository auf veraltete Abhängigkeiten überprüfen und Pullanforderungen erstellen, um sie auf die neueste Version zu aktualisieren. Sie sucht täglich nach Updates für Ihre Abhängigkeiten und erstellt Pullanforderungen, um sie zu aktualisieren. Sie können Dependabot so konfigurieren, dass Pullanforderungen für alle Arten von Abhängigkeiten erstellt werden, einschließlich Docker-Images. Wir empfehlen die Verwendung von Dependabot, um Abhängigkeiten in Ihren Dockerfiles, Kubernetes-Yaml-Dateien und Helm-Diagrammwerten automatisch zu stoßen, um die neuesten Sicherheitspatches abzurufen und Sicherheitsrisiken zu reduzieren.

Verwenden von Dependabot mit GitHub

  • Folgen Sie den Anweisungen zum Einrichten von Dependabot bei GitHub hier

Verwenden von Dependabot mit Azure DevOps

  • Befolgen Sie die Anweisungen zum Konfigurieren von Dependabot mit Azure DevOps:
  1. Erteilen Sie Berechtigungen , indem Sie ein Dienstkonto mit dem Namen YOUR-PROJECT-NAME Build Service (YOUR-ORGANIZATION-NAME) mit den folgenden Berechtigungen erstellen:

    -Force Push -Contribute to pull requests -Create branch

Builddienstberechtigungen

  1. Konfigurieren Sie Dependabot , indem Sie eine dependabot Konfigurationsdatei wie in diesem Beispiel hinzufügen:

      version: 2
      updates:
        - package-ecosystem: "docker"
          directory: "/"
          assignees:
            - "dependabot"
    

  2. Erstellen Sie eine Azure DevOps-Pipeline , indem Sie eine azure-pipeline.yaml Datei mit dem folgenden Inhalt hinzufügen:

     schedules:
       - cron: '0 14 * * *'
         displayName: 'Every day at 7am PST'
         branches:
           include: [main]
         always: true
    
     trigger: none
    
     jobs:
       - job:
         steps:
         - script: |
             git clone https://github.com/dependabot/dependabot-core.git
             cd dependabot-core
    
             DOCKER_BUILDKIT=1 docker build \
               --build-arg "USER_UID=$(id -u)" \
               --build-arg "USER_GID=$(id -g)" \
               -t "dependabot/dependabot-core" .
             cd ..
           displayName: build dependabot-core Docker image
    
         - script: |
             git clone https://github.com/dependabot/dependabot-script.git
             cd dependabot-script
    
             docker run -v "$(pwd):/home/dependabot/dependabot-script" -w /home/dependabot/dependabot-script dependabot/dependabot-core bundle install -j 3 --path vendor
           displayName: install dependencies
    
         - script: |
             #!/bin/bash
             SYSTEM_COLLECTIONURI_TRIM=`echo "${SYSTEM_COLLECTIONURI:22}"`
             PROJECT_PATH="$SYSTEM_COLLECTIONURI_TRIM$SYSTEM_TEAMPROJECT/_git/$BUILD_REPOSITORY_NAME"
             echo "path: $PROJECT_PATH"
    
             docker run  -v "$(pwd)/dependabot-script:/home/dependabot/dependabot-script" \
                         -w '/home/dependabot/dependabot-script' \
                         -e AZURE_ACCESS_TOKEN=$(System.AccessToken) \
                         -e PACKAGE_MANAGER=docker \
                         -e PROJECT_PATH=$PROJECT_PATH \
                         -e DIRECTORY_PATH=/ \
                         -e OPTIONS="$OPTIONS" \
                         dependabot/dependabot-core bundle exec ruby ./generic-update-script.rb
           displayName: "run dependabot"
           env:
             OPTIONS: |
               { "kubernetes_updates": true }
    

  3. Führen Sie die Pipeline "Erstellen" aus, und überprüfen Sie die neue ADO-Pipeline aus der obigen azure-pipelines.yaml Datei.

Derzeit unterstützt Dependabot das Aktualisieren von Containerimageabhängigkeiten in verschiedenen Szenarien, einschließlich Dockerfile, Kubernetes YAML und Helm values.yaml. Wenn Sie Bilder in Ihren Konfigurationsdateien angeben, können Sie die folgende Syntax befolgen:

-Dockerfile -Kubernetes YAML -Helm values.yaml

Hinweis

Mit der Syntax kann Dependabot Containerimageabhängigkeiten innerhalb Ihrer Konfigurationsdateien identifizieren und aktualisieren, um sicherzustellen, dass Sie mit den neuesten Versionen und Sicherheitspatches auf dem neuesten Stand bleiben.


# Dockerfile
foo:
  image:
    repository: sql/sql
    tag: 1.2.3
    registry: docker.io

# Helm values.yaml
foo:
  image:
    repository: sql/sql
    tag: 1.2.3
    registry: docker.io

Alternativ können Sie für Helm values.yamldas Feld die version Bildversion angeben:

foo:
  image:
    repository: sql/sql
    version: 1.2.3

Fortlaufendes Überwachen, Scannen und Patchen von Containerimages mit Copacetic

Copacetic (copa) ist ein von Microsoft unterstütztes CNCF Open-Source-Projekt, das Sicherheitsrisiken des Linux-Betriebssystempakets direkt in Containerimages patches, da die Ergebnisse der Sicherheitsrisikoüberprüfung von beliebten Scannertools vorliegen. Copacetic ermöglicht es, Container schnell zu patchen, ohne für eine vollständige Neuerstellung vorgelagert zu werden. Dadurch können die Containerimages schnell in die Produktion erneut bereitgestellt werden. Copacetic ist nur für Linux-Betriebssystemrisiken vorgesehen. Bei Sicherheitsrisiken auf App-Ebene müssen Patches ausgeführt werden, bevor das Image erstellt wird.

Verwenden von Copacetic

  1. Folgen Sie der Schnellstartanleitung, um mit der Verwendung von Copa zu beginnen.

  2. ADO-Beispielpipeline:

    - Hier finden Sie eine Beispiel-Azure DevOps-Pipeline für die Verwendung von Copa.

Copa kann auch in Github Actions-Workflows integriert werden, um Imagerisiken mithilfe der Copacetic-Aktion zu patchen. Mit dieser Aktion wird eine Reihe von festgelegten Bildern für ein Repository mithilfe der zugehörigen Sicherheitsrisikenberichte gepatcht.

Nächste Schritte