Richtlinie mit der Befehlszeile konfigurieren

Diese Seite enthält Anweisungen dazu, wie Sie mit gcloud-Befehlen eine Richtlinie für die Binärautorisierung in der Befehlszeile 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.

Übersicht

Eine Richtlinie ist ein Satz von Regeln, die das Deployment eines oder mehrerer Container-Images steuern.

Wenn Sie eine Richtlinie über die Befehlszeile konfigurieren, bearbeiten Sie diese manuell im YAML-Format in einem Texteditor. Das YAML-Format spiegelt die interne Struktur einer Richtlinie wider, die von der Binärautorisierung gespeichert wird. Weitere Informationen zu diesem Format finden Sie in der Referenz zu YAML-Richtlinien.

Für die Konfiguration einer Richtlinie sind folgende Schritte erforderlich:

  • YAML-Richtliniendatei exportieren
  • Zusätzliche, ausgenommene Images hinzufügen (optional)
  • Standardregel festlegen
  • Beliebige clusterspezifische Regeln hinzufügen (optional)
  • YAML-Richtliniendatei importieren

Die meisten realen Richtlinien prüfen, ob alle erforderlichen Attestierer bestätigt haben, dass ein Container-Image für das Deployment verfügbar ist. In diesem Fall müssen Sie beim Konfigurieren der Richtlinie auch Attestierer erstellen.

Standardprojekt festlegen

Legen Sie das Google Cloud-Standardprojekt fest, falls Sie dies noch nicht getan haben:

PROJECT_ID=PROJECT_ID
gcloud config set project ${PROJECT_ID}

YAML-Richtliniendatei exportieren

Exportieren Sie die YAML-Richtliniendatei in Ihr lokales System:

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

Die Datei hat standardmäßig folgenden Inhalt:

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: ALWAYS_ALLOW
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
name: projects/PROJECT_ID/policy

Ausgenommene Images verwalten

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

Jede Richtlinie kann eine Zulassungsliste von ausgenommenen Images haben, die durch ihren Registrierungspfad angegeben werden. Dieser Pfad kann ein Speicherort in Container Registry oder einer anderen Container-Image-Registry sein. Diese Zulassungsliste gilt zusätzlich zu den Images, die im globalen Richtlinienbewertungsmodus aktiviert wurden, falls vorhanden.

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.

Auswertungsmodus für globale Richtlinien

Der Auswertungsmodus für globale Richtlinien ist eine Richtlinieneinstellung, bei der die Binärautorisierung eine globale Richtlinie auswertet, bevor die von Ihnen als Nutzer konfigurierte Richtlinie ausgewertet wird. Die globale Richtlinie wird von Google bereitgestellt und schließt eine Liste der von Google verwalteten Systemimages von der weiteren Richtlinienauswertung aus. Wenn diese Einstellung aktiviert ist, werden Images, die für Google Kubernetes Engine (GKE) erforderlich sind, nicht durch die Richtlinienerzwingung blockiert. Die globale Richtlinie wird vor und zusätzlich zur Nutzerrichtlinie ausgewertet.

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

gcloud container binauthz policy export --project=binauthz-global-policy

Beim Auswertungsmodus für globale Richtlinien ist es nicht erforderlich, Pfade zu von Google verwalteten Systemimages explizit in einer admissionWhitelistPatterns-Liste anzugeben:

admissionWhitelistPatterns:
- namePattern: gcr.io/google_containers/*
- namePattern: gcr.io/google-containers/*
- namePattern: k8s.gcr.io/*
- namePattern: gke.gcr.io/*
- namePattern: gcr.io/stackdriver-agents/*

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

Standardregel festlegen

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 Container-Images gelten, mit Ausnahme derjenigen, die eine 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: EVAL_MODE
  enforcementMode: ENFORCEMENT_MODE
  requireAttestationsBy:
  - ATTESTOR
  - ...

Dabei gilt:

  • EVAL_MODE gibt den Einschränkungstyp an, den die Binärautorisierung auswertet, bevor das Deployment eines Container-Images zugelassen wird.
  • ENFORCEMENT_MODE gibt die Aktion an, die ausgeführt wird, wenn ein Container-Image nicht den in der Regel definierten Einschränkungen entspricht.
  • ATTESTOR gibt die Attestierer an (falls erforderlich), die ein Container-Image signieren müssen, bevor es bereitgestellt werden kann. Verwenden Sie den vollständig qualifizierten Pfad zum Attestierer im Format projects/PROJECT_ID/attestors/ATTESTOR_NAME.

Wenn Ihre Regel prüft, ob alle erforderlichen Attestierer ein Container-Image signiert haben, müssen Sie vor dem Ausführen dieses Schrittes Attestierer erstellen.

Clusterspezifische Regeln festlegen (optional)

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: EVAL_MODE
    enforcementMode: ENFORCEMENT_MODE
    requireAttestationsBy:
    - ATTESTOR
    - ...

Dabei ist CLUSTER_SPECIFIER die Ressourcen-ID des Clusters, auf den die Regel im Format location.name angewendet wird, und die anderen Eigenschaften entsprechen denen unter Standardregel festlegen. Ein Beispiel für eine clusterspezifische Regel finden Sie unter Beispielrichtlinien.

Wenn Ihre Regel prüft, ob alle erforderlichen Attestierer ein Container-Image signiert haben, müssen Sie vor dem Ausführen dieses Schrittes Attestierer erstellen.

YAML-Richtliniendatei importieren

Im letzten Schritt importieren Sie die YAML-Richtliniendatei wieder in die Binärautorisierung.

Geben Sie zum Importieren der Datei Folgendes ein:

gcloud container binauthz policy import /tmp/policy.yaml

Nächste Schritte