2014-12-02 17 views
5

La maggior parte del file Docker si trova su Internet ed esegue i software come root! Questo deve spaventare tutti, giusto? ... ma non sembra essere il caso ...Procedure consigliate per la docker per la sicurezza

Quindi il pb è che l'esecuzione di un server come root, anche in un contenitore, È PERICOLOSO, perché la radice all'interno di un contenitore è praticamente la stessa di root fuori dal contenitore.

Una delle soluzioni è creare correttamente un file Docker utilizzando l'istruzione "USER" come this example for a tor relay.

Un'altra soluzione è utilizzare "spazi dei nomi utente linux" per "mappare" UID/GID all'interno del contenitore su UID/GID all'esterno di un contenitore. per esempio root (uid = 0) all'interno di un contenitore può essere mappato sul tuo account utente personale all'interno dell'host, quindi i file creati in un volume condiviso hanno buone autorizzazioni.

Quindi la mia domanda è: qual è la migliore pratica quando si tratta di sicurezza con Docker? eseguire il codice come non root (ad esempio, l'istruzione USER in un Dockerfile)? O utilizzando "spazi dei nomi utente"? O eventualmente (o in aggiunta) usando selinux e/o AppArmor?

Grazie :)

+0

Voglio anche aggiungere che di solito non è auspicabile per eseguire le applicazioni (come un server web per esempio) come radice – kondor

+0

Questo documento sembra interessante: [Docker Fissare Indicazioni di distribuzione] (https://github.com/GDSSecurity/Docker-Secure-Deployment-Guidelines) – kondor

risposta

3

Citando Solomon Hykes

Ciao a tutti, io sono un manutentore di Docker. Come già indicato da altri, questo non funziona su 1.0. Ma potrebbe avere.

Si ricorda che al momento non è possibile richiedere che Docker out-of-the-box sia adatto per contenere programmi non affidabili con privilegi di root. Quindi, se stai pensando "pfew, buona cosa abbiamo aggiornato a 1.0 o siamo stati brindisi", è necessario modificare la configurazione sottostante ora. Aggiungi il contenimento di apparmor o selinux, associa i gruppi di attendibilità alle macchine separate o, idealmente, non concedere l'accesso root all'applicazione.

Quindi, per quanto riguarda le migliori pratiche, andare su "spazio dei nomi" o "apparmor" o "selinux", se si tratta di sicurezza. Detto questo, molte persone non si preoccupano abbastanza di andare nei guai extra (nel bene o nel male) così vedi che molte persone non si prendono il disturbo. L'impostazione delle autorizzazioni per gli utenti sui file all'interno del contenitore (specialmente quelli montati come volumi) a volte diventa complicata e in questo modo molte persone ignorano il sovraccarico.

1

In aggiunta a SELinux, Apparmour, grsec, cgroups fornisce un ulteriore vantaggio di isolare e limitare l'utilizzo delle risorse del contenitore, se configurato con cura, questo aiuta a prevenire un contenitore compromesso nell'influenzare l'altro contenitore. Refer