Soluzione della community

Cosa fa realmente l’interruttore dei privilegi delle app di ZimaOS

IceWhale support explained that the App Privileges switch gives a container host-like permissions, direct hardware access, and root-level execution.

L’interruttore “Privilegi” dell’app ZimaOS corrisponde di fatto alla modalità privilegiata di Docker. Il supporto IceWhale lo ha descritto come un’impostazione che concede al container permessi simili a quelli dell’host, accesso diretto all’hardware e funzionalità a livello root. Attivalo solo quando un’applicazione richiede realmente questo livello di accesso.

Per la maggior parte delle app, la modalità privilegiata non è necessaria e indebolisce l’isolamento che rende i container più sicuri. È preferibile mappare un singolo dispositivo o aggiungere una singola capacità Linux invece di concedere al container accesso completo.

Cosa cambia con la modalità privilegiata

L’attuale guida di Docker ai container privilegiati afferma che --privileged concede al container tutte le capacità Linux e l’accesso a tutti i dispositivi dell’host, allentando al contempo importanti controlli di sicurezza.

Perché IceWhale l’ha descritta come un accesso a livello host

La risposta ufficiale originale afferma che il processo del container può accedere direttamente all’hardware dell’host ed eseguire operazioni con privilegi simili a quelli di root. È una spiegazione sintetica utile, ma l’impatto pratico sulla sicurezza è più ampio: il container non è più fortemente isolato.

Non abilitare i privilegi solo per risolvere un errore casuale

Se un’app non riesce ad accedere a un dispositivo USB, a una GPU, a una funzione di rete o a un punto di montaggio, individua prima l’autorizzazione esatta che manca. La modalità privilegiata può nascondere il vero problema di configurazione esponendo al contempo l’intero host.

Preferisci la mappatura dei dispositivi

devices:
  - /dev/dri/renderD128:/dev/dri/renderD128

Per un singolo dispositivo hardware, mappa quel dispositivo invece di tutti i dispositivi dell’host.

Preferisci capacità Linux specifiche

cap_add:
  - NET_ADMIN

Un container VPN/router potrebbe aver bisogno di una specifica capacità di rete. Quando la documentazione dell’app lo consente, concedi solo l’insieme minimo necessario invece di usare la modalità privilegiata.

App che potrebbero richiedere legittimamente un accesso maggiore

Tra gli esempi rientrano gli strumenti hardware a basso livello, Docker-in-Docker, alcune appliance VPN/di rete, la gestione di dispositivi USB, oppure software specializzati per il monitoraggio del sistema. Anche in questi casi, consulta prima le indicazioni di distribuzione del progetto.

App che di solito non ne hanno bisogno

Le normali app web, le librerie multimediali, le app per prendere note, i database, i gestori di foto, le dashboard e la maggior parte dei servizi API non dovrebbero richiedere la modalità completamente privilegiata per funzionare.

Rivedi i privilegi dopo un aggiornamento dell’app

Un vecchio pacchetto dell’app potrebbe aver abilitato la modalità privilegiata per comodità, anche se il progetto upstream ha successivamente aggiunto permessi più limitati. Quando aggiorni, verifica nuovamente i requisiti Compose attuali.

La guida alla sicurezza di Docker fornisce il modello più sicuro per le app personalizzate.

Ispeziona il container prima di concedere ulteriore accesso

docker inspect CONTAINER

Controlla le mappature dei dispositivi esistenti, le capacità, i montaggi, la modalità di rete e la configurazione dell’utente. Molte app non funzionano perché manca un dispositivo o un percorso necessario, non perché abbiano bisogno di un accesso illimitato all’host.

La modalità privilegiata può ampliare il raggio d’azione di una compromissione

Se una normale app web non privilegiata viene compromessa, l’isolamento del container può limitare ciò a cui un aggressore riesce ad accedere. Un container privilegiato può accedere a molti più dispositivi dell’host e interfacce del kernel; di conseguenza, una vulnerabilità nell’app può avere conseguenze sull’intero sistema.

Documenta il motivo per cui i privilegi sono abilitati

Quando li abiliti intenzionalmente, annota la funzionalità esatta che li richiede. Durante un aggiornamento successivo dell’app, verifica nuovamente se può funzionare con permessi più limitati e disattiva l’interruttore se non è più necessario.

Domande frequenti

“Privilegi” significa che il container viene eseguito come root?

È qualcosa di più ampio della semplice esecuzione come root all’interno del container: la modalità privilegiata concede numerose capacità dell’host e l’accesso ai suoi dispositivi.

Devo abilitarla per ogni app personalizzata?

No. Lasciala disattivata a meno che la documentazione upstream non indichi che il carico di lavoro la richiede.

Posso concedere l’accesso solo alla GPU o all’USB?

Sì. Preferisci mappature di dispositivi specifiche e impostazioni del runtime alla modalità completamente privilegiata.

La modalità privilegiata è pericolosa?

Riduce significativamente l’isolamento del container, quindi un’app privilegiata compromessa può avere un impatto molto maggiore sull’host.