Docker avancé : durcir et tenir en vie un conteneur
Retirer les privilèges inutiles d'un conteneur, garder les secrets hors de l'image, plafonner ses ressources, le surveiller avec un HEALTHCHECK et choisir sa politique de redémarrage.
- 26 cartes
- 4 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Mises en situation
Quelques cartes du deck
Principe de moindre privilège : de quoi s'agit-il ?
Voir la réponse
Règle de sécurité qui veut qu'un processus reçoive uniquement les droits dont il a besoin pour sa tâche, et rien de plus.
Pour un conteneur : utilisateur sans privilèges, système de fichiers en lecture seule,
--cap-drop ALL, jamais--privileged. Si le service est compromis, l'attaquant hérite de peu.Pourquoi ne faut-il jamais monter
/var/run/docker.sockdans un conteneur ?- Qui parle au démon peut lancer un conteneur privilégié : c'est donner root sur l'hôte
- Le socket est trop lent et ralentit tous les autres conteneurs de la machine hôte
- Docker interdit de monter n'importe quel fichier du système hôte dans un conteneur
- Le conteneur ne pourrait plus utiliser son propre réseau virtuel après le montage
Voir la réponse
Qui parle au démon peut lancer un conteneur privilégié : c'est donner root sur l'hôte
Le socket est l'API du démon, qui tourne en root. Un processus qui peut l'appeler peut créer un conteneur montant tout le disque de l'hôte : le moindre privilège est contourné d'un coup.
L'option … rend le système de fichiers du conteneur non modifiable ; un dossier d'écriture temporaire s'ajoute avec ….
Voir la réponse
L'option --read-only rend le système de fichiers du conteneur non modifiable ; un dossier d'écriture temporaire s'ajoute avec --tmpfs /tmp.
Réelle sortie de
docker run --rm --read-only alpine touch /x:touch: /x: Read-only file system. Un intrus ne peut plus déposer d'outil ni modifier le code.Conteneur non root : de quoi s'agit-il ?
Voir la réponse
Conteneur dont le processus tourne sous un utilisateur sans privilèges, fixé dans l'image par USER ou au lancement par --user, plutôt que sous l'utilisateur 0.
Sans
USER, le service tourne en root dans le conteneur : une faille dans le service donne alors à l'attaquant tous les droits de root à l'intérieur et, sans espace de noms user, une évasion le fait arriver root sur l'hôte.docker psmontreRestarting (1) 5 seconds agopour un conteneur lancé avec--restart always, et cela dure depuis une heure. Quelle est la cause probable et la bonne réponse ?- Le contrôle de santé échoue en boucle : retirer le
HEALTHCHECKde l'image pour régler le problème - Le processus sort en erreur et
alwaysle relance : liredocker logs, corriger, puis borner avecon-failure:5 - Le conteneur manque de mémoire : doubler
--memorypour qu'il tienne enfin jusqu'au bout de son démarrage - C'est le fonctionnement normal d'
always: il suffit d'attendre qu'il se stabilise tout seul
Voir la réponse
Le processus sort en erreur et
alwaysle relance : liredocker logs, corriger, puis borner avecon-failure:5(1)est le code de sortie : le processus échoue, Docker le relance sans fin (avec un délai croissant). Les journaux disent pourquoi ;on-failure:5évite la boucle infinie en abandonnant après cinq essais.- Le contrôle de santé échoue en boucle : retirer le