Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi.

Il s'agit d'une documentation non publiée pour Admission Controller 1.34-dev.

Construisez et exécutez une stratégie OPA pour Admission Controller

Dans la section précédente, vous avez écrit votre stratégie Rego. La structure ressemble à :

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

1 directory, 4 files

Construire

Pour construire :

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

Cela construit la stratégie Rego, avec :

  • target : wasm. Vous souhaitez construire la stratégie pour la cible wasm.

  • entrypoint : policy/main. Le point d’entrée est la règle main à l’intérieur du paquet policy.

  • policy.rego : Construisez et incluez le fichier policy.rego.

  • request.rego : Construisez et incluez le fichier request.rego.

Une fois la construction terminée, opa build a généré un fichier bundle.tar.gz. Vous pouvez l’extraire :

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

Maintenant, l’arborescence ressemble à ce qui suit :

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

1 directory, 6 file

Vous avez votre fichier policy.wasm :

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

Maintenant, vous l’exécutez.

Exécutez :

Utilisez kwctl pour exécuter la stratégie :

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

Cette demande est acceptée par la stratégie, car il s’agit de la demande pointant vers l’espace de noms other.

  • execution-mode : opa. Les stratégies Rego peuvent cibler Open Policy Agent ou Gatekeeper. Vous devez dire à kwctl quel type de stratégie vous exécutez.

  • request-path : L’emplacement de la requête enregistrée à laquelle kwctl envoie la stratégie pour l’évaluation.

Essayez maintenant d’évaluer la requête qui crée le pod à l’intérieur de l’espace de noms default :

$ 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"
  }
}

La stratégie rejette la requête, en donnant une raison au serveur API qui est renvoyée à l’utilisateur ou au consommateur de l’API.