Aller au contenu principal
Sommaire de la formation

Les Policies rules: Admission control

coolibra115 vues

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.

 

 

    • 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

Connectez-vous pour rejoindre la discussion.

Aucun commentaire pour le moment.