Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar.

Dies ist eine unveröffentlichte Dokumentation für Admission Controller 1.34-dev.

Roh-Richtlinien schreiben

Roh-Richtlinien sind Richtlinien, die beliebige JSON-Dokumente auswerten können. Für weitere Informationen zu Roh-Richtlinien verweisen Sie bitte auf die Roh-Richtlinien Seite.

Beispiel

Die folgenden Beispiele sollten Ihnen vertraut sein, wenn Sie die Validierung Seite dieses Tutorials abgeschlossen haben.

Denken Sie daran, die Richtlinie als raw zu kennzeichnen, indem Sie das policyType Feld in der metadata.yml Konfiguration verwenden. Bitte beziehen Sie sich auf die Metadaten Spezifikation für weitere Informationen.

Validation

Sie werden eine Richtlinie schreiben, die eine Anfrage im folgenden Format akzeptiert:

{
  "request": {
    "user": "alice",
    "action": "read",
    "resource": "products"
  }
}

Es wird validiert, dass nur der admin Benutzer Ressourcen löschen kann.

Beginnen Sie damit, eine Richtlinie mit der OPA-Richtlinienvorlage zu erstellen.

Zuerst müssen Sie die policy.rego Datei so ändern, dass sie wie folgt aussieht:

package validation

deny[msg] {
    input.request.action == "delete"
    input.request.user != "admin"
    msg := sprintf("user %v is not allowed to delete resources", [input.request.user])
}

Das utility/policy.rego Modul muss geändert werden, um Kubernetes-spezifischen Code zu entfernen:

package policy

import data.validation

main = {
    "response": response,
}

# OPA policy responses need the uid field to be set.
# If the request doesn't contain a uid, set it to an empty string.
default uid = ""

uid = input.request.uid

response = {
    "uid": uid,
    "allowed": false,
    "status": {"message": reason},
} {
    reason = concat(", ", validation.deny)
    reason != ""
} else = {
    "uid": uid,
    "allowed": true,
} {
    true
}