policyDefinitions/Kubernetes/ensure-read-only-access-to-root-filesystem-in-a-kubernetes-cluster/template.yaml (33 lines of code) (raw):

apiVersion: templates.gatekeeper.sh/v1beta1 kind: ConstraintTemplate metadata: name: k8sazurereadonlyrootfilesystem spec: crd: spec: names: kind: K8sAzureReadOnlyRootFilesystem targets: - target: admission.k8s.gatekeeper.sh rego: | package k8sazurereadonlyrootfilesystem violation[{"msg": msg, "details": {}}] { c := input_containers[_] input_read_only_root_fs(c) msg := sprintf("only read-only root filesystem container is allowed: %v", [c.name]) } input_read_only_root_fs(c) { not has_field(c, "securityContext") } input_read_only_root_fs(c) { not c.securityContext.readOnlyRootFilesystem == true } input_containers[c] { c := input.review.object.spec.containers[_] } input_containers[c] { c := input.review.object.spec.initContainers[_] } # has_field returns whether an object has a field has_field(object, field) = true { object[field] }