Wie verbiete ich den Zugriff auf Interna des Docker-Containers?

14

Ich möchte meine App in Form eines Docker-Images an Kunden ausliefern. Es ist jedoch unbedingt darauf zu achten, dass der Endverbraucher nichts im Inneren des Behälters verändert. Der Benutzer sollte nur in der Lage sein, den Container auszuführen / zu stoppen und über das Netzwerk mit dem Container zu interagieren.

Ist es möglich, den Zugang zu Containereinbauten zu verbieten? Ist es möglich, die Integrität des Bildes zu überprüfen, aus dem der Container hergestellt wurde?

Victor Mezrin
quelle
2
Wenn Sie den Docker-Host nicht verwalten, können Sie das meines Erachtens nicht. Welches Problem möchten Sie lösen, indem Sie diesen Zugriff verhindern?
Tensibai
Wie Tensibai erwähnt, kommt es darauf an. Wenn Sie müssen wissen , dass der Behälter aus Sicherheitsgründen nicht modifizierten ist, müssen Sie im Grunde ist es auf Ihrem eigenen Servern laufen. Wenn Sie die Leute nur davon abhalten möchten, sie zu ändern, damit sie nichts kaputtmachen, gibt es wahrscheinlich Möglichkeiten, wie Sie das tun können. Hier hilft die Beschreibung Ihres Anwendungsfalls.
Aurora0001

Antworten:

11

Kurz gesagt, Sie können Ihre Kunden nicht daran hindern, Container zu ändern, die sie in ihrer eigenen Infrastruktur ausführen. Container sind keine Binärdateien, die verschleiert werden können. Sie sind Laufzeitumgebungen. Der Code, den Sie im Container verteilen, kann jedoch verschleiert werden.

Ihre Frage bezieht sich auf ein Supportproblem eines Drittanbieters: Clients, die Software ändern, die sie in ihrer eigenen Umgebung ausführen. Wenn Sie Tools für den Betrieb der von Ihnen bereitgestellten Container bereitstellen (z. B. Überwachung und Protokollierung), sollten die Kunden (im Rahmen einer Softwarelizenz) vereinbaren, keine unbefugten Änderungen an ihnen vorzunehmen. Dies gilt für alle Arten von Drittanbieter-Software, nicht nur für Container.

Abhängig von Ihrer Situation haben Sie möglicherweise auch die Option, Ihre App als Software As A Service (SaaS) bereitzustellen, die in einer Cloud-Infrastruktur ausgeführt wird.

Wenn Ihr Client die Ausführung Ihrer Container in seiner Infrastruktur erfordert und Änderungen nicht zulässt, möchten Sie wahrscheinlich nicht versuchen, die Verwendung Ihrer Software zu unterstützen.

Dave Swersky
quelle
6

Docker bietet keine Möglichkeit, den Benutzerzugriff auf den Container auszuschließen. Als Bildentwickler können Sie jedoch einige Strategien verfolgen

  • Verschleiern Sie Ihre Software (Ruby, Python usw.)
  • Erstellen Sie Ihr Image aus einem Basisimage ohne Shell und anderen Binärdateien, mit denen der Benutzer das Image manipulieren kann.

Natürlich können sie den Container jederzeit exportieren und neu verpacken, aber das sind extreme Maßnahmen ...

Jeeva
quelle
Warum werden Ruby und Python als Beispiele für die Verschleierung von Code angegeben? Code in diesen Sprachen wird normalerweise als Klartext-Quelldatei auf dem ausführenden Betriebssystem gespeichert. Wäre es nicht vorzuziehen, eine kompilierte Sprache wie C ++, C #, Java oder eine Sprache zu verwenden, die wie JS "minimiert" werden kann?
AjaxLeung
5

Sie können die Benutzer aus der Docker Gruppe entfernen und erstellen sudos für die docker startund docker stop.

user2590
quelle
3
Nur möglich / effektiv, wenn Sie diese Server besitzen ...
Dan Cornilescu
5

Wenn Ihr Kunde bereit ist, Geld zu investieren, sollten Sie sich für die Docker Enterprise Edition entscheiden. In Docker EE haben Sie ein Tool, das UCP(Universal Control Plane) UCP ist . Mit UCP können Sie Rollen und Zugriffsrechte erstellen und den Benutzer zum Ändern / Modifizieren von Containern einschränken.

Wenn Sie UCP als DDC (Docker Data Center) mit einer einmonatigen Testlizenz testen möchten, können Sie die erforderlichen Schritte ausführen.

Hoffe das wird helfen!

Vielen Dank!

Chintan Thakar
quelle
1
Als Lösung für Docker-Gruppen funktioniert dies, wenn Sie nur das Docker-Host-System verwalten. OP klingt eher wie das Verteilen eines Images ...
Tensibai,
2

Geben Sie Ihre Lieferung über ansible Skripte. Behalten Sie alle möglichen Einschränkungen und Überprüfungen im Ansible-Skript bei.

Lakshayk
quelle
2
Wie würde dies den Zugang zum Container verhindern? Versuchen Sie zu erklären, wie Ihr Vorschlag das Problem von OP tatsächlich lösen würde.
Michael Le Barbier Grünewald