Richtlinie mit dem gcloud-Tool konfigurieren

Diese Seite enthält Anweisungen dazu, wie Sie mit dem gcloud-Befehlszeilentool eine Richtlinie für die Binärautorisierung konfigurieren. Alternativ können Sie diese Aufgaben auch mit der Google Cloud Console oder der REST API ausführen. Dieser Schritt ist Teil der Einrichtung der Binärautorisierung.

Exportieren Sie die vorhandene Richtlinie als YAML-Datei, um eine Richtlinie mit dem Befehlszeilentool zu konfigurieren. Nachdem Sie die Datei geändert haben, können Sie sie importieren, um die Richtlinie zu aktualisieren, wie später in dieser Anleitung beschrieben. Weitere Informationen zum YAML-Richtlinienformat finden Sie in der Referenz zu YAML-Richtlinien.

Hinweis

  1. Binärautorisierung aktivieren
  2. Cluster erstellen
  3. Wenn Sie Attestierungen verwenden möchten, empfehlen wir, vor dem Konfigurieren der Richtlinie Attestierer zu erstellen. Sie können Attestierer mit einem Befehlszeilentool oder über die Cloud Console erstellen.
  4. Legen Sie als Projekt-ID das Projekt fest, in dem Sie die Binärautorisierung aktiviert haben:

    PROJECT_ID=PROJECT_ID
    gcloud config set project ${PROJECT_ID}
    

YAML-Richtliniendatei exportieren

Dieser Abschnitt gilt für GKE, Anthos-Cluster auf VMware, Cloud Run und Anthos Service Mesh.

Zum Aktualisieren der Richtlinie exportieren Sie sie zuerst so in eine lokale YAML-Datei:

gcloud container binauthz policy export > /tmp/policy.yaml

Der Dateiinhalt sieht standardmäßig in etwa so aus:

admissionWhitelistPatterns:
- namePattern: gcr.io/google_containers/*
- namePattern: gcr.io/google-containers/*
- namePattern: k8s.gcr.io/*
- namePattern: gke.gcr.io/*
- namePattern: gcr.io/stackdriver-agents/*
globalPolicyEvaluationMode: ENABLE
defaultAdmissionRule:
  evaluationMode: EVALUATION_MODE
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
name: projects/PROJECT_ID/policy

Bearbeiten Sie die Datei und fügen Sie Abschnitte hinzu oder aktualisieren Sie sie, wie später in dieser Anleitung beschrieben, um die Richtlinie zu ändern. Nachdem Sie die Datei gespeichert haben, können Sie die Richtlinie importieren.

Standardregel festlegen

Dieser Abschnitt gilt für GKE, Anthos-Cluster auf VMware, Cloud Run und Anthos Service Mesh.

Eine Regel ist Bestandteil einer Richtlinie, die Einschränkungen für Container-Images definiert. Nur Container-Images, die diesen Einschränkungen genügen, können bereitgestellt werden. Die Standardregel definiert Einschränkungen, die für alle nicht ausgenommenen Images gelten, die keine eigene clusterspezifische Regel haben. Jede Richtlinie muss eine Standardregel haben.

Die Standardregel wird im Knoten defaultAdmissionRule in der YAML-Richtliniendatei definiert. Weitere Informationen zu den Bestandteilen dieser Regel finden Sie unter ADMISSION_RULE in der YAML-Richtlinienreferenz. Beispiele für Standardregeln finden Sie unter Beispielrichtlinien.

Bearbeiten Sie den Knoten defaultAdmissionRule in der Datei policy.yaml nach Bedarf, um die Standardregel festzulegen:

defaultAdmissionRule:
  evaluationMode: EVALUATION_MODE
  enforcementMode: ENFORCEMENT_MODE
  requireAttestationsBy:
  - ATTESTOR
  - ...

Dabei gilt:

  • EVALUATION_MODE: Der Auswertungsmodus gibt die Art der Einschränkung an, die der Binärautorisierungserzwinger zum Zeitpunkt des Deployments erzwingt. Ersetzen Sie EVALUATION_MODE durch einen der folgenden Werte:

    • ALWAYS_ALLOW: erlaubt die Bereitstellung aller Images
    • ALWAYS_DENY: verhindert, dass alle Images bereitgestellt werden
    • REQUIRE_ATTESTATION: ermöglicht das Deployment eines Images, wenn dem Image eine Attestierung zugeordnet ist. Zum Zeitpunkt der Bereitstellung überprüft der Enforcer die Attestierung mit den Attestierern, die Sie der Liste ATTESTOR in dieser Regel hinzufügen. Informationen zum Erstellen von Attestierern finden Sie unter Attestierer erstellen. Wenn Sie REQUIRE_ATTESTATION angeben, müssen Sie auch einen requireAttestationsBy-Block hinzufügen, der mindestens einen Attestierer enthält. Informationen zum Erstellen von Attestierern finden Sie unter Attestierer erstellen.
  • ENFORCEMENT_MODE: Der Erzwingungsmodus gibt an, wie der Erzwinger reagiert, wenn ein Image gegen eine Regel verstößt. Ersetzen Sie ENFORCEMENT_MODE durch einen der folgenden Werte:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: Blockieren Sie Images, die gegen die Regel verstoßen, und protokollieren Sie Informationen zum Verstoß in Cloud-Audit-Logs (Standard).
    • DRYRUN_AUDIT_LOG_ONLY: Erlauben Sie alle Images, aber protokollieren Sie Informationen zur Erzwingung in Logs auf Cloud-Audit-Logs, einschließlich Informationen zu Verstößen
  • ATTESTOR: Wenn Sie EVALUATION_MODE auf REQUIRE_ATTESTATION festlegen, müssen Sie auch den Block requireAttesationsBy hinzufügen. Im Block listen Sie einen oder mehrere Attestierer nach Ressourcen-ID auf. Die Ressourcen-ID hat folgendes Format:

    projects/PROJECT_ID/attestors/ATTESTOR_NAME.

    Weitere Informationen zum Erstellen von Attestierern finden Sie unter Attestierer erstellen.

Ausgenommene Images verwalten

Dieser Abschnitt gilt für GKE, Anthos-Cluster auf VMware, Cloud Run und Anthos Service Mesh.

Ein ausgenommenes Image ist ein Image, das von den Richtlinienregeln ausgenommen ist. Die Binärautorisierung lässt das Deployment von ausgenommenen Images immer zu.

Wenn Sie ausgenommene Images angeben möchten, listen Sie ihre Registry-Pfade in admissionWhitelistPatterns auf. Der Pfad bezieht sich auf Container Registry oder eine andere Image-Registry. Beim Deployment schließt die Binärautorisierung die Liste der in admissionWhitelistPatterns angegebenen Images nach den von der Systemrichtlinie angegebenen Images aus.

Fügen Sie einen namePattern-Knoten unter einer admissionWhitelistPatterns-Liste in der Datei policy.yaml hinzu, um ein ausgenommenes Image einzufügen:

admissionWhitelistPatterns:
- namePattern: MATCHING_PATTERN

Dabei ist MATCHING_PATTERN der genau passende Pfad zu einem einzelnen Image in Ihrer Registry oder zu allen Images, die einem Muster mit dem Platzhaltersymbol (*, **) entsprechen.

Cloud Run

Dieser Abschnitt gilt für Cloud Run.

Der Image-Name muss das Format IMAGE_PATH@* haben, z. B. us-docker.pkg.dev/cloudrun/container/hello@*.

Der Image-Name darf kein Tag enthalten. Wenn Sie einen Image-Namen formatieren möchten, mit dem Image-Namen ausgenommen werden, können Sie * als Platzhalter verwenden.

Pfadnamen können einen Digest angeben.

Auswertungsmodus für Systemrichtlinien

Dieser Abschnitt gilt für GKE- und Anthos-Cluster auf VMware.

Der Auswertungsmodus für Systemrichtlinien ist eine Richtlinieneinstellung, bei der die Binärautorisierung eine Systemrichtlinie auswertet, bevor die von Ihnen konfigurierte Richtlinie ausgewertet wird. Google verwaltet die Systemrichtlinie, mit der eine Liste der von Google verwalteten Systemimages ausgenommen wird, die von GKE verwendet werden. In der Systemrichtlinie aufgeführte Images werden nicht durch die Richtlinienerzwingung blockiert. Wenn Sie die Einstellung nicht aktivieren, müssen Sie die Liste der ausgenommenen Images selbst verwalten. Ausgenommene Images verwalten

Sie können den Inhalt der globalen Richtlinie mit dem folgenden Befehl abrufen:

gcloud alpha container binauthz policy export-system-policy

Fügen Sie der Datei policy.yaml die folgende Zeile hinzu, um den Auswertungsmodus für globale Richtlinien zu aktivieren:

globalPolicyEvaluationMode: ENABLE

Fügen Sie Folgendes hinzu, um den Auswertungsmodus für globale Richtlinien zu deaktivieren:

globalPolicyEvaluationMode: DISABLE

So exportieren Sie die einer Richtlinie zugeordnete Systemrichtlinie:

gcloud alpha container binauthz policy export-system-policy \
  --location=REGION > /tmp/policy.yaml

Ersetzen Sie REGION durch die Region, die der Systemrichtlinie zugeordnet ist, die Sie exportieren möchten (oder "global"). Hier einige Beispiele: asia-east1, europe-west1, us-central1

Wenn Sie --location weglassen oder --location=global angeben, gibt der Befehl eine Systemrichtlinie aus einer Region in der letzten Gruppe von Regionen aus, um Aktualisierungen zu erhalten. Da die meisten Änderungen an der Systemrichtlinie Hinzufügungen sind, enthält die Ausgabe die Gruppe von Systemimages, die derzeit in allen Regionen zulässig sind.

Clusterspezifische Regeln festlegen (optional)

Dieser Abschnitt gilt für GKE- und Anthos-Cluster auf VMware.

Ein Cluster kann auch eine oder mehrere clusterspezifische Regeln enthalten. Dieser Regeltyp gilt für Container-Images, die nur in bestimmten GKE-Clustern bereitgestellt werden sollen. Clusterspezifische Regeln sind ein optionaler Bestandteil einer Richtlinie.

Clusterspezifische Regeln werden in clusterAdmissionRules-Knoten in der YAML-Richtliniendatei definiert. Weitere Informationen zu den Bestandteilen dieser Regel finden Sie unter ADMISSION_RULE in der YAML-Richtlinienreferenz. Ein Beispiel finden Sie unter Clusterspezifische Regel verwenden in den Beispielrichtlinien.

So fügen Sie eine clusterspezifische Regel hinzu:

Fügen Sie in der Datei policy.yaml einen clusterAdmissionRules-Knoten hinzu:

clusterAdmissionRules:
  CLUSTER_SPECIFIER:
    evaluationMode: EVALUATION_MODE
    enforcementMode: ENFORCEMENT_MODE
    requireAttestationsBy:
    - ATTESTOR
    - ...

Dabei gilt:

  • CLUSTER_SPECIFIER: Ressourcen-ID des Clusters, auf den die Regel angewendet wird. So formatieren Sie die Regel:

  • EVALUATION_MODE: Der Auswertungsmodus gibt die Art der Einschränkung an, die der Binärautorisierungserzwinger zum Zeitpunkt des Deployments erzwingt. Ersetzen Sie EVALUATION_MODE durch einen der folgenden Werte:

    • ALWAYS_ALLOW: erlaubt die Bereitstellung aller Images
    • ALWAYS_DENY: verhindert, dass alle Images bereitgestellt werden
    • REQUIRE_ATTESTATION: ermöglicht die Bereitstellung eines Images, wenn dem Image eine Attestierung zugeordnet ist. Zum Zeitpunkt der Bereitstellung überprüft der Enforcer die Attestierung mit den Attestierern, die Sie der Liste ATTESTOR in dieser Regel hinzufügen. Informationen zum Erstellen von Attestierern finden Sie unter Attestierer erstellen. Wenn Sie REQUIRE_ATTESTATION angeben, müssen Sie auch einen requireAttestationsBy-Block hinzufügen, der mindestens einen Attestierer enthält. Informationen zum Erstellen von Attestierern finden Sie unter Attestierer erstellen.
  • ENFORCEMENT_MODE: Der Erzwingungsmodus gibt an, wie der Erzwinger reagiert, wenn ein Image gegen eine Regel verstößt. Ersetzen Sie ENFORCEMENT_MODE durch einen der folgenden Werte:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: Blockieren Sie Images, die gegen die Regel verstoßen, und protokollieren Sie Informationen zum Verstoß in Cloud-Audit-Logs (Standard).
    • DRYRUN_AUDIT_LOG_ONLY: Erlauben Sie alle Images, aber protokollieren Sie Informationen zur Erzwingung in Logs auf Cloud-Audit-Logs, einschließlich Informationen zu Verstößen
  • ATTESTOR: Wenn Sie EVALUATION_MODE auf REQUIRE_ATTESTATION festlegen, müssen Sie auch den Block requireAttesationsBy hinzufügen. Im Block listen Sie einen oder mehrere Attestierer nach Ressourcen-ID auf. Die Ressourcen-ID hat folgendes Format:

    projects/PROJECT_ID/attestors/ATTESTOR_NAME.

    Weitere Informationen zum Erstellen von Attestierern finden Sie unter Attestierer erstellen.

Spezifische Regeln festlegen (optional)

Sie können Regeln erstellen, die entweder auf eine Mesh-Dienstidentität, ein Kubernetes-Dienstkonto oder einen Kubernetes-Namespace beschränkt sind.

Regel für eine Anthos Service Mesh-Dienstidentität festlegen

Wenn Sie eine Regel für eine Anthos Service Mesh-Dienstidentität (Vorschau) festlegen möchten, bearbeiten Sie die Datei policy.yaml und fügen Sie einen Block istioServiceIdentityAdmissionRules hinzu. Beispiel:

defaultAdmissionRule:
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
  evaluationMode: ALWAYS_DENY
globalPolicyEvaluationMode: ENABLE
istioServiceIdentityAdmissionRules:
  SERVICE_IDENTITY_ID:
    enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
    evaluationMode: ENFORCEMENT_MODE
    requireAttestationsBy:
    - <var>ATTESTOR</var>
    - ...

name: projects/PROJECT_ID/policy

Dabei gilt:

  • SERVICE_IDENTITY_ID: die Identität des Anthos Service Mesh-Dienstes, auf den diese Regel angewendet werden soll Die Dienstidentität hat das folgende Format: PROJECT_ID.svc.id.goog/ns/NAMESPACE/sa/SERVICE_ACCOUNT. Ersetzen Sie in der Dienstidentitäts-ID Folgendes:

    • PROJECT_ID ist die ID des Projekts, in dem Sie die Kubernetes-Ressourcen definieren.
    • NAMESPACE: der Kubernetes-Namespace
    • SERVICE_ACCOUNT: das Dienstkonto
  • EVALUATION_MODE: Der Auswertungsmodus gibt die Art der Einschränkung an, die der Binärautorisierungserzwinger zum Zeitpunkt des Deployments erzwingt. Ersetzen Sie EVALUATION_MODE durch einen der folgenden Werte:

    • ALWAYS_ALLOW: erlaubt die Bereitstellung aller Images
    • ALWAYS_DENY: verhindert, dass alle Images bereitgestellt werden
    • REQUIRE_ATTESTATION: ermöglicht das Deployment eines Images, wenn dem Image eine Attestierung zugeordnet ist Zum Zeitpunkt der Bereitstellung überprüft der Enforcer die Attestierung mit den Attestierern, die Sie der Liste ATTESTOR in dieser Regel hinzufügen. Informationen zum Erstellen von Attestierern finden Sie unter Attestierer erstellen. Wenn Sie REQUIRE_ATTESTATION angeben, müssen Sie auch einen requireAttestationsBy-Block hinzufügen, der mindestens einen Attestierer enthält. Informationen zum Erstellen von Attestierern finden Sie unter Attestierer erstellen.
  • ENFORCEMENT_MODE: Der Erzwingungsmodus gibt an, wie der Erzwinger reagiert, wenn ein Image gegen eine Regel verstößt. Ersetzen Sie ENFORCEMENT_MODE durch einen der folgenden Werte:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: Blockieren Sie Images, die gegen die Regel verstoßen, und protokollieren Sie Informationen zum Verstoß in Cloud-Audit-Logs (Standard).
    • DRYRUN_AUDIT_LOG_ONLY: Erlauben Sie alle Images, aber protokollieren Sie Informationen zur Erzwingung in Logs auf Cloud-Audit-Logs, einschließlich Informationen zu Verstößen
  • ATTESTOR: Wenn Sie EVALUATION_MODE auf REQUIRE_ATTESTATION festlegen, müssen Sie auch den Block requireAttesationsBy hinzufügen. Im Block listen Sie einen oder mehrere Attestierer nach Ressourcen-ID auf. Die Ressourcen-ID hat folgendes Format:

    projects/PROJECT_ID/attestors/ATTESTOR_NAME.

    Weitere Informationen zum Erstellen von Attestierern finden Sie unter Attestierer erstellen.

Regel für ein Kubernetes-Dienstkonto festlegen

Zum Festlegen einer Regel für ein Kubernetes-Dienstkonto bearbeiten Sie die Datei policy.yaml und fügen einen kubernetesServiceAccountAdmissionRules-Block hinzu. Beispiel:

defaultAdmissionRule:
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
  evaluationMode: ALWAYS_DENY
globalPolicyEvaluationMode: ENABLE
kubernetesServiceAccountAdmissionRules:
  KUBERNETES_SERVICE_ACCOUNT_ID:
    enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
    evaluationMode: ENFORCEMENT_MODE
    requireAttestationsBy:
    - <var>ATTESTOR</var>
    - ...
name: projects/PROJECT_ID/policy

Dabei gilt:

  • KUBERNETES_SERVICE_ACCOUNT_ID: das Kubernetes-Dienstkonto, für das die Regel festgelegt werden soll Diese Dienstkonto-ID hat das Format NAMESPACE:SERVICE_ACCOUNT. Ersetzen Sie in der Dienstkonto-ID Folgendes:

    • NAMESPACE: der Kubernetes-Namespace
    • SERVICE_ACCOUNT: der Name des Dienstkontos
  • EVALUATION_MODE: Der Auswertungsmodus gibt die Art der Einschränkung an, die der Binärautorisierungserzwinger zum Zeitpunkt des Deployments erzwingt. Ersetzen Sie EVALUATION_MODE durch einen der folgenden Werte:

    • ALWAYS_ALLOW: erlaubt die Bereitstellung aller Images
    • ALWAYS_DENY: verhindert, dass alle Images bereitgestellt werden
    • REQUIRE_ATTESTATION: ermöglicht die Bereitstellung eines Images, wenn dem Image eine Attestierung zugeordnet ist. Zum Zeitpunkt der Bereitstellung überprüft der Enforcer die Attestierung mit den Attestierern, die Sie der Liste ATTESTOR in dieser Regel hinzufügen. Informationen zum Erstellen von Attestierern finden Sie unter Attestierer erstellen. Wenn Sie REQUIRE_ATTESTATION angeben, müssen Sie auch einen requireAttestationsBy-Block hinzufügen, der mindestens einen Attestierer enthält. Informationen zum Erstellen von Attestierern finden Sie unter Attestierer erstellen.
  • ENFORCEMENT_MODE: Der Erzwingungsmodus gibt an, wie der Erzwinger reagiert, wenn ein Image gegen eine Regel verstößt. Ersetzen Sie ENFORCEMENT_MODE durch einen der folgenden Werte:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: Blockieren Sie Images, die gegen die Regel verstoßen, und protokollieren Sie Informationen zum Verstoß in Cloud-Audit-Logs (Standard).
    • DRYRUN_AUDIT_LOG_ONLY: Erlauben Sie alle Images, aber protokollieren Sie Informationen zur Erzwingung in Logs auf Cloud-Audit-Logs, einschließlich Informationen zu Verstößen
  • ATTESTOR: Wenn Sie EVALUATION_MODE auf REQUIRE_ATTESTATION festlegen, müssen Sie auch den Block requireAttesationsBy hinzufügen. Im Block listen Sie einen oder mehrere Attestierer nach Ressourcen-ID auf. Die Ressourcen-ID hat folgendes Format:

    projects/PROJECT_ID/attestors/ATTESTOR_NAME.

    Weitere Informationen zum Erstellen von Attestierern finden Sie unter Attestierer erstellen.

Regel für einen Kubernetes-Namespace festlegen

Zum Festlegen einer Regel für einen Kubernetes-Namespace bearbeiten Sie die Datei policy.yaml und fügen einen Block vom Typ kubernetesNamespaceAdmissionRules hinzu. Beispiel:

defaultAdmissionRule:
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
  evaluationMode: ALWAYS_DENY
globalPolicyEvaluationMode: ENABLE
kubernetesNamespaceAdmissionRules:
  KUBERNETES_NAMESPACE:
    enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
    evaluationMode: EVALUATION_MODE
    requireAttestationsBy:
    - <var>ATTESTOR</var>
    - ...
name: projects/PROJECT_ID/policy

Dabei gilt:

  • KUBERNETES_NAMESPACE: Der Kubernetes-Namespace, auf den die Regel angewendet werden soll.

  • EVALUATION_MODE: Der Auswertungsmodus gibt die Art der Einschränkung an, die der Binärautorisierungserzwinger zum Zeitpunkt des Deployments erzwingt. Ersetzen Sie EVALUATION_MODE durch einen der folgenden Werte:

    • ALWAYS_ALLOW: erlaubt die Bereitstellung aller Images
    • ALWAYS_DENY: verhindert, dass alle Images bereitgestellt werden
    • REQUIRE_ATTESTATION: ermöglicht die Bereitstellung eines Images, wenn dem Image eine Attestierung zugeordnet ist. Zum Zeitpunkt der Bereitstellung überprüft der Enforcer die Attestierung mit den Attestierern, die Sie der Liste ATTESTOR in dieser Regel hinzufügen. Informationen zum Erstellen von Attestierern finden Sie unter Attestierer erstellen. Wenn Sie REQUIRE_ATTESTATION angeben, müssen Sie auch einen requireAttestationsBy-Block hinzufügen, der mindestens einen Attestierer enthält. Informationen zum Erstellen von Attestierern finden Sie unter Attestierer erstellen.
  • ENFORCEMENT_MODE: Der Erzwingungsmodus gibt an, wie der Erzwinger reagiert, wenn ein Image gegen eine Regel verstößt. Ersetzen Sie ENFORCEMENT_MODE durch einen der folgenden Werte:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: Blockieren Sie Images, die gegen die Regel verstoßen, und protokollieren Sie Informationen zum Verstoß in Cloud-Audit-Logs (Standard).
    • DRYRUN_AUDIT_LOG_ONLY: Erlauben Sie alle Images, aber protokollieren Sie Informationen zur Erzwingung in Logs auf Cloud-Audit-Logs, einschließlich Informationen zu Verstößen
  • ATTESTOR: Wenn Sie EVALUATION_MODE auf REQUIRE_ATTESTATION festlegen, müssen Sie auch den Block requireAttesationsBy hinzufügen. Im Block listen Sie einen oder mehrere Attestierer nach Ressourcen-ID auf. Die Ressourcen-ID hat folgendes Format:

    projects/PROJECT_ID/attestors/ATTESTOR_NAME.

    Weitere Informationen zum Erstellen von Attestierern finden Sie unter Attestierer erstellen.

YAML-Richtliniendatei importieren

Dieser Abschnitt gilt für GKE, Anthos-Cluster auf VMware, Cloud Run und Anthos Service Mesh.

Importieren Sie die YAML-Richtliniendatei wieder in die Binärautorisierung. Geben Sie dazu Folgendes ein:

gcloud container binauthz policy import /tmp/policy.yaml

Nächste Schritte