Auf dieser Seite erfahren Sie, wie Sie mit Cloud Build Image-Bereitstellungen in Cloud Run und Google Kubernetes Engine sichern.
Informationen zum Konfigurieren der Binärautorisierung, um Build-Attestierungen zu prüfen und Bereitstellungen von Images zu blockieren, die nicht von Cloud Build generiert wurden. Dadurch kann das Risiko der Bereitstellung nicht autorisierter Software verringert werden.
Hinweise
Enable the Cloud Build, Binary Authorization, and Artifact Registry APIs.
Wenn Sie die Befehlszeilenbeispiele in dieser Anleitung verwenden möchten, müssen Sie das Google Cloud SDK installieren und konfigurieren.
Bereitstellungen mit Binärautorisierung steuern
Eine Richtlinie im Rahmen der Binärautorisierung ist eine Reihe von Regeln für das Deployment von Images. Sie können eine Regel so konfigurieren, dass digital signierte Attestierungen erforderlich sind.
Cloud Build generiert und signiert die Attestierungen zur Build-Zeit. Mit
Binärautorisierung können Sie den Attestierer built-by-cloud-build
verwenden, um
Prüfen Sie die Attestierungen und stellen Sie nur Images bereit, die von Cloud Build erstellt wurden.
Führen Sie einen Build in Ihrem Projekt aus, um den built-by-cloud-build
-Attestierer zu erstellen.
Führen Sie die folgenden Schritte aus, um die Bereitstellung von Images zu erlauben, die von Cloud Build erstellt wurden:
Console
Rufen Sie in der Google Cloud Console die Seite Binärautorisierung auf.
Im Tab Richtlinie klicken Sie auf Richtlinie bearbeiten.
Wählen Sie im Dialogfeld Richtlinie bearbeiten die Option Nur Images zulassen, die von allen folgenden Attestierern genehmigt wurden aus.
Klicken Sie auf Attestierer hinzufügen.
Führen Sie im Dialogfeld Attestierer hinzufügen die folgenden Schritte aus:
- Wählen Sie Nach Projekt und Attestierername hinzufügen aus und führen Sie die folgenden Schritte aus:
- Geben Sie im Feld Projektname das Projekt ein, in dem Sie Cloud Build ausführen.
- Klicken Sie auf das Feld Name des Attestierers und prüfen Sie, ob der Attestierer
built-by-cloud-build
verfügbar ist. - Klicken Sie auf
built-by-cloud-build
.
Alternativ können Sie Nach Attestierer-Ressourcen-ID hinzufügen auswählen. Geben Sie unter Attestierer-Ressourcen-ID
projects/PROJECT_ID/attestors/built-by-cloud-build
Ersetzen Sie
PROJECT_ID
durch das Projekt, in dem Sie Cloud Build ausführen.
- Wählen Sie Nach Projekt und Attestierername hinzufügen aus und führen Sie die folgenden Schritte aus:
Klicken Sie auf 1 Attestierer hinzufügen.
Klicken Sie auf Save Policy (Richtlinie speichern).
gcloud
Exportieren Sie Ihre vorhandene Richtlinie mit dem folgenden Befehl in eine Datei:
gcloud container binauthz policy export > /tmp/policy.yaml
Bearbeiten Sie die Richtliniendatei.
Bearbeiten Sie eine der folgenden Regeln:
defaultAdmissionRule
clusterAdmissionRules
istioServiceIdentityAdmissionRules
kubernetesServiceAccountAdmissionRules
Fügen Sie der Regel einen
requireAttestationsBy
-Block hinzu, sofern noch keiner vorhanden ist.Fügen Sie im Block
requireAttestationsBy
Folgendes hinzu:projects/PROJECT_ID/attestors/built-by-cloud-build
Ersetzen Sie
PROJECT_ID
durch das Projekt, in dem Sie Cloud Build ausführen.Speichern Sie die Richtliniendatei.
Importieren Sie die Richtliniendatei.
gcloud container binauthz policy import /tmp/policy.yaml
Das folgende Beispiel zeigt eine Richtliniendatei, die den Verweis auf
built-by-cloud-build-attestor
enthält:defaultAdmissionRule: evaluationMode: REQUIRE_ATTESTATION enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG requireAttestationsBy: - projects/PROJECT_ID/attestors/built-by-cloud-build name: projects/PROJECT_ID/policy
Ersetzen Sie
PROJECT_ID
durch die Projekt-ID, in der Sie Cloud Build ausführen.
Sie können Richtlinienfehler in den Nachrichten der Binärautorisierung für GKE oder Cloud Run aufrufen.
Probelaufmodus verwenden
Im Probelaufmodus prüft die Binärautorisierung die Richtliniencompliance, ohne die Bereitstellung tatsächlich zu blockieren. Stattdessen werden Statusmeldungen zur Einhaltung von Richtlinien in Cloud Logging protokolliert. Anhand dieser Logs können Sie feststellen, ob Ihre Blockierrichtlinie korrekt funktioniert, und falsch positive Ergebnisse identifizieren.
So aktivieren Sie den Probelauf:
Console
Rufen Sie in der Google Cloud Console die Seite "Binärautorisierung" auf.
Klicken Sie auf Richtlinie bearbeiten.
Wählen Sie in der Standardregel oder eine bestimmte Regel den Probelaufmodus aus.
Klicken Sie auf Save Policy (Richtlinie speichern).
gcloud
Exportieren Sie die Richtlinie für die Binärautorisierung in eine YAML-Datei:
gcloud container binauthz policy export > /tmp/policy.yaml
Legen Sie in einem Texteditor
enforcementMode
aufDRYRUN_AUDIT_LOG_ONLY
fest und speichern Sie die Datei.Importieren Sie zum Aktualisieren der Richtlinie die Datei mit dem folgenden Befehl:
gcloud container binauthz policy import /tmp/policy.yaml
Richtlinienfehler können Sie sich in den Lognachrichten der Binärautorisierung für GKE oder Cloud Run ansehen.
Beschränkungen
Cloud Build und die Binärautorisierung müssen sich im selben Projekt befinden. Wenn Sie Ihre Bereitstellungsplattform in einem anderen Projekt ausführen, konfigurieren Sie IAM-Rollen für eine Einrichtung mit mehreren Projekten und verweisen Sie beim Hinzufügen des Attestierers
built-by-cloud-build
in der Binärautorisierung auf das Cloud Build-Projekt.Cloud Build generiert keine Attestierungen, wenn Sie Images übertragen mit einem expliziten
docker push
-Build-Schritt zu Artifact Registry. Achten Sie darauf, mithilfe des Feldsimages
im Build-Schrittdocker build
an Artifact Registry. Für Weitere Informationen zuimages
finden Sie unter Verschiedene Möglichkeiten zum Speichern von Images in Artifact Registry.Sie müssen separate Build-Konfigurationsdateien für Ihre Build-Pipeline und Bereitstellungspipeline verwenden. Das liegt daran, dass Cloud Build Attestationen erst nach erfolgreichem Abschluss der Build-Pipeline generiert. Die Binärautorisierung prüft dann die Attestierung, bevor die Bild.
Attestationen in privaten Pools aktivieren
Standardmäßig generiert Cloud Build keine Attestationen für die binäre Autorisierung für Builds in privaten Pools. Wenn Sie Attestate generieren möchten, fügen Sie der Build-Konfigurationsdatei die Option requestedVerifyOption: VERIFIED
hinzu:
steps:
- name: 'gcr.io/cloud-builders/docker'
args: [ 'build', '-t', 'us-central1-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1', '.' ]
images:
- 'us-central1-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1'
options:
requestedVerifyOption: VERIFIED
Nach dem Hinzufügen von requestedVerifyOption
aktiviert Cloud Build
Attestierungsgenerierung und Herkunftsmetadaten für Ihr
Bild.
Attestierermetadaten ansehen
Ein Attestierer wird erstellt, wenn Sie zum ersten Mal einen Build in einem Projekt ausführen. Die Attestator-ID hat das Format projects/PROJECT_ID/attestors/built-by-cloud-build
, wobei PROJECT_ID
Ihre Projekt-ID ist.
Sie können die Metadaten des Build-Attestierers mit dem folgenden Befehl prüfen:
curl -X GET -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://binaryauthorization.googleapis.com/v1beta1/projects/PROJECT_ID/attestors/built-by-cloud-build
Ersetzen Sie PROJECT_ID
durch das Projekt, in der Sie Cloud Build ausführen.
Die Ausgabe enthält Informationen zum Attestierer und zu den entsprechenden öffentlichen Schlüsseln. Beispiel:
name": "projects/PROJECT_ID/attestors/built-by-cloud-build", "userOwnedDrydockNote": { "noteReference": "projects/PROJECT_ID/notes/built-by-cloud-build", "publicKeys": [ { "id": "//cloudkms.googleapis.com/v1/projects/verified-builder/locations/asia/keyRings/attestor/cryptoKeys/builtByGCB/cryptoKeyVersions/1", "pkixPublicKey": { "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEMMvFxZLgIiWOLIXsaTkjTmOKcaK7\neIZrgpWHpHziTFGg8qyEI4S8O2/2wh1Eru7+sj0Sh1QxytN/KE5j3mTvYA==\n-----END PUBLIC KEY-----\n", "signatureAlgorithm": "ECDSA_P256_SHA256" } }, ... } ], "delegationServiceAccountEmail": "service-942118413832@gcp-binaryauthorization.iam.gserviceaccount.com" }, "updateTime": "2021-09-24T15:26:44.808914Z", "description": "Attestor autogenerated by build ID fab07092-30f4-4f70-caf7-4545cbc404d6"
Nächste Schritte
- Informationen zur Binärautorisierung.