OPA — universal policy engine for access control.
Rego — policy language:
1package authz23default allow = false45allow {6 input.method == "GET"7 input.user.role == "admin"8}
OPA Gatekeeper (Kubernetes):
1apiVersion: templates.gatekeeper.sh/v12kind: ConstraintTemplate3metadata:4 name: k8srequiredlabels5spec:6 crd:7 spec:8 names:9 kind: K8sRequiredLabels10 validation:11 openAPIV3Schema:12 type: object13 properties:14 labels:15 type: array16 items:17 type: string18 targets:19 - target: admission.k8s.gatekeeper.sh20 rego: |21 package k8srequiredlabels22 violation[{"msg": msg}] {23 required := input.review.object.spec.labels[_]24 not input.review.object.metadata.labels[required]25 msg := sprintf("Missing required label: %v", [required])26 }
Use cases: K8s admission control, API authorization, Infra policy.