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.

Erstellen und führen Sie eine OPA-Richtlinie für Admission Controller aus.

Im vorherigen Abschnitt haben Sie Ihre Rego-Richtlinie geschrieben. Die Struktur sieht wie folgt aus:

.
├── data
│   ├── default-ns.json
│   └── other-ns.json
├── policy.rego
└── request.rego

1 directory, 4 files

Erstellen

Zum Erstellen:

$ opa build -t wasm -e policy/main policy.rego request.rego

Dies erstellt die Rego-Richtlinie mit:

  • target: wasm. Sie möchten die Richtlinie für das wasm Ziel erstellen.

  • entrypoint: policy/main. Der Einstiegspunkt ist die main Regel innerhalb des policy Pakets.

  • policy.rego: Erstellen und fügen Sie die policy.rego Datei ein.

  • request.rego: Erstellen und fügen Sie die request.rego Datei ein.

Nachdem der Build abgeschlossen ist, hat opa build eine bundle.tar.gz Datei generiert. Sie können sie extrahieren:

$ tar -xf bundle.tar.gz /policy.wasm

Jetzt sieht der Baum wie folgt aus:

.
├── bundle.tar.gz
├── data
│   ├── default-ns.json
│   └── other-ns.json
├── policy.rego
├── policy.wasm
└── request.rego

1 directory, 6 file

Sie haben Ihre policy.wasm Datei:

$ file policy.wasm
policy.wasm: WebAssembly (wasm) binary module version 0x1 (MVP)

Jetzt führen Sie sie aus.

Führen Sie folgendes Kommando aus:

Verwenden Sie kwctl, um die Richtlinie auszuführen:

$ kwctl run -e opa --request-path data/other-ns.json policy.wasm | jq
{
  "uid": "1299d386-525b-4032-98ae-1949f69f9cfc",
  "allowed": true
}

Diese Anfrage wird von der Richtlinie akzeptiert, da dies die Anfrage ist, die auf den other Namespace verweist.

  • execution-mode: opa. Rego-Richtlinien können auf Open Policy Agent oder Gatekeeper abzielen. Sie müssen kwctl mitteilen, welche Art von Richtlinie Sie ausführen.

  • request-path: Der Standort der aufgezeichneten Anfrage, an die kwctl die Richtlinie zur Bewertung sendet.

Versuchen Sie nun, die Anfrage zu bewerten, die den Pod im default Namespace erstellt:

$ kwctl run -e opa --request-path data/default-ns.json policy.wasm | jq
{
  "uid": "1299d386-525b-4032-98ae-1949f69f9cfc",
  "allowed": false,
  "status": {
    "message": "it is forbidden to use the default namespace"
  }
}

Die Richtlinie lehnt die Anfrage ab und gibt einen Grund an den API-Server zurück, der an den Benutzer oder API-Konsumenten weitergeleitet wird.