Kubernetes is de standaard voor container orchestratie, maar de standaardconfiguratie is verre van veilig. Van open API-servers tot overprivileged pods — misconfiguraties zijn de nummer één oorzaak van Kubernetes-breaches. In dit artikel behandelen we de essentiële beveiligingsmaatregelen die elke cluster moet hebben.
RBAC en Pod Security Standards
Role-Based Access Control (RBAC) is de hoeksteen van Kubernetes-beveiliging. Het principe van least privilege moet strikt worden toegepast: geef gebruikers en service accounts alleen de rechten die ze nodig hebben. Vermijd het gebruik van cluster-admin voor applicatie-workloads en creëer specifieke roles per namespace.
Pod Security Standards (PSS) vervangen het verouderde PodSecurityPolicy en definiëren drie beveiligingsniveaus: Privileged, Baseline en Restricted. Gebruik het Restricted profiel als standaard voor alle namespaces en maak alleen uitzonderingen waar absoluut noodzakelijk. Dit voorkomt dat containers als root draaien, host namespaces delen of privilege escalation toestaan.
# Pod Security Standard - Restricted namespace
apiVersion: v1
kind: Namespace
metadata:
name: production
labels:
pod-security.kubernetes.io/enforce: restricted
pod-security.kubernetes.io/audit: restricted
pod-security.kubernetes.io/warn: restricted
---
# NetworkPolicy - standaard deny all
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-all
namespace: production
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
Network Policies en Secrets Management
Standaard kan elke pod in Kubernetes met elke andere pod communiceren, ongeacht de namespace. Dit maakt laterale beweging na een compromittering triviaal. NetworkPolicies zijn essentieel: begin met een default-deny-all policy per namespace en sta vervolgens alleen het strikt noodzakelijke verkeer toe.
Kubernetes Secrets zijn standaard slechts base64-encoded en niet versleuteld. Gebruik encryption at rest via de EncryptionConfiguration en overweeg externe secret stores zoals HashiCorp Vault, AWS Secrets Manager of Sealed Secrets. Roteer secrets regelmatig en gebruik nooit environment variables voor gevoelige gegevens — mount secrets als bestanden met restrictieve bestandsrechten.
- Pas RBAC toe met het principe van least privilege per namespace
- Activeer Pod Security Standards op Restricted niveau
- Implementeer default-deny NetworkPolicies voor elke namespace
- Versleutel Secrets at rest en gebruik externe secret stores
- Scan container images op kwetsbaarheden in uw CI/CD pipeline
- Beperk de Kubernetes API server tot vertrouwde IP-ranges
Runtime beveiliging en monitoring
Preventieve maatregelen zijn essentieel, maar u moet er ook van uitgaan dat een breuk kan plaatsvinden. Runtime security tools zoals Falco detecteren verdacht gedrag in real-time: onverwachte processen in containers, bestandssysteem-wijzigingen, en netwerk-anomalieën. Combineer dit met een robuuste logging-stack (Fluentd/Loki + Grafana) voor volledige zichtbaarheid.
Implementeer ook admission controllers zoals OPA Gatekeeper of Kyverno om policies af te dwingen vóór deployment. Deze tools kunnen voorkomen dat misconfigureerde workloads überhaupt het cluster bereiken. Samen met image scanning in uw CI/CD pipeline en signed images via Cosign/Sigstore creëert u een defense-in-depth strategie die uw Kubernetes-cluster op elk niveau beschermt.
Pro Tip
Voer vandaag kubectl auth can-i --list uit voor elke service account in uw cluster om te controleren op overprivileged accounts. Activeer Pod Security Standards op audit-niveau voor alle namespaces en bekijk de warnings in uw logs. U zult waarschijnlijk verrast zijn door hoeveel workloads als root draaien of onnodige capabilities hebben.
Deel dit artikel