In diesem Dokument wird beschrieben, wie Sie Zulassungslisten erstellen, mit denen Sie privilegierte Arbeitslasten in Ihren Autopilot-Knoten bereitstellen können. Sie speichern diese Zulassungslisten in Cloud Storage-Buckets. Dieses Dokument richtet sich an Plattformadministratoren und -operatoren, die bestimmte vom Kunden verwaltete Arbeitslasten von den standardmäßigen Autopilot-Sicherheitseinschränkungen für bestimmte Kubernetes-Arbeitslasten ausnehmen möchten. Sie sollten bereits mit der Zulassungskontrolle für privilegierte Arbeitslasten in Autopilot vertraut sein.
Privilegierte Arbeitslasten in Autopilot
Im Autopilot-Modus wird eine Reihe von Standardeinschränkungen für Arbeitslasten erzwungen, um die Sicherheit zu verbessern. Sie können diese Einschränkungen umgehen, um bestimmte privilegierte Arbeitslasten auszuführen, indem Sie Zulassungslisten installieren, die diesen Arbeitslasten entsprechen. Standardmäßig können Sie in jedem Autopilot- oder Standardcluster Zulassungslisten von Autopilot-Partnern und bestimmten Open-Source-Projekten installieren.
Berechtigte GKE-Kunden können Zulassungslisten für ihre eigenen privilegierten Arbeitslasten erstellen und verwalten, die nicht mit den standardmäßigen Autopilot-Einschränkungen kompatibel sind. Diese Zulassungslisten sind benutzerdefinierte WorkloadAllowlist-Kubernetes-Ressourcen, die Sie in YAML-Dateien definieren und in Cloud Storage-Buckets speichern. Identitäts- und Kontoadministratoren können mit Organisationsrichtlinien konfigurieren, dass Ihre Cluster diese vom Kunden verwalteten Zulassungslisten und Buckets erkennen. Clusteradministratoren können diese Zulassungslisten installieren, damit die privilegierten Arbeitslasten im Autopilot-Modus ausgeführt werden können.
Weitere Informationen zum Prozess und zu den beteiligten Personen finden Sie unter Funktionsweise der Zulassungskontrolle für privilegierte Autopilot-Arbeitslasten.
Hinweis
Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:
- Aktivieren Sie die Google Kubernetes Engine API. Google Kubernetes Engine API aktivieren
- Wenn Sie die Google Cloud CLI für diese Aufgabe verwenden möchten,
installieren und dann
initialisieren Sie die
gcloud CLI. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste
Version mit dem
gcloud components updateBefehl ab. Ältere gcloud CLI-Versionen unterstützen möglicherweise nicht die Ausführung der Befehle in diesem Dokument.
-
Aktivieren Sie die Cloud Storage API.
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (
roles/serviceusage.serviceUsageAdmin), die die Berechtigungserviceusage.services.enableenthält. Informationen zum Zuweisen von Rollen. - Achten Sie darauf, dass Sie einen GKE-Cluster mit Version 1.35 oder höher haben. Sie können für diese Aufgabe auch einen Autopilot-Cluster erstellen.
- Prüfen Sie, ob Sie einen Cloud Storage-Bucket haben, in dem Sie Zulassungslistendateien speichern können. Sie können für diese Aufgabe auch einen Bucket erstellen.
- Öffnen Sie das YAML-Manifest, das die privilegierte Arbeitslast definiert, die Sie in Autopilot ausführen möchten.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihren Bucket zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Speichern von Zulassungslisten in Cloud Storage und zum Konfigurieren der Synchronisierung benötigen:
-
Zulassungslisten in Ihrem Bucket speichern:
Storage Object User (
roles/storage.objectUser) -
Zugriff auf den GKE-Dienst-Agent gewähren:
Storage-Administrator (
roles/storage.admin)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
WorkloadAllowlist erstellen und hochladen
Zulassungslisten sind benutzerdefinierte WorkloadAllowlist-Ressourcen, die Sie in YAML-Dateien definieren. Die Felder in der Spezifikation einer WorkloadAllowlist ähneln den Feldern in einer Kubernetes Pod-Spezifikation. Wenn Sie eine Zulassungsliste in Ihrem Cluster installieren und eine privilegierte Arbeitslast bereitstellen, validiert GKE die Spezifikation der privilegierten Arbeitslast anhand der installierten Zulassungsliste. Die Arbeitslast kann nur ausgeführt werden, wenn alle Felder in der Zulassungslistenspezifikation mit den entsprechenden Feldern in der Arbeitslastspezifikation übereinstimmen.
So erstellen Sie eine neue WorkloadAllowlist und laden sie in Ihren Cloud Storage-Bucket hoch:
- Identifizieren Sie die privilegierte Arbeitslast, die Sie auf die Zulassungsliste setzen möchten.
Fügen Sie der Pod- Spezifikation im Feld
metadata.annotationsdie folgende Annotation hinzu:cloud.google.com/generate-allowlist: "true"Fügen Sie für Pods, die von einem Controller wie einem DaemonSet oder einem Deployment verwaltet werden, die Annotation dem Feld
spec.template.metadata.annotationshinzu.Versuchen Sie, die privilegierte Arbeitslast in Ihrem Cluster zu erstellen:
kubectl apply -f WORKLOAD_FILE_PATHErsetzen Sie WORKLOAD_FILE_PATH durch den Pfad zu Ihrer Arbeitslastmanifestdatei. GKE lehnt die Arbeitslast mit einer Fehlermeldung ab, die ein WorkloadAllowlist-Manifest enthält. Die Ausgabe sieht etwa so aus:
This workload can be enabled using the following Custom Resource. To be used in-cluster, the WorkloadAllowlist must be uploaded to Google Cloud Storage and then installed using an AllowlistSynchronizer. Refer to https://cloud.google.com/kubernetes-engine/docs/how-to/autopilot-privileged-allowlists. Note that many common partner workloads are already allowlisted. These can be installed directly using an AllowlistSynchronizer. Refer to https://cloud.google.com/kubernetes-engine/docs/resources/autopilot-partners. --- apiVersion: auto.gke.io/v1 kind: WorkloadAllowlist metadata: name: test-pod-allowlist-2025-09-11t22-40-37 annotations: autopilot.gke.io/no-connect: "true" exemptions: - autogke-disallow-privilege matchingCriteria: containers: - name: pause-container2 image: k8s.gcr.io/pause2 securityContext: privileged: trueErstellen Sie in einem Texteditor eine YAML-Datei, die die generierte WorkloadAllowlist enthält.
Legen Sie das Feld
metadata.nameder Zulassungsliste fest.Optional: Verallgemeinern Sie die WorkloadAllowlist, damit ähnliche Arbeitslasten ausgenommen werden können. Gehen Sie nach einer der folgenden Methoden vor:
Bestimmte Felder unterstützen reguläre Ausdrücke, z. B.
matchingCriteria.containers[*].imageundmatchingCriteria.containers[*].args. Verwenden Sie einen regulären Ausdruck, der mehrere Werte für verschiedene Arbeitslasten abgleicht.Bestimmte Felder wie
matchingCriteria.containersundmatchingCriteria.securityContext.capabilities.addstimmen mit jeder Arbeitslast überein, die eine Teilmenge der Werte aus der WorkloadAllowlist enthält. Geben Sie in der WorkloadAllowlist zusätzliche Werte an, um andere Arbeitslasten abzugleichen.
Weitere Informationen zu allen unterstützten Feldern und Werten, die Sie verwenden können, finden Sie in der WorkloadAllowlist-CustomResourceDefinition.
Laden Sie die Manifestdatei in Ihren Cloud Storage-Bucket hoch.
Wenn Ihre Organisationsrichtlinien die Installation von Zulassungslisten aus Ihrem Bucket in Clustern zulassen, können Clusteradministratoren Folgendes tun:
- Fügen Sie einem Cluster Ihre Zulassungslistenpfade hinzu.
- Erstellen Sie einen AllowlistSynchronizer, um die Zulassungslisten aus Ihrem Bucket zu installieren.
Weitere Informationen zum Konfigurieren eines Clusters und zum Installieren von Zulassungslisten, siehe Zulassungskontrolle für privilegierte Arbeitslasten im Autopilot-Modus.
Beispiel für eine Zulassungslistenkonfiguration
Das Feld matchingCriteria in einer WorkloadAllowlist-Spezifikation hat eine ähnliche Struktur wie die Kubernetes Pod-Spezifikation. Die
WorkloadAllowlist-CustomResourceDefinition
ist die Quelle der Wahrheit für alle Felder, Werte und Ausdrücke, die Sie
verwenden können.
In diesem Abschnitt sehen Sie ein Beispiel für eine Zulassungsliste, die mit einer Arbeitslast übereinstimmt, die die folgenden Attribute hat:
- Der Container
container-1in der Arbeitslast wird im privilegierten Modus ausgeführt. - Die Arbeitslast stellt das Verzeichnis
/var/log/aus dem Knotendateisystem im Schreibmodus bereit.
Überprüfen Sie die Beispielarbeitslast:
apiVersion: apps/v1 kind: Deployment metadata: name: example-privileged-workload labels: env: dev spec: selector: matchLabels: env: dev template: metadata: labels: env: dev spec: containers: - name: container-1 image: example-image-1 resources: requests: cpu: "400m" memory: "4Gi" # Run the container in privileged mode securityContext: privileged: true - name: container-2 image: example-image-2 volumeMounts: - name: write-varlog mountPath: /logs readOnly: false # Mount a host directory volumes: - name: write-varlog hostPath: path: /var/log type: DirectoryStandardmäßig lehnt Autopilot diese Arbeitslast ab.
Überprüfen Sie die Beispiel-WorkloadAllowlist:
apiVersion: auto.gke.io/v1 kind: WorkloadAllowlist minGKEVersion: 1.32.0-gke.1000000 metadata: name: example-privileged-workload annotations: autopilot.gke.io/no-connect: "true" # List of constraints that the allowlist modifies exemptions: - autogke-disallow-privilege - autogke-no-write-mode-hostpath matchingCriteria: containers: - name: container-1 image: example-image-1 securityContext: privileged: true - name: container-2 image: example-image-2 volumeMounts: - name: write-varlog mountPath: /logs readOnly: false volumes: - name: write-varlog hostPath: path: /var/logDiese WorkloadAllowlist hat die folgenden Attribute:
- Die Werte im Feld
exemptionsgeben die Autopilot-Einschränkungen an, die von der Zulassungsliste umgangen werden. - Die Werte im Feld
matchingCriteriageben die Container an, die von der Beispielarbeitslast verwendet werden, und die Felder, die normalerweise gegen Autopilot-Einschränkungen verstoßen würden.
Die Zulassungsliste enthält nur die Werte für Felder, die gegen Einschränkungen verstoßen. Andere Felder in der Arbeitslast, z. B. das Feld
resources.requests, werden ignoriert.- Die Werte im Feld
Wenn Sie diese Beispiel-WorkloadAllowlist in einem Cluster installieren, lässt GKE zu, dass die privilegierte Arbeitslast in diesem Cluster ausgeführt wird. Wenn Sie diese WorkloadAllowlist beispielsweise in einem Standardcluster mit Autopilot-Knoten installieren, kann die privilegierte Arbeitslast auf den Autopilot-Knoten ausgeführt werden.
Zugriff auf den GKE-Dienst-Agent gewähren
Zum Synchronisieren von Zulassungslisten aus Ihrem Bucket in einem Cluster benötigt der GKE-Dienst-Agent im Clusterprojekt die folgenden IAM-Rollen:
- Storage Bucket Viewer (
roles/storage.bucketViewer) - Storage Object Viewer (
roles/storage.objectViewer)
So weisen Sie dem Dienst-Agent diese Rollen zu:
Suchen Sie die Projektnummer Ihres Clusterprojekts:
gcloud projects describe CLUSTER_PROJECT_ID \ --format='value(projectNumber)'Weisen Sie die Rolle
roles/storage.bucketViewerzu:gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.s3ns-system.iam.gserviceaccount.com \ --project=BUCKET_PROJECT_ID \ --role=roles/storage.bucketViewerErsetzen Sie Folgendes:
BUCKET_NAME: Der Name Ihres Cloud Storage-Bucket.CLUSTER_PROJECT_NUMBER: Die Projektnummer des Clusterprojekts aus der Ausgabe des vorherigen Schritts.BUCKET_PROJECT_ID: Die ID des Projekts, das Ihren Bucket enthält.
Weisen Sie die Rolle
roles/storage.objectViewerzu:gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.s3ns-system.iam.gserviceaccount.com \ --project=BUCKET_PROJECT_ID \ --role=roles/storage.objectViewer
Nächste Schritte
- Fügen Sie einer Organisationsrichtlinie Ihre Zulassungslistenpfade hinzu.
- Cluster konfigurieren und Zulassungslisten installieren