Italiano

Strumenti per sviluppatori · Docker viene eseguito sul convertitore di composizione Docker

Esecuzione di contenitori come root: cosa --user e utente: cambiamento e perché

· Perché è importante

finestra mobile contenitori sicurezza

Diagramma astratto che illustra i contenitori in esecuzione come root: cosa --user e utente: cambia e perché
Illustrazione vettoriale originale ToolAcre

A meno che l'immagine non indichi diversamente, il processo nel tuo contenitore è root. Questo post spiega cosa significa sull'host, come --user e la chiave utente Compose lo modificano e i problemi di proprietà dei file che ne conseguono.

File che non è possibile eliminare: un montaggio di bind è pieno di file di proprietà root dopo l'esecuzione di un contenitore

File che non è possibile eliminare: un montaggio di bind è pieno di file di proprietà root dopo l'esecuzione di un contenitore. Prova: l'output montato su bind può esporre discrepanze di identità che l'analisi non può diagnosticare. Riprodurre l'identità di runtime con valori letterali usa e getta. Associa ciascuna occorrenza di origine alle funzionalità di montaggio dell'utente; riservare spazi dei nomi e proprietà per la revisione della destinazione.

L'incidente di sicurezza rivela inoltre che un limite separato dell'incidente di sicurezza è che l'immagine USER e gli switch del punto di ingresso richiedono l'ispezione o le origini dell'immagine. Prova: l'immagine USER e gli switch del punto di ingresso richiedono l'ispezione o le origini dell'immagine. Questo vincolo di identità di runtime è un punto fermo. Ispeziona le capacità di montaggio degli utenti senza comportamenti di produzione, quindi documenta un controllo dell'host per gli spazi dei nomi e la proprietà.

Root all'interno è root all'esterno: con le impostazioni predefinite dello spazio dei nomi utente, UID 0 nel contenitore è UID 0 sull'host per i file montati

Root all'interno è root all'esterno: con le impostazioni predefinite dello spazio dei nomi utente, UID 0 nel contenitore è UID 0 sull'host per i file montati. Prova: UID zero effetti host dipendono dalla configurazione dello spazio dei nomi non letta qui. Traccia i token di identità di runtime nelle funzionalità di montaggio degli utenti. Separare i valori ordinati dai campi dell'ultimo valore; gli spazi dei nomi e la proprietà sono esterni alla raccolta.

Un limite del meccanismo di sicurezza correlato è che un esempio di 1000:1000 dimostra la conservazione e non le garanzie di proprietà. Prova: un esempio di 1000:1000 dimostra la conservazione e non le garanzie di proprietà. Utilizzare questo fatto di identità di runtime per prevedere un membro o uno scalare nelle funzionalità di montaggio dell'utente. Controlla gli avvisi prima di decidere qualsiasi cosa sugli spazi dei nomi e sulla proprietà.

--user diventa utente: — numerico UID:GID rispetto ai nomi e perché il numerico è più sicuro quando l'immagine non ha un account corrispondente

--user diventa utente: — numerico UID:GID rispetto ai nomi e perché il numerico è più sicuro quando l'immagine non ha account corrispondenti. Prova: --user diventa utente e il testo numerico UID:GID è citato. Giudicare la serializzazione dell'identità di runtime dal relativo modello. La citazione nelle funzionalità di montaggio dell'utente protegge i tipi ma non fornisce alcuna prova operativa per gli spazi dei nomi e la proprietà.

La seconda osservazione sulla serializzazione di sicurezza è che un limite di output di sicurezza separato è che read_only cap_drop e security_opt mappano mentre la modalità rootless no. Prova: read_only cap_drop e security_opt mappano mentre la modalità rootless no. Questo output dell'identità di runtime separa le impostazioni dal contesto non disponibile. Mantieni revisionabili le funzionalità di montaggio degli utenti e controlla gli spazi dei nomi e la proprietà in modo indipendente.

Immagini che perdono già i privilegi — USER nel Dockerfile e immagini che cambiano utente nel loro punto di ingresso

Immagini che perdono già i privilegi — USER nel Dockerfile e immagini che cambiano utente nel loro punto di ingresso. Fermati all'eccezione dell'identità di runtime invece di indovinare. Qualsiasi aggiunta vicino alle funzionalità di montaggio degli utenti richiede un motivo specifico di distribuzione legato agli spazi dei nomi e alla proprietà.

Un altro vincolo di eccezione di sicurezza è che un limite separato di eccezione di sicurezza è che la rimappatura dello spazio dei nomi e i contesti Kubernetes non rientrano nell'ambito. Prova: la rimappatura dello spazio dei nomi e i contesti Kubernetes non rientrano nell'ambito. Mantieni il comando dell'identità di runtime originale accanto agli avvisi. Il confronto mostra quali funzionalità di montaggio utente contengono e quali spazi dei nomi e la decisione sulla proprietà rimangono manuali.

Esempio realizzato: conversione dell'esecuzione docker --user 1000:1000 -v /srv/app:/app — la chiave utente: e la proprietà risultante sul disco

Esempio funzionante: conversione dell'esecuzione docker --user 1000:1000 -v /srv/app:/app — la chiave utente: e la proprietà risultante sul disco. Costruisci l'esempio di identità di runtime da nomi sintetici. Rendi tracciabile ogni elemento delle funzionalità di montaggio dell'utente senza esporre gli spazi dei nomi di produzione e i dettagli della proprietà.

Lo stesso esempio di sicurezza dimostra che un limite separato dell'esempio di sicurezza è che l'identità diventa visibile accanto ai montaggi e alle funzionalità per la revisione. Prova: l'identità diventa visibile accanto ai supporti e alle capacità di revisione. Il fatto dell'identità del runtime accoppiato dovrebbe essere visibile nelle funzionalità di montaggio dell'utente. Registra quella riga ed evita ipotesi su spazi dei nomi e proprietà.

Altre chiavi di rafforzamento: read_only, cap_drop: [ALL], security_opt no-new-privileges e Docker rootless come passo più grande

Altre chiavi di rafforzamento: read_only, cap_drop: [ALL], security_opt no-new-privileges e Docker rootless come passo più grande. Tradurre la conseguenza dell'identità di runtime in una differenza osservabile di capacità di montaggio dell'utente. Docker possiede gli spazi dei nomi successivi e il verdetto di proprietà.

L'implementazione delle conseguenze sulla sicurezza mostra anche che un limite separato dell'effetto di sicurezza è che l'output montato su bind può esporre mancate corrispondenze di identità che l'analisi non può diagnosticare. Dividi le responsabilità dell'identità di runtime: la conversione scrive le funzionalità di montaggio dell'utente, il repository rimuove i segreti e gli operatori convalidano gli spazi dei nomi e la proprietà.

Cosa non copre: configurazione della rimappatura dello spazio dei nomi utente e Kubernetes securityContext

Cosa non copre: configurazione della rimappatura dello spazio dei nomi utente e Kubernetes securityContext. Limita l'ambito dell'identità di runtime ai rami delle funzionalità di montaggio utente mostrati qui. I moduli e i valori predefiniti vicini non possono rispondere a domande sugli spazi dei nomi e sulla proprietà.

Un altro limite dell'ambito di sicurezza segue da Un limite del limite di sicurezza separato è che UID zero effetti host dipendono dalla configurazione dello spazio dei nomi non letta qui. Tratta questo limite di identità di runtime come un'esclusione. Preferire funzionalità di montaggio utente accurate rispetto a ipotesi su spazi dei nomi e proprietà.

Conclusione: decidi chi è il tuo processo e controlla che l'output del convertitore includa l'utente: prima di aprire lo stack

Conclusione: decidi chi è il tuo processo e controlla che l'output del convertitore includa l'utente: prima di aprire lo stack. Controlla l'identità di runtime come opzione di origine, campo del modello, riga delle funzionalità di montaggio dell'utente e avviso. Rimuovi i segreti prima di controllare gli spazi dei nomi e la proprietà.

Infine, la fonte di sicurezza conferma che un limite decisionale di sicurezza separato è che --user diventa utente e il testo numerico UID:GID è tra virgolette. Chiudi l'identità di runtime in modo restrittivo: le funzionalità di montaggio dell'utente sono un candidato; gli spazi dei nomi, la proprietà e l'equivalenza della shell non sono garanzie.