Capabilities
Da Linux 2.2 root non può fare tutto.
Esistono Capabilities (circa 30). Per listarle:
man capabilities
Root su host ha la capability sys-admin
,
I container di docker non hanno tutte la capabilities dello host, ma un sottoinsieme limitato.
Si possono aggiungere e togliere capabilities.
Esempi:
docker run --cap-drop setuid --cap-drop setgid -ti ubuntu bash
docker run --cap-add all --cap-drop sys-admin -ti ubuntu bash
Per lanciare un contenitore con tutte le capabilities aggiungere l'opzione --privileged
.
Minimo Privilegio
Ogni container deve possedere i privilegi minimi per il suo lavoro e non di più.
Un container compromesso non deve essere in grado di compiere danni eccessivi.
La difesa consiste in:
- assicurarsi che i processi nei contenitori non siano attivi come root
- mappare i filesystems host come read-only se non vi è necessità di scrittura
- ridurre le capabilities che un contenitore possiede
- limitare le risorse host che un contenitore può usare