Introduction
La conformité et la sécurité des clusters Kubernetes nécessitent un contrôle fin des ressources. OPA Gatekeeper associe policy-as-code et Kubernetes en utilisant les Custom Resource Definitions (CRD) ConstraintTemplate et Constraint pour valider et faire respecter les politiques au moment de la création ou modification.
Prérequis
- Un cluster Kubernetes (>=1.16)
kubectl
configuré- Helm 3 (optionnel)
kubectl get crd | grep constraints.gatekeeper.sh
pour vérifier l’absence préalable de Gatekeeper
Installation de Gatekeeper
1. Installer via Helm
helm repo add gatekeeper https://open-policy-agent.github.io/gatekeeper/charts
helm repo update
helm install gatekeeper gatekeeper/gatekeeper --namespace gatekeeper-system --create-namespace --version v3.10.0
2. Vérifier les pods
kubectl get pods -n gatekeeper-system
Créer une policy ConstraintTemplate
Exemple : interdire les conteneurs :latest
apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
name: k8sallowedrepos
spec:
crd:
spec:
names:
kind: K8sAllowedRepos
targets:
- target: admission.k8s.gatekeeper.sh
rego: |
package k8sallowedrepos
violation[{"msg": msg}] {
input.review.object.spec.containers[_].image =~ ".*:latest"
msg := "L'utilisation de tags :latest est interdite."
}
kubectl apply -f constrainttemplate.yaml
Définir la Constraint
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sAllowedRepos
metadata:
name: disallow-latest
spec:
enforcementAction: deny
kubectl apply -f constraint.yaml
Tester la policy
kubectl run nginx-latest --image=nginx:latest --restart=Never
# Échec avec message "L'utilisation de tags :latest est interdite."
Bonnes pratiques
- Rédiger des policies simples puis complexifier
- Versionner vos ConstraintTemplate et Constraint
- Superviser les violations avec
ConstraintViolations
- Automatiser via pipelines CI (OPA test)
- Auditer régulièrement les policies
Conclusion
OPA Gatekeeper permet d’intégrer la sécurité déclarative directement dans Kubernetes, garantissant que seules les ressources conformes sont déployées, tout en offrant une flexibilité et une transparence optimale.