Come vietare l'accesso agli interni del container Docker?


14

Voglio consegnare la mia app ai clienti sotto forma di immagine docker. Ma è fondamentale garantire che l'utente finale non modifichi nulla all'interno del contenitore. L'utente dovrebbe essere in grado di eseguire / arrestare il contenitore e interagire solo con il contenitore tramite la rete.

È possibile vietare l'accesso agli interni del container? È possibile verificare l'integrità dell'immagine di cui è composto il contenitore?


2
A meno che tu non gestisca l'host docker, credo che non puoi. Quale problema sei disposto a risolvere impedendo questo accesso?
Tensibai,

Come menziona Tensibai, dipende. Se è necessario sapere che il contenitore non è modificato per motivi di sicurezza, in pratica è necessario eseguirlo sui propri server. Se vuoi solo scoraggiare le persone dal modificarlo in modo che non rompano le cose, probabilmente ci sono modi in cui potresti farlo. Descrivere il tuo caso d'uso ti aiuterà qui.
Aurora0001,

Risposte:


11

In breve, non puoi impedire ai tuoi clienti di modificare i container che eseguono nella propria infrastruttura. I contenitori non sono come binari che possono essere offuscati; sono ambienti di runtime. Il codice distribuito all'interno del contenitore, tuttavia, può essere offuscato.

La tua domanda allude a un problema di supporto di terze parti: i client che modificano il software che eseguono nel proprio ambiente. Se fornisci strumenti per far funzionare i container che fornisci (ad es. Monitoraggio e registrazione), i clienti dovrebbero concordare (come parte di una licenza software) di non apportare modifiche non autorizzate ad essi. Questo vale per tutti i tipi di software di terze parti, non solo per i contenitori.

A seconda della situazione, potresti anche avere la possibilità di fornire la tua app come Software as a service (SaaS) in esecuzione in un'infrastruttura cloud.

Se il tuo client richiede che i tuoi contenitori siano eseguiti sulla loro infrastruttura e si rifiuta di rispettare le restrizioni di modifica, probabilmente non vorrai provare a supportare il loro uso del tuo software.


6

Docker non fornisce alcun mezzo per impedire l'accesso degli utenti al contenitore, tuttavia come sviluppatore di immagini è possibile seguire alcune strategie

  • Offusca il tuo software (ruby, python, ecc.)
  • Costruisci la tua immagine da un'immagine di base che non ha shell e altri file binari che l'utente può utilizzare per troncare l'immagine.

Naturalmente possono sempre esportare il contenitore e riconfezionarlo, ma quelle sono misure estreme ...


Perché Ruby e Python vengono forniti come esempi per offuscare il codice? Il codice in tali lingue viene generalmente mantenuto come file sorgente in chiaro sul sistema operativo in esecuzione. Non sarebbe preferibile utilizzare un linguaggio compilato come C ++, C #, Java o uno che può essere "minimizzato" come JS?
AjaxLeung

5

È possibile rimuovere gli utenti dal gruppo finestra mobile e creare sudos per docker starte docker stop.


3
possibile / efficace solo se possiedi quei server ...
Dan Cornilescu,

5

Se il tuo cliente è pronto a investire denaro, dovresti scegliere Docker Enterprise Edition. In Docker EE hai uno strumento che è UCP(Universal Control Plane) UCP . Con UCP è possibile creare ruoli e diritti di accesso e limitare l'utente a cambiare / modificare i contenitori.

Se vuoi testare UCP di DDC (Docker Data Center) con una licenza di prova di un mese che ti aiuterà a elaborare le cose secondo i tuoi requisiti.

Spero che questo possa aiutare!

Grazie!


1
Come soluzione per i gruppi docker, questo funziona se gestisci solo il sistema host docker, OP suona più come distribuire un'immagine ...
Tensibai,

2

Dai la tua consegna tramite script rispondibili. Mantieni tutti i tipi di restrizioni e controlli nello script ansible.


2
In che modo ciò impedirebbe l'accesso al contenitore? Prova a spiegare come la tua proposta risolverebbe effettivamente il problema di OP.
Michael Le Barbier Grünewald,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.