Les Policies rules: Admission control
3. Les Policies rules
-
Admission control
Pendant la création d'un pod (via kubectl apply, Helm, ArgoCD…), Kubernetes passe par une phase dite d’admission avant d’autoriser le déploiement. C’est en ce moment que NeuVector peut intervenir, grâce à son Admission Control webhook.
Rôle de l’Admission Control NeuVector
-
Inspecter les manifests Kubernetes avant que les workloads ne soient créés.
-
Bloquer, alerter ou autoriser un déploiement en fonction de règles définies.
-
Vérifier la conformité des images ou de la configuration de sécurité (policy enforcement à l’entrée).
Exemples d’usage
-
Refuser le déploiement de containers qui tournent en root.
- Refuser les images non signées,
-
Interdire l’utilisation d’images venant de registres non approuvés.
-
Bloquer les pods qui n’ont pas de ressources CPU/mémoire définies.
-
Vérifier que des labels ou annotations de sécurité sont bien présents.
L'admission control n'est pas activés par défaut. pour l'activer:
- clic sur Pollicy > Admission Control > Enable

- Clis sur les 3 petits points à droite pour désactiver les 2 premiers rules:

- Exemple1 : Interdire tout deploiement des les namespaces default, kube-system...
- 1: deny : Bloquer tout evenement qui match avec la règle.
- 2: : Donner un descriptio pour faciliter la maintenance
- 3: Selectionner le critère. Ici Namespace
- 4: is one of: tout element de la liste qui sera donnée
- 5: la liste des namespaces à prendre en compte
- 6: Ajouter le critère. On peut ainsi ajouter plusieurs critères. Un OU logique sera appliqué
- 7: Mode protect pour bloquer l'opration, Monitor pour lever une alerte ou global Mode si configuré
- 8: Active la règle
- 9: Valider


-
- Test avec le deploiement d'un pod dans le namespace default
apiVersion: v1
kind: Pod
metadata:
name: my-pod
labels:
app: my-app
spec:
containers:
- name: my-container
image: nginx
resources:
requests:
memory: "50Mi" # Demande 512 MiB de mémoire
cpu: "50m" # Demande 250 milliCPU (0,25 CPU)
limits:
memory: "100Mi" # Limite l'utilisation mémoire à 1 GiB
cpu: "50m" # Limite l'utilisation CPU à 500 milliCPU (0,5 CPU)
kubectl apply -f my-app.yaml -n default

kubectl apply -f my-app.yaml -n kube-system

-
- Exemple2 : Interdire tout deploiement avec les variables d'env avec les secrets. Cette est valable que sur les kind deployment
- Activer le mode monitor: la regle ne sera pas bloquante mais va lever une alerte.
- Exemple2 : Interdire tout deploiement avec les variables d'env avec les secrets. Cette est valable que sur les kind deployment


-
- Test avec le deploiement d'un pod dans le namespace demo
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
namespace: demo
labels:
app: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: nginx
env:
- name: password
value: "iaHohnu7Bephi0quisha"
kubectl create ns demo
kubectl apply -f deploy.yaml -n demo
- Pour voir l'alerte
- Clic sur notification > Risk repports
- On pourra se baser sur ces alertes pour declencher des webhooks.

Commentaires
Aucun commentaire pour le moment.