In diesem Dokument wird beschrieben, wie Sie Zulassungslisten erstellen, mit denen Sie privilegierte Arbeitslasten auf 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 bereitgestellte Arbeitslasten von den standardmäßigen Autopilot-Sicherheitseinschränkungen für bestimmte Kubernetes-Arbeitslasten ausnehmen möchten. Sie sollten bereits mit der Zugangssteuerung für privilegierte Arbeitslasten in Autopilot vertraut sein.
Privilegierte Arbeitslasten in Autopilot
Im Autopilot-Modus wird eine Standardgruppe von Einschrä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. In Autopilot- oder Standardclustern können Sie standardmäßig 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 Kubernetes-Ressourcen vom Typ „WorkloadAllowlist“, die Sie in YAML-Dateien definieren und in Cloud Storage-Buckets speichern. Identitäts- und Kontoadministratoren verwenden Organisationsrichtlinien, damit Sie Ihre Cluster so konfigurieren können, dass diese vom Kunden verwalteten Zulassungslisten und Buckets erkannt werden. 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 Zulassungssteuerung für privilegierte Autopilot-Arbeitslasten.
Hinweise
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 diesen Task verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit dem Befehl
gcloud components updateab. In früheren gcloud CLI-Versionen werden die Befehle in diesem Dokument möglicherweise nicht unterstützt.
-
Enable the Cloud Storage API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - 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 auf die Zulassungsliste gesetzt werden soll.
Fügen Sie dem Feld
metadata.annotationsin der Pod-Spezifikation die 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, das Label 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: Generalisieren Sie die WorkloadAllowlist, damit ähnliche Arbeitslasten ausgenommen werden können. Gehen Sie nach einer der folgenden Methoden vor:
In bestimmten Feldern werden reguläre Ausdrücke unterstützt, z. B. in
matchingCriteria.containers[*].imageundmatchingCriteria.containers[*].args. Verwenden Sie einen regulären Ausdruck, der mit mehreren Werten für verschiedene Arbeitslasten übereinstimmt.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.
Wenn die Richtlinien Ihrer Organisation die Installation von Zulassungslisten aus Ihrem Bucket in Clustern zulassen, können Clusteradministratoren Folgendes tun:
- Fügen Sie einem Cluster die Pfade Ihrer Zulassungsliste hinzu.
- Erstellen Sie einen AllowlistSynchronizer, um die Zulassungslisten aus Ihrem Bucket zu installieren.
Weitere Informationen zum Konfigurieren eines Clusters und zum Installieren von Zulassungslisten finden Sie unter Zulassung privilegierter Arbeitslasten im Autopilot-Modus steuern.
Beispiel für die Konfiguration der Zulassungsliste
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 einer Arbeitslast mit den folgenden Eigenschaften entspricht:
- Der
container-1-Container in der Arbeitslast wird im privilegierten Modus ausgeführt. - Die Arbeitslast stellt das Verzeichnis
/var/log/aus dem Dateisystem des Knotens 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.
Sehen Sie sich die Beispiel-WorkloadAllowlist an:
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 Eigenschaften:
- Die Werte im Feld
exemptionsgeben die Autopilot-Einschränkungen an, die durch die Zulassungsliste umgangen werden. - Die Werte im Feld
matchingCriteriageben die Container an, die von der Beispielarbeitslast verwendet werden, sowie 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, erlaubt GKE die Ausführung der privilegierten Arbeitslast in diesem Cluster. Wenn Sie beispielsweise in einem Standardcluster mit Autopilot-Knoten diese WorkloadAllowlist installieren, kann die privilegierte Arbeitslast auf den Autopilot-Knoten ausgeführt werden.
Zugriff auf den GKE-Dienst-Agent gewähren
Damit Sie Zulassungslisten aus Ihrem Bucket in einem Cluster synchronisieren können, benötigt der GKE-Dienst-Agent im Clusterprojekt die folgenden IAM-Rollen:
- Storage-Bucket-Betrachter (
roles/storage.bucketViewer) - Storage-Objekt-Betrachter (
roles/storage.objectViewer)
So weisen Sie diese Rollen dem Dienst-Agent zu:
So finden 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.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.iam.gserviceaccount.com \ --project=BUCKET_PROJECT_ID \ --role=roles/storage.objectViewer
Nächste Schritte
- Zulassungslistenpfade einer Organisationsrichtlinie hinzufügen
- Cluster konfigurieren und Zulassungslisten installieren