Richtlinie zur Binärautorisierung aktualisieren
In diesem Dokument wird beschrieben, wie Sie in den Richtlinien für die Binärautorisierung Images ausnehmen.
In diesem Dokument aktualisieren Sie die Richtlinie, um Container-Images in Container Registry und Artifact Registry von der Erzwingung der Binärautorisierung auszunehmen, und legen die Standardregel fest, um die Bereitstellung aller anderen Container zu verbieten.
Hinweise
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Binary Authorization APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Binary Authorization APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Wenn Sie Cloud Shell nicht verwenden, installieren Sie
kubectl
.
Cluster mit aktivierter Binärautorisierung erstellen
GKE-Cluster mit aktivierter Binärautorisierung erstellen. Dies ist der Cluster, in dem die bereitgestellten Container-Images ausgeführt werden sollen.
Google Cloud Console
Rufen Sie in der Google Cloud Console die GKE-Seite Cluster auf.
In der Console wird eine Liste der GKE-Cluster in Ihrem Google Cloud-Projekt angezeigt.
Klicken Sie auf Cluster erstellen.
Geben Sie in das Feld Name den Wert
test-cluster
ein.Wählen Sie unter Standorttyp die Option Zonal aus.
Wählen Sie
us-central1-a
aus der Drop-down-Liste Zone aus.Klicken Sie auf den Link Sicherheit, um das Feld Sicherheit einzublenden.
Wählen Sie im Abschnitt Sicherheit die Option Binärautorisierung aktivieren aus.
Wählen Sie Nur erzwingen aus.
Klicken Sie auf Erstellen.
gcloud
Führen Sie gcloud container clusters create
mit dem aktivierten Flag --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE
aus:
gcloud container clusters create \ --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE \ --zone us-central1-a \ test-cluster
Standardrichtlinie ansehen
Standardmäßig ist Ihre Richtlinie für die Binärautorisierung so konfiguriert, dass alle Container-Images bereitgestellt werden können.
Google Cloud Console
So rufen Sie die Standardrichtlinie auf:
Rufen Sie in der Google Cloud Console die Seite Binärautorisierung auf.
In der Console werden Details zur Richtlinie angezeigt.
Klicken Sie auf Richtlinie bearbeiten.
Wählen Sie unter Projektstandardregel die Option Alle Images zulassen aus.
gcloud
Exportieren Sie die YAML-Richtliniendatei und tun Sie Folgendes, um die Standardrichtlinie aufzurufen:
gcloud container binauthz policy export
Die Datei hat standardmäßig folgenden Inhalt:
globalPolicyEvaluationMode: ENABLE
defaultAdmissionRule:
evaluationMode: ALWAYS_ALLOW
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
name: projects/<var>PROJECT_ID</var>/policy
REST API
Um die Standardrichtlinie anzuzeigen, rufen Sie sie so im JSON-Format ab:
curl \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "x-goog-user-project: ${PROJECT_ID}" \ "https://binaryauthorization.googleapis.com/v1/projects/${PROJECT_ID}/policy"
Die REST API gibt Folgendes zurück:
{ "name": "projects/PROJECT_ID/policy", "globalPolicyEvaluationMode": "ENABLE", "defaultAdmissionRule": { "evaluationMode": "ALWAYS_ALLOW", "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" } }
Nur ausgenommene Images zulassen
In diesem Abschnitt wird beschrieben, wie Sie die Richtlinie ändern, um Images auszunehmen und die Bereitstellung aller anderen Images nicht zulassen.
Google Cloud Console
So ändern Sie die Richtlinie:
Kehren Sie zur Seite Binärautorisierung in der Google Cloud Console zurück.
Klicken Sie auf Richtlinie bearbeiten.
Wählen Sie Disallow all images (Alle Images ablehnen).
Erweitern Sie unter Von Bereitstellungsregeln ausgenommene Images die Option Image-Pfade.
Klicken Sie auf Image-Pfade hinzufügen.
Container Registry
Fügen Sie unter Neuer Image-Pfad den folgenden Pfad aus einem Container Registry-Repository ein:
gcr.io/google-samples/hello-app:1.0
Artifact Registry
Fügen Sie unter Neuer Image-Pfad den folgenden Pfad aus einem Artifact Registry-Repository ein:
us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Klicken Sie auf Fertig, um den Image-Pfad zu speichern.
Klicken Sie auf Save Policy (Richtlinie speichern).
gcloud
So ändern Sie die Richtlinie, um Beispiel-Images aus Container Registry und Artifact Registry zuzulassen:
Exportieren Sie die YAML-Richtliniendatei:
gcloud container binauthz policy export > /tmp/policy.yaml
Ändern Sie in einem Texteditor
evaluationMode
vonALWAYS_ALLOW
inALWAYS_DENY
und fügen Sie ausgenommene Images zuadmissionWhitelistPatterns
hinzu.Ändern Sie die YAML-Richtliniendatei so, um die folgenden Beispiel-Images von Container Registry und Artifact Registry auszunehmen:
admissionWhitelistPatterns: - namePattern: gcr.io/google-samples/hello-app:1.0 - namePattern: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 globalPolicyEvaluationMode: ENABLE defaultAdmissionRule: evaluationMode: ALWAYS_DENY enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG name: projects/<var>PROJECT_ID</var>/policy
Importieren Sie die YAML-Richtliniendatei wieder in die Binärautorisierung:
gcloud container binauthz policy import /tmp/policy.yaml
REST API
So ändern Sie die Richtlinie:
Erstellen Sie eine Textdatei mit der aktualisierten Richtlinie im JSON-Format:
cat > /tmp/policy.json << EOM { "name": "projects/${PROJECT_ID}/policy", "admissionWhitelistPatterns": [ { "namePattern": "gcr.io/google-samples/hello-app:1.0" }, { "namePattern": "us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0" } ], "globalPolicyEvaluationMode": "ENABLE", "defaultAdmissionRule": { "evaluationMode": "ALWAYS_DENY", "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" } } EOM
Senden Sie die aktualisierte Richtlinie an die REST API:
curl -X PUT \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "x-goog-user-project: ${PROJECT_ID}" \ --data-binary @/tmp/policy.json \ "https://binaryauthorization.googleapis.com/v1/projects/${PROJECT_ID}/policy"
Richtlinie testen
So testen Sie die Richtlinie, indem Sie ein Image bereitstellen, das Sie auf die Zulassungsliste Exempt image
gesetzt haben:
Ein ausgenommenes Image im Cluster bereitstellen
Google Cloud Console
Stellen Sie ein ausgenommenes Image bereit:
Rufen Sie in der Google Cloud Console die GKE-Seite Cluster auf.
Klicken Sie auf Bereitstellen.
Sie werden aufgefordert, Details zum Deployment einzugeben.
Wählen Sie Vorhandenes Container-Image aus.
Geben Sie den Pfad des Container-Images ein.
Container Registry
Geben Sie Folgendes ein, um ein Image aus Container Registry bereitzustellen:
gcr.io/google-samples/hello-app:1.0
Artifact Registry
So stellen Sie ein Image aus Artifact Registry bereit:
us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Klicken Sie auf Weiter.
Geben Sie
hello-server
in das Feld Name der Anwendung ein.Klicken Sie auf Bereitstellen.
kubectl
Container Registry
Stellen Sie das Image aus Container Registry bereit:
kubectl run hello-server --image gcr.io/google-samples/hello-app:1.0 --port 8080
Artifact Registry
Stellen Sie das Image aus Artifact Registry bereit:
kubectl run hello-server --image us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 --port 8080
Prüfen Sie, ob das Image bereitgestellt werden konnte:
Google Cloud Console
So prüfen Sie, ob das Image bereitgestellt wurde:
- Zur Seite "GKE"
- Zur Seite „Arbeitslasten“
Die Arbeitslast
hello-server
wird mit einem grünen Symbol angezeigt. Dies weist darauf hin, dass sie ausgeführt wird.kubectl
Geben Sie den folgenden Befehl ein, um zu prüfen, ob das Image bereitgestellt werden konnte:
kubectl get pods
Sie sehen das ausgeführte Image.
Löschen Sie den Pod.
Google Cloud Console
Auf der GKE-Seite Arbeitslasten:
Wählen Sie die Arbeitslast hello-server aus.
Klicken Sie auf Löschen.
Wenn Sie aufgefordert werden, Ressourcen zu löschen, klicken Sie auf Löschen.
kubectl
kubectl delete pod hello-server
Bereinigen
Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen in Rechnung gestellt werden:
Löschen Sie den in GKE erstellten Cluster:
Console
So löschen Sie den Cluster:
Rufen Sie in der Google Cloud Console die GKE-Seite Cluster auf.
Wählen Sie den Cluster
test-cluster
aus und klicken Sie auf Löschen.
gcloud
Führen Sie den folgenden Befehl aus, um den Cluster zu löschen:
gcloud container clusters delete \ --zone=us-central1-a \ test-cluster
Nächste Schritte
- Weitere Informationen zu ausgenommenen Images, einschließlich der Verwendung von Platzhaltern, um mehrere Images auszunehmen, finden Sie unter Ausgenommene Images.
- End-to-End-Anleitungen zum Einrichten und Erzwingen einer Richtlinie, die Attestierungen erfordert, finden Sie hier:
- Lesen Sie unser Infomaterial zu DevOps und informieren Sie sich über das Forschungsprogramm DevOps Research and Assessment (DORA).