Sichere Image-Pipeline verwenden

Nachdem Sie die sichere Image-Pipeline erstellt haben, können Sie den Workflow zum Generieren signierter Images automatisieren, wenn Sie Änderungen am Quellcode vornehmen.

Auf dieser Seite wird erläutert, wie Sie mit der Image-Pipeline sichere, bestätigte Images erstellen können.

Hinweise

Erstellen Sie die sichere Image-Pipeline und machen Sie sich mit den von der Pipeline erstellten Ressourcen vertraut.

Pipeline verwenden

Der Quellcode für die Basis-Images befindet sich im Repository baseimgfct-[some number]-containers in der GitHub-Organisation, die Sie beim Einrichten der sicheren Image-Pipeline angegeben haben. Zum Aktualisieren eines Images bearbeiten Sie die entsprechende Datei im Repository und senden eine Pull-Anfrage mit den Änderungen zur Überprüfung an ein Teammitglied. Wenn Sie die Pull-Anfrage erstellen, erstellt Cloud Build die aktualisierten Images in YOUR_PROJECT_NAME-builder und überträgt das Image per Push in das Artifact Registry-Repository in YOUR_PROJECT_NAME-stage.

Wenn ein Teammitglied die Images in YOUR_PROJECT_NAME-stage getestet und geprüft hat, kann es Ihre Pull-Anfrage genehmigen und zusammenführen. Die Zusammenführungsaktion erstellt, scannt und bestätigt die Images und überträgt die Images aus dem Staging-Projekt nach YOUR_PROJECT_NAME-verified.

In den folgenden Schritten wird der Entwicklerworkflow für die Verwendung der sicheren Image-Pipeline beschrieben:

  1. Wechseln Sie in das Repository baseimgfact-[some number]-containers.

  2. Öffnen Sie den Ordner für das Image, das Sie ändern möchten, z. B. ubuntu_18_0_4.

  3. Nehmen Sie die Änderungen vor. Bearbeiten Sie beispielsweise Dockerfile, um ein Container-Image zu aktualisieren.

  4. Wählen Sie Neuen Branch für diesen Commit erstellen und Pull-Anfrage starten aus.

  5. Klicken Sie auf Änderungen vorschlagen.

  6. Geben Sie unter Kommentarbeschreibung die Option /gcbrun ein. Dadurch soll sichergestellt werden, dass nur autorisierte Nutzer Änderungen am Repository vorschlagen.

  7. Klicken Sie auf Pull-Anfrage erstellen.

    Wenn Sie eine Pull-Anfrage erstellen, erstellt der Build in YOUR_PROJECT_NAME-builder Ihr Image und überträgt das Image per Push nach YOUR_PROJECT_NAME-stage.

  8. Fügen Sie ein Teammitglied hinzu, um Ihre Pull-Anfrage zu prüfen.

  9. Nach der manuellen Überprüfung des Images genehmigt das Teammitglied die Pull-Anfrage und führt sie zusammen.

    Die Zusammenführungsaktion erstellt, testet, prüft das Image auf Sicherheitslücken und attestiert das Image, wenn es sich um ein Container-Image handelt, und überträgt das Image dann an YOUR_PROJECT_NAME-verified.

Benutzerdefinierte Sicherheitsrichtlinie angeben

Wenn Sie die sichere Image-Pipeline verwenden, um Basis-Container-Images zu generieren und zu verwalten, können Sie eine benutzerdefinierte Sicherheitsrichtlinie angeben, für die das Image verifiziert wird.

YOUR_PROJECT_NAME-stage führt eine Instanz Voucher aus, ein Open-Source-Tool, das eine Reihe von Prüfungen auf Container-Images ausführt und Attestierungen für Binärautorisierungen für die Images erstellt. Wenn ein Image in YOUR_PROJECT_NAME-stage manuell verifiziert wurde und ein Teammitglied die Pull-Anfrage im GitHub-Container-Image-Repository zusammenführt, prüft Voucher das Image auf Sicherheitslücken. Diese sind in der Voucher-Konfigurationsdatei definiert. Wenn die Prüfung abgeschlossen ist und alle identifizierten Sicherheitslücken unter den Schwellenwert fallen, erstellt Voucher die Attestierung für die Binärautorisierung für das Image und das Image wird per Push nach YOUR_PROJECT_NAME-verified übertragen. Wenn eine der gefundenen Sicherheitslücken den Schwellenwert erreicht oder überschreitet, erstellt Voucher keine Attestierung. Ohne bestätigte Attestierung verhindert die Binärautorisierungserzwingung, dass das Image per Push an YOUR_PROJECT_NAME-verified übertragen wird.

In der Konfigurationsdatei für Voucher Server können Sie festlegen, welche Prüfungen Voucher zusammen mit anderen Kriterien ausführt. Eine Anleitung dazu finden Sie unter Voucher Server erstellen und konfigurieren.