- Avancé
- Sécurité
Comment ça marche
cap_drop: [ALL] les retire et cap_add ne rend que celles dont un programme prouve qu'il a besoin ; privileged: true les accorde toutes et bien plus, et n'est presque jamais la bonne réponse. Les images qui démarrent en root pour corriger des droits et changer d'utilisateur (nginx, postgres) ont besoin de CHOWN, SETUID et SETGID ; une application qui tourne déjà avec un utilisateur sans privilèges n'en a besoin d'aucune. no-new-privileges empêche les binaires setuid d'élever les privilèges.
Ce qui casse
Sans une capacité, l'appel échoue avec Operation not permitted : chown d'un dossier, gosu ou setgid au changement d'utilisateur. Rends exactement celle-là, ou choisis une image prévue pour tourner sans privilèges ; garder le jeu par défaut laisse plus de moyens de s'élever à un processus compromis.
Dans compose.yaml
services:
frontend:
image: nginx:1.27-alpine
cap_drop: [ALL]
cap_add: [CHOWN, SETUID, SETGID]
security_opt:
- "no-new-privileges:true"
Regarde-le casser, puis répare-le
Écris le Dockerfile ou le fichier compose, tape les commandes docker, et regarde un serveur simulé les exécuter à travers redémarrages, mises à jour et trafic. Gratuit pour commencer.