Gatekeeper
Definition
Gatekeeper is an open-source policy controller for Kubernetes that uses Open Policy Agent (OPA) to enforce policies on Kubernetes resources. It allows administrators to define and manage policies as code, ensuring that all resources comply with organizational security and operational standards before they are deployed. Gatekeeper operates by intercepting admission requests to the Kubernetes API server and evaluating them against predefined policies, rejecting any requests that do not comply.
Secure Settings Example
apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
name: k8srequiredlabels
spec:
crd:
spec:
names:
kind: K8sRequiredLabels
targets:
- target: admission.k8s.gatekeeper.sh
rego: |
package k8srequiredlabels
violation[{"msg": msg}] {
provided := {label | input.review.object.metadata.labels[label]}
required := {"app", "env"}
missing := required - provided
count(missing) > 0
msg := sprintf("You must provide labels: %v", [missing])
}
Insecure Settings Example
apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
name: k8srequiredlabels
spec:
crd:
spec:
names:
kind: K8sRequiredLabels
targets:
- target: admission.k8s.gatekeeper.sh
rego: |
package k8srequiredlabels
violation[{"msg": msg}] {
# No required labels are specified, allowing any resource to pass
msg := "No labels required"
}