# This is an example ValidatingAdmissionPolicy that prevents deletion or # modification of API-based admission resources with the # "platform.example.com/protected: true" label. apiVersion: admissionregistration.k8s.io/v1 kind: ValidatingAdmissionPolicy metadata: name: "example-protect-admission-resources.static.k8s.io" annotations: kubernetes.io/description: "Prevent modification or deletion of protected admission resources" spec: failurePolicy: Fail matchConstraints: resourceRules: - apiGroups: ["admissionregistration.k8s.io"] apiVersions: ["*"] operations: ["DELETE", "UPDATE"] resources: - "validatingadmissionpolicies" - "validatingadmissionpolicybindings" - "mutatingadmissionpolicies" - "mutatingadmissionpolicybindings" - "validatingwebhookconfigurations" - "mutatingwebhookconfigurations" validations: - expression: >- !has(oldObject.metadata.labels) || !('platform.example.com/protected' in oldObject.metadata.labels) || oldObject.metadata.labels['platform.example.com/protected'] != 'true' message: "Protected admission resources cannot be modified or deleted" --- apiVersion: admissionregistration.k8s.io/v1 kind: ValidatingAdmissionPolicyBinding metadata: name: "example-protect-admission-resources-binding.static.k8s.io" annotations: kubernetes.io/description: "Bind protect-admission-resources policy to all admission resources" spec: policyName: "example-protect-admission-resources.static.k8s.io" validationActions: - Deny