Kubernetes
Segurança
CloudNative
RBAC
NetworkPolicies
Falco
OPA
DevSecOps

Sécurité cloud native : sécurisation des infrastructures Kubernetes

Sécurité cloud native : sécurisation des infrastructures Kubernetes

Kubernetes a apporté de la flexibilité, mais aussi un nouvel ensemble de vecteurs d'attaque. La sécurité doit être intégrée au pipeline, de la création de l'image à l'exécution sur le cluster.

Principales couches de sécurité

  • Supply-Chain, recherche de vulnérabilités dans les images Docker].
  • Contrôle d'accès (RBAC), autorisations minimales par compte de service.
  • Politiques réseau, NetworkPolicy pour isoler les pods.
  • Runtime Security, Falco, OPA Gatekeeper pour détecter les comportements anormaux.
  • Sécurité des données, secrets chiffrés avec KMS, chiffrement de volume.

Liste de contrôle de sécurité Kubernetes

  • Activez PodSecurityPolicy ou Pod Security Standards.
  • Définissez Roles et RoleBindings avec le principe du moindre privilège.
  • Appliquez NetworkPolicy pour limiter le trafic intra-espace de noms.
  • Numérisez des images avec Trivy ou Clair dans CI.
  • Implémentez OPA Gatekeeper pour les politiques de validation.
  • Configurez Falco pour surveiller les appels système suspects.
  • Faites pivoter Secrets régulièrement.
  • Auditez les journaux du Serveur API avec la stratégie d'audit.

Exemple de RBAC restreint

apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: prod name: read-only-role rules: - apiGroups: [""] resources: ["pods", "services", "configmaps"] verbs: ["get", "list", "watch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: read-only-binding namespace: prod subjects: - kind: ServiceAccount name: app-sa namespace: prod roleRef: kind: Role name: read-only-role apiGroup: rbac.authorization.k8s.io

Politiques de réseau simples

apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: deny-all-except-frontend namespace: prod spec: podSelector: {} policyTypes: - Ingress - Egress ingress: - from: - podSelector: matchLabels: app: frontend

Numérisation d'images dans CI

## .gitlab-ci.yml stages: - scan - build - deploy scan_image: stage: scan image: aquasec/trivy:latest script: - trivy image --severity HIGH,CRITICAL myapp:latest

Surveillance du temps d'exécution avec Falco

apiVersion: apps/v1 kind: DaemonSet metadata: name: falco namespace: kube-system spec: selector: matchLabels: app: falco template: metadata: labels: app: falco spec: containers: - name: falco image: falcosecurity/falco:latest securityContext: privileged: true volumeMounts: - name: devfs mountPath: /host/dev - name: procfs mountPath: /host/proc - name: sysfs mountPath: /host/sys volumes: hostPath: path: /proc - name: sysfs hostPath: path: /sys

Conclusion

La sécurité dans Kubernetes est un processus continu. En appliquant des couches de défense, depuis la création d'images jusqu'aux politiques d'exécution, vous réduisez considérablement la surface d'attaque et augmentez la confiance dans les environnements de production.


Quelles pratiques de sécurité avez-vous déjà adoptées dans votre cluster ? Partagez dans les commentaires !

A lire aussi