1. Les couches de sécurité #
Défense en profondeur.
Panorama #
2. RBAC #
Roles, ClusterRoles et bindings.
Donner des droits précis #
# Un rôle en lecture seule sur les pods du namespace production
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata: { name: lecteur-pods, namespace: production }
rules:
- apiGroups: [""]
resources: ["pods", "pods/log"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata: { name: alice-lecteur, namespace: production }
subjects: [{ kind: User, name: alice, apiGroup: rbac.authorization.k8s.io }]
roleRef: { kind: Role, name: lecteur-pods, apiGroup: rbac.authorization.k8s.io }kubectl auth can-i list pods -n production --as alice # yes
kubectl auth can-i delete pods -n production --as alice # no
kubectl auth can-i --list -n production --as alice
kubectl get clusterrolebindings -o wide | grep cluster-admin # qui est cluster-admin ?
kubectl create rolebinding dev-edit --clusterrole=edit --user=bob -n devErreur Courante : N'attribuezcluster-adminqu'à des comptes d'administration. Les wildcards (verbs: ["*"]) et l'accès àsecretsdoivent rester exceptionnels.
ServiceAccounts #
kubectl create serviceaccount app -n production
kubectl create role lire-config --verb=get,list --resource=configmaps -n production
kubectl create rolebinding app-lire-config --role=lire-config --serviceaccount=production:app -n production
# Dans le pod : serviceAccountName: app et automountServiceAccountToken: false si l'API n'est pas utilisée3. Isoler les pods #
securityContext, Pod Security et NetworkPolicies.
Contraintes de sécurité des pods #
# Pod Security Admission : appliquer le profil "restricted" à un namespace
kubectl label namespace production pod-security.kubernetes.io/enforce=restricted pod-security.kubernetes.io/warn=restricted
# Conteneur durci
securityContext:
runAsNonRoot: true
runAsUser: 10001
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
capabilities: { drop: ["ALL"] }
seccompProfile: { type: RuntimeDefault }NetworkPolicies #
# Tout interdire par défaut, puis autoriser web -> api
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata: { name: deny-all, namespace: production }
spec: { podSelector: {}, policyTypes: [Ingress, Egress] }
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata: { name: web-vers-api, namespace: production }
spec:
podSelector: { matchLabels: { app: api } }
policyTypes: [Ingress]
ingress:
- from: [{ podSelector: { matchLabels: { app: web } } }]
ports: [{ port: 8080 }]À savoir : Les NetworkPolicies exigent un CNI qui les implémente (Calico, Cilium...). Avec un CNI sans support, elles sont acceptées mais n'ont aucun effet.
4. Secrets et audit #
Protéger et contrôler.
Bonnes pratiques #
- Activer le chiffrement des secrets dans etcd (
EncryptionConfiguration) et limiter l'accès à etcd. - Préférer External Secrets Operator ou le CSI Secrets Store (Vault, AWS/GCP/Azure) aux secrets versionnés.
- Analyser les images (
trivy image) et vérifier les configurations (kube-bench,kubescape). - Activer les journaux d'audit de l'API server et superviser les accès à
secrets.
trivy image nginx:1.27
trivy k8s --report summary cluster
kubescape scan framework nsa
docker run --rm --pid=host -v /etc:/etc:ro aquasec/kube-bench:latest run --targets nodeMon suivi
Connectez-vous pour suivre votre progression et prendre des notes. Se connecter
Articles recommandés
Aide-mémoire Docker : Les commandes essentielles
Un guide pratique regroupant toutes les commandes indispensables pour manipuler les images, les c...
Kubernetes : architecture et composants (control plane, nœuds, objets)
Comprendre l'architecture de Kubernetes : API server, etcd, scheduler, controller manager, kubele...
Aide-mémoire kubectl : les commandes essentielles
Toutes les commandes kubectl utiles au quotidien : contextes, ressources, logs, exec, port-forwar...
Kubernetes : Pods, ReplicaSets et Deployments (déployer et mettre à jour)
Maîtriser les workloads Kubernetes : anatomie d'un pod, ReplicaSet, Deployment, stratégies Rollin...
Kubernetes : exposer ses applications (Services, Ingress et Gateway API)
Exposer des applications dans Kubernetes : Services ClusterIP/NodePort/LoadBalancer, Ingress, Ing...
Kubernetes : fiabilité et mise à l'échelle (probes, ressources, HPA, PDB)
Rendre une application résiliente dans Kubernetes : liveness, readiness et startup probes, reques...
Docker : vue d'ensemble, architecture et premiers pas
Découvrir Docker : conteneurs vs machines virtuelles, architecture client/daemon/registre, images...
Bonnes pratiques Docker : images, exécution, sécurité et exploitation
Les bonnes pratiques Docker : Dockerfile et builds multi-étapes, images minimales et reproductibl...