Docker --privileged
Cosa viene influenzato
Quando esegui un container come privilegiato, queste sono le protezioni che disabiliti:
Montaggio di /dev
In un container privilegiato, tutti i dispositivi possono essere accessibili in /dev/
. Pertanto, è possibile evadere montando il disco dell'host.
Sistemi di file del kernel in sola lettura
I sistemi di file del kernel forniscono un meccanismo per un processo per modificare il comportamento del kernel. Tuttavia, quando si tratta di processi del contenitore, vogliamo impedire loro di apportare modifiche al kernel. Pertanto, montiamo i sistemi di file del kernel come sola lettura all'interno del contenitore, garantendo che i processi del contenitore non possano modificare il kernel.
Mascheramento dei file system del kernel
Il file system /proc è selettivamente scrivibile ma, per motivi di sicurezza, alcune parti sono protette da accessi in scrittura e lettura sovrapponendole con tmpfs, garantendo che i processi del contenitore non possano accedere ad aree sensibili.
tmpfs è un file system che memorizza tutti i file nella memoria virtuale. tmpfs non crea alcun file sul disco rigido. Quindi, se smonti un file system tmpfs, tutti i file presenti al suo interno vengono persi per sempre.
Linux capabilities
I motori dei container avviano i container con un numero limitato di capabilities per controllare ciò che accade all'interno del container per impostazione predefinita. Quelli privilegiati hanno tutte le capabilities accessibili. Per saperne di più sulle capabilities, leggi:
pageLinux CapabilitiesÈ possibile manipolare le capacità disponibili per un contenitore senza eseguire la modalità --privileged
utilizzando i flag --cap-add
e --cap-drop
.
Seccomp
Seccomp è utile per limitare le chiamate di sistema che un contenitore può effettuare. Un profilo Seccomp predefinito è abilitato di default quando si eseguono contenitori Docker, ma in modalità privilegiata è disabilitato. Per saperne di più su Seccomp, clicca qui:
pageSeccompInoltre, nota che quando Docker (o altri CRIs) vengono utilizzati in un cluster Kubernetes, il filtro seccomp è disabilitato per impostazione predefinita.
AppArmor
AppArmor è un miglioramento del kernel per confinare i container a un insieme limitato di risorse con profili per programma. Quando si esegue con il flag --privileged
, questa protezione viene disabilitata.
SELinux
L'esecuzione di un container con il flag --privileged
disabilita le etichette SELinux, facendo sì che erediti l'etichetta del motore del container, di solito unconfined
, concedendo pieno accesso simile al motore del container. In modalità senza privilegi, viene utilizzato container_runtime_t
, mentre in modalità root viene applicato spc_t
.
Cosa non viene influenzato
Namespaces
I namespace NON sono influenzati dal flag --privileged
. Anche se non hanno abilitate le restrizioni di sicurezza, non vedono tutti i processi del sistema o la rete dell'host, ad esempio. Gli utenti possono disabilitare i singoli namespace utilizzando i flag --pid=host
, --net=host
, --ipc=host
, --uts=host
dei motori dei container.
Spazio dei nomi utente
Di default, i motori di container non utilizzano gli spazi dei nomi utente, ad eccezione dei container senza privilegi, che li richiedono per il montaggio del file system e l'utilizzo di più UID. Gli spazi dei nomi utente, fondamentali per i container senza privilegi, non possono essere disabilitati e migliorano significativamente la sicurezza limitando i privilegi.
Riferimenti
Last updated