Auf dieser Seite wird beschrieben, wie Sie mit der Binärautorisierung nur Images bereitstellen, die von Cloud Build erstellt wurden.
Hinweis
Enable the Cloud Build, Binary Authorization, and Artifact Registry APIs.
Installieren und konfigurieren Sie das Google Cloud SDK, um die Befehlszeilenbeispiele in dieser Anleitung zu verwenden.
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 der Binärautorisierung können Sie den Attestierung built-by-cloud-build
verwenden, um die Attestierungen zu prüfen und nur von Cloud Build erstellte Images bereitzustellen.
Führen Sie einen Build in diesem Projekt aus, um den Attestierer built-by-cloud-build
in Ihrem Projekt 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 Folgendes ein:
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
Sie können Richtlinienfehler in den Nachrichten der Binärautorisierung für GKE oder Cloud Run aufrufen.
Beschränkungen
Damit Sie der Anleitung auf dieser Seite folgen, müssen sich Cloud Build und die Binärautorisierung im selben Projekt befinden. Wenn Sie Ihre Bereitstellungsplattform in einem anderen Projekt ausführen, lesen Sie das Cloud Build-Projekt, wenn Sie den Attestierer built-by-cloud-build
in der Binärautorisierung hinzufügen.
Attestierungen in privaten Pools aktivieren
Cloud Build generiert standardmäßig keine Attestierungen für die Binärautorisierung für Builds in privaten Pools. Fügen Sie der Build-Konfigurationsdatei die Option requestedVerifyOption: VERIFIED
hinzu, um Attestierungen zu generieren:
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
Nachdem requestedVerifyOption
hinzugefügt wurde, ermöglicht Cloud Build die Generierung von Attestierungen und Provence-Metadaten für Ihr Image.
Attestierermetadaten ansehen
Ein Attestierer wird erstellt, wenn Sie zum ersten Mal einen Build in einem Projekt ausführen. Die Attestierer-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"