Auf dieser Seite erfahren Sie, wie Sie mit dem Google Cloud CLI-Befehl für den Richtlinienbewertungsdienst schnell prüfen können, ob ein Image oder eine Kubernetes-Ressource einer Plattformrichtlinie mit kontinuierlicher Validierung entspricht.
Übersicht
Der Richtlinienbewertungsdienst ist eine Funktion der Binärautorisierung, die Sie mit prüfbasierten Plattformrichtlinien für die kontinuierliche Validierung (CV) verwenden können. Der Richtlinienbewertungsdienst prüft auf Anfrage, ob ein von Ihnen angegebenes Container-Image einer CV-Plattformrichtlinie entspricht. Der Richtlinienbewertungsdienst ist als gcloud-Kommandozeilenbefehl und als Methode projects.platforms.gke.policies.evaluate verfügbar.
CV prüft mindestens alle 24 Stunden auf Richtlinienverstöße. Daher kann es bis zu 24 Stunden dauern, bis CV-Ereignisse in Logging angezeigt werden, nachdem CV aktiviert oder eine Kubernetes-Ressource bereitgestellt wurde. Außerdem erstellt CV Logeinträge, wenn ein Richtlinienverstoß erkannt wird. CV erstellt keine Logeinträge, wenn Kubernetes-Ressourcen der Richtlinie entsprechen.
Der Richtlinienbewertungsdienst gibt ein Ergebnis aus, das angibt, ob das Image der Richtlinie entspricht oder ob es gegen die Richtlinie verstößt.
Mit dem Richtlinienbewertungsdienst können Sie schnell feststellen, ob Ihr Bild einer Richtlinie entspricht.
Wenn Sie den Dienst verwenden, geben Sie die Image-URL entweder direkt oder in einer Kubernetes-Ressource an. Außerdem geben Sie den Namen der GKE-Richtlinie an, die auf der CV-Prüfung basiert.
So kann der Dienst zur Richtlinienbewertung Ihnen helfen, Richtlinien zu entwickeln und nicht konforme Kubernetes-Ressourcen zu beheben, bevor Sie CV verwenden.
Diese Funktion unterstützt nur Richtlinien, die auf der GKE-CV-Prüfung basieren.
Für Bilder muss außerdem ein Bild-Digest im Format IMAGE_URL@IMAGE_DIGEST
angegeben werden, mit folgenden Ausnahmen:
- Prüfung auf vertrauenswürdige Verzeichnisse: Die Prüfung ist erfolgreich, wenn sich das Image in einem von Ihnen angegebenen Verzeichnis befindet.
- Ausgenommene Bild-Zulassungslisten: Für alle anderen Prüfungen ist ein Bild-Digest im Format
IMAGE_URL@IMAGE_DIGEST
erforderlich.
Hinweise
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Policy Evaluator (roles/binaryauthorization.policyEvaluator
) für das Richtlinienprojekt zu gewähren, um die Berechtigungen zu erhalten, die Sie zur Verwendung des Dienstes zur Richtlinienbewertung benötigen.
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.
Wenn Ihre Richtlinie bestimmte Prüfungen verwendet, müssen Sie Ihren Administrator möglicherweise bitten, Ihnen die folgenden prüfspezifischen Rollen zuzuweisen:
- Erforderliche Rollen für die einfache Prüfung auf Attestierungsignatur
- Erforderliche Rollen für die Sicherheitslückenprüfung
- Erforderliche Rollen für die Aktualitätsprüfung
Prüfbasierte Plattformrichtlinien bewerten
Der Richtlinienbewertungsdienst kann eine einzelne Image-URL oder ein Image auswerten, das in einer Kubernetes-Ressource im JSON- oder YAML-Format angegeben ist.
Prüfbasierte Plattformrichtlinien mit einer Kubernetes-Ressource bewerten
Führen Sie den folgenden Befehl aus, um eine Richtlinie mit einer Kubernetes-Ressource mit der gcloud CLI zu bewerten:
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
POLICY_ID
: Die ID der Plattformrichtlinie. Wenn sich die Richtlinie in einem anderen Projekt befindet, können Sie den vollständigen Ressourcennamen verwenden:projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID
.POD_SPECIFICATION_PATH
: Der Pfad zur Pod-Spezifikation.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud beta container binauthz policy evaluate POLICY_ID \ --resource=POD_SPECIFICATION_PATH
Windows (PowerShell)
gcloud beta container binauthz policy evaluate POLICY_ID ` --resource=POD_SPECIFICATION_PATH
Windows (cmd.exe)
gcloud beta container binauthz policy evaluate POLICY_ID ^ --resource=POD_SPECIFICATION_PATH
Führen Sie folgenden Befehl aus, um eine Richtlinie zu bewerten, in der die Plattform angegeben ist, die auf gke
festgelegt sein muss:
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
POLICY_ID
: Die ID der Plattformrichtlinie. Wenn sich die Richtlinie in einem anderen Projekt befindet, können Sie den vollständigen Ressourcennamen verwenden:projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID
.POD_SPECIFICATION_PATH
: Der Pfad zur Pod-Spezifikation.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud beta container binauthz policy evaluate POLICY_ID \ --platform=gke \ --resource=POD_SPECIFICATION_PATH
Windows (PowerShell)
gcloud beta container binauthz policy evaluate POLICY_ID ` --platform=gke ` --resource=POD_SPECIFICATION_PATH
Windows (cmd.exe)
gcloud beta container binauthz policy evaluate POLICY_ID ^ --platform=gke ^ --resource=POD_SPECIFICATION_PATH
Prüfbasierte Plattformrichtlinien mit einer Image-URL bewerten
Führen Sie den folgenden Befehl aus, um eine Richtlinie mithilfe einer Bild-URL zu bewerten:
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
POLICY_ID
: Die ID der Plattformrichtlinie. Wenn sich die Richtlinie in einem anderen Projekt befindet, können Sie den vollständigen Ressourcennamen verwenden:projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID
.IMAGE_URL
: Der Pfad zur Pod-Spezifikation.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud beta container binauthz policy evaluate POLICY_ID \ --image=IMAGE_URL
Windows (PowerShell)
gcloud beta container binauthz policy evaluate POLICY_ID ` --image=IMAGE_URL
Windows (cmd.exe)
gcloud beta container binauthz policy evaluate POLICY_ID ^ --image=IMAGE_URL
Wenn Sie das Flag --image
verwenden, wird davon ausgegangen, dass der Namespace und das Dienstkonto leer sind. Wenn für die zu prüfende Richtlinie Prüfsätze verwendet werden, die auf kubernetesNamespace
oder kubernetesServiceAccount
beschränkt sind, sind die zurückgegebenen Ergebnisse möglicherweise nicht korrekt.
Befehlsausgabe überprüfen
Die Befehlsausgabe enthält ein übergeordnetes Urteil, das den Konformitätsstatus des Pods angibt. Die folgenden Konformitätsstatus können zurückgegeben werden:
CONFORMANT
: Die Kubernetes-Ressource entspricht der Plattformrichtlinie.NON_CONFORMANT
: Die Kubernetes-Ressource entspricht nicht der Plattformrichtlinie.ERROR
: Die Bewertung ist mit einem Fehler abgelaufen.
Die Antwort enthält außerdem verschachtelte Ergebnisse mit detaillierten Informationen zum Konformitätsstatus aller Prüfungen, die für jedes Bild in der Kubernetes-Ressource durchgeführt wurden.
Jeder ImageResults
-Block enthält ein für Menschen lesbares explanation
-Feld, in dem beschrieben wird, warum das Bild zulässig oder unzulässig ist.
Zum Erleichtern von Scripts gibt der Befehl einen Exitcode ungleich null zurück, wenn die Pod-Spezifikation nicht der Richtlinie entspricht oder die Prüfung fehlschlägt.
Die folgenden Ausgabebeispiele veranschaulichen zwei Fälle. Im ersten Fall entspricht die Kubernetes-Ressource der Richtlinie. Im zweiten Fall entspricht die Ressource nicht der Richtlinie.
Konformes Ergebnis ansehen
In diesem Abschnitt wird die Ausgabe einer Prüfung durch den Richtlinienbewertungsdienst beschrieben, bei der der Pod der Plattformrichtlinie entspricht.
results:
- imageResults:
- checkSetResult:
checkResults:
results:
- displayName: My trusted directory check
evaluationResult:
verdict: CONFORMANT
explanation: Image is in a trusted directory
type: TrustedDirectoryCheck
displayName: Default check set
scope: {}
imageUri: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
verdict: CONFORMANT
kubernetesNamespace: default
kubernetesServiceAccount: default
podName: my-pod
verdict: CONFORMANT
verdict: CONFORMANT
In der Ausgabe wird für die folgenden Bewertungstypen das Urteil CONFORMANT
zurückgegeben:
- Prüfen: Das Image entspricht der einzelnen Prüfung, in diesem Fall der Prüfung auf vertrauenswürdige Verzeichnisse.
- CheckSet: Das Bild entspricht allen Prüfungen im CheckSet.
- Richtlinie: Das Bild entspricht der Richtlinie.
Da das Image der Richtlinie entspricht, gibt der Befehl den Exit-Code 0 zurück.
Nicht konformes Ergebnis ansehen
In diesem Abschnitt wird die Ausgabe einer Prüfung durch den Richtlinienbewertungsdienst beschrieben, bei der der Pod nicht der Plattformrichtlinie entspricht.
results:
- imageResults:
- checkSetResult:
checkResults:
results:
- displayName: My trusted directory check
evaluationResult:
verdict: NON_CONFORMANT
explanation: Image isn't in a trusted directory
type: TrustedDirectoryCheck
displayName: Default check set
scope: {}
imageUri: us-docker.pkg.dev/untrusted-directory/containers/gke/hello-app:1.0
verdict: NON_CONFORMANT
kubernetesNamespace: default
kubernetesServiceAccount: default
podName: my-pod
verdict: NON_CONFORMANT
verdict: NON_CONFORMANT
Da das Image in der Ausgabe nicht die individuelle Prüfung besteht, in diesem Fall die Prüfung auf vertrauenswürdige Verzeichnisse und damit den Satz aller Prüfungen, lautet das Ergebnis der obersten Ebene NON_CONFORMANT
. Der Befehl gibt daher einen Exit-Code ungleich null zurück.
Richtlinienbewertungsdienst testen
In diesem Abschnitt wird beschrieben, wie Sie den Dienst zur Richtlinienbewertung testen können. Sie erstellen eine prüfbasierte Plattformrichtlinie, die die Prüfung auf vertrauenswürdige Verzeichnisse enthält. Im ersten Test können Sie dann eine Pod-Spezifikation auswerten, die der Richtlinie entspricht. Im zweiten Test bewerten Sie eine Pod-Spezifikation, die nicht der Richtlinie entspricht.
Führen Sie die folgenden Befehle aus, um eine Richtlinie mit einer vertrauenswürdigen Verzeichnisprüfung zu erstellen:
Erstellen Sie eine Plattformrichtliniendatei:
cat << EOF > my-policy.yaml gkePolicy: checkSets: - checks: - displayName: "My trusted directory check" trustedDirectoryCheck: trustedDirPatterns: - "us-docker.pkg.dev/google-samples/containers/gke/" displayName: "My default check set" EOF
Erstellen Sie die Richtlinie:
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
- POLICY_ID: Eine Plattformrichtlinien-ID Ihrer Wahl. Wenn sich die Richtlinie in einem anderen Projekt befindet, können Sie den vollständigen Ressourcennamen verwenden:
projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID
. - POLICY_PATH: Ein Pfad zur Richtliniendatei.
- POLICY_PROJECT_ID: Die ID des Richtlinienprojekts.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud beta container binauthz policy create POLICY_ID \ --platform=gke \ --policy-file=POLICY_PATH \ --project=POLICY_PROJECT_ID
Windows (PowerShell)
gcloud beta container binauthz policy create POLICY_ID ` --platform=gke ` --policy-file=POLICY_PATH ` --project=POLICY_PROJECT_ID
Windows (cmd.exe)
gcloud beta container binauthz policy create POLICY_ID ^ --platform=gke ^ --policy-file=POLICY_PATH ^ --project=POLICY_PROJECT_ID
gcloud beta container binauthz policy create POLICY_ID \ --platform=gke \ --policy-file=my-policy.yaml
- POLICY_ID: Eine Plattformrichtlinien-ID Ihrer Wahl. Wenn sich die Richtlinie in einem anderen Projekt befindet, können Sie den vollständigen Ressourcennamen verwenden:
Konformes Image bewerten
In diesem Abschnitt bewerten Sie eine Pod-Spezifikation, die der Richtlinie entspricht, die Sie zuvor in diesem Leitfaden erstellt haben. Die Bewertung gibt ein Ergebnis zurück, das angibt, dass die Pod-Spezifikation CONFORMANT
ist, da die Pod-Spezifikation auf ein Image verweist, das sich in dem Verzeichnis befindet, das in trustedDirPatterns
in der Prüfung auf vertrauenswürdige Verzeichnisse angegeben ist. “
Erstellen Sie die Pod-Spezifikation:
cat << EOF > my-conforming-pod.json { "apiVersion": "v1", "kind": "Pod", "metadata": { "name": "" }, "spec": { "containers": [ { "image": "us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0" } ] } } EOF
Verwenden Sie den Richtlinienbewertungsdienst, indem Sie den folgenden Befehl ausführen:
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
POLICY_ID
: Die ID der Plattformrichtlinie. Wenn sich die Richtlinie in einem anderen Projekt befindet, können Sie den vollständigen Ressourcennamen verwenden:projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID
.my-conforming-pod.json
: Der Pfad zur Pod-Spezifikation.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud beta container binauthz policy evaluate POLICY_ID \ --image=my-conforming-pod.json
Windows (PowerShell)
gcloud beta container binauthz policy evaluate POLICY_ID ` --image=my-conforming-pod.json
Windows (cmd.exe)
gcloud beta container binauthz policy evaluate POLICY_ID ^ --image=my-conforming-pod.json
Nicht konformes Image bewerten
In diesem Abschnitt bewerten Sie eine Pod-Spezifikation, die nicht der Richtlinie entspricht, die Sie zuvor in diesem Leitfaden erstellt haben. Die Bewertung erzeugt ein Ergebnis, das angibt, dass die Pod-Spezifikation NON_CONFORMANT
ist, da die Pod-Spezifikation auf ein Image verweist, das sich außerhalb des Verzeichnisses befindet, das in trustedDirPatterns
in der Prüfung auf vertrauenswürdige Verzeichnisse angegeben ist.
Führen Sie die folgenden Befehle aus, um ein nicht konformes Bild zu bewerten:
Erstellen Sie die Pod-Spezifikation:
cat << EOF > my-non-conforming-pod.json { "apiVersion": "v1", "kind": "Pod", "metadata": { "name": "" }, "spec": { "containers": [ { "image": "us-docker.pkg.dev/untrusted-directory/containers/gke/hello-app:1.0" } ] } } EOF
Verwenden Sie den Richtlinienbewertungsdienst, indem Sie den folgenden Befehl ausführen:
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
POLICY_ID
: Die ID der Plattformrichtlinie. Wenn sich die Richtlinie in einem anderen Projekt befindet, können Sie den vollständigen Ressourcennamen verwenden:projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID
.my-non-conforming-pod.json
: Der Pfad zur Pod-Spezifikation.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud beta container binauthz policy evaluate POLICY_ID \ --image=my-non-conforming-pod.json
Windows (PowerShell)
gcloud beta container binauthz policy evaluate POLICY_ID ` --image=my-non-conforming-pod.json
Windows (cmd.exe)
gcloud beta container binauthz policy evaluate POLICY_ID ^ --image=my-non-conforming-pod.json