Securing Kubernetes Admission Controllers
Required knowledge for the CKS certification.
Admission controllers in Kubernetes play a crucial role in validating and mutating requests before they are persisted in the cluster. Misconfigurations in admission controllers can allow attackers to bypass security policies, deploy unauthorized workloads, and escalate privileges.
1. Use Validating and Mutating Admission Controllers Wisely
Issue: Some admission controllers allow automatic modifications that may introduce security risks.
Fix: Only enable necessary Validating and Mutating Webhooks and audit their changes.
Secure Webhook Admission Control
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: restrict-host-paths
webhooks:
- name: restrict-host-paths.k8s.io
rules:
- apiGroups: [""]
apiVersions: ["v1"]
resources: ["pods"]
operations: ["CREATE"]
clientConfig:
service:
name: admission-controller
namespace: kube-system
path: "/validate"
admissionReviewVersions: ["v1"]
failurePolicy: "Fail"
Why It Matters
- Ensures that security policies are enforced before workloads are created.
- Prevents insecure configurations from being automatically modified.
2. Restrict Admission Controller Webhook Access
Issue: An attacker can modify admission controller webhooks to bypass security policies.
Fix: Use RBAC to limit access to webhook configurations.
Secure Webhook RBAC Policy
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: kube-system
name: webhook-admin
rules:
- apiGroups: ["admissionregistration.k8s.io"]
resources:
["validatingwebhookconfigurations", "mutatingwebhookconfigurations"]
verbs: ["get", "list"]
Why It Matters
- Prevents unauthorized modifications to security-critical components.
- Limits who can change admission controller behavior.
3. Set FailurePolicy to "Fail" for Critical Webhooks
Issue: If a webhook fails to respond, Kubernetes may allow requests by default.
Fix: Use failurePolicy: Fail
to block unauthorized actions when an admission controller is unavailable.
Secure Webhook Failure Policy
failurePolicy: "Fail"
Why It Matters
- Prevents attackers from bypassing security checks by disrupting webhooks.
- Ensures workloads are properly validated before being deployed.
4. Monitor Admission Controller Logs and Audit Changes
Issue: Unauthorized changes to admission controllers may go undetected.
Fix: Enable audit logging for admission controller events.
Enable Audit Logs
--audit-log-path=/var/log/kubernetes/audit.log
--audit-policy-file=/etc/kubernetes/audit-policy.yaml
Why It Matters
- Detects suspicious modifications to admission controller policies.
- Provides visibility into rejected or modified API requests.
Conclusion
Securing Kubernetes Admission Controllers is critical for enforcing security policies, preventing unauthorized workloads, and protecting cluster integrity. By restricting webhook access, enforcing failure policies, enabling audit logs, and carefully configuring admission controllers, you can significantly reduce attack surfaces.