Wie mounte ich Dateien als bestimmter Benutzer, wenn ich die Neuzuordnung des Docker-Namespace verwende?

Wie mounte ich Dateien als bestimmter Benutzer, wenn ich die Neuzuordnung des Docker-Namespace verwende?

Problembeschreibung:

Ich habe einen Webservice, der Docker verwendet, um nginx und haproxy (unter anderem Container) auszuführen. Ich möchte diese Docker-Images über ein privates Docker-Hub-Register bereitstellen und daher kein TLS-Zertifikat in die Images einbauen, damit jeder Kunde sein eigenes Zertifikat in den Container (nginx und haproxy) einbinden kann.

Um den Haproxy-Container zu sichern, führe ich ihn ohne Root-Rechte aus (Port über 1000 wird in Docker-Compose einem Port unter 1000 zugeordnet). Der Nginx-Container basiert auf dem offiziellen Nginx-Image und verwendet daher nur Root, wenn der Dienst gestartet wird, und wechselt danach zum Nginx-Benutzer.

Um die Container weiter zu sichern, habe ich Docker-Remapping eingerichtet (Standard-Setup mit dem Standard-Dockremap-Benutzer).

Problem:

Der öffentliche und private Schlüssel des TLS-Zertifikats werden in den Containern als Benutzer „nobody“ gemountet und daher können die Haproxy- und Nginx-Container diese Dateien nicht lesen, weil sie zum Lesen der Dateien unterschiedliche (nicht-Root-)Benutzer verwenden.

Lösungen (bisher):

  1. Ich kann die TLS-Dateien für alle lesbar machen, z. B. 644. Das funktioniert, ist aber eine furchtbar unsichere Lösung.

  2. Ich könnte mein eigenes Nginx-Image erstellen, genau wie ich es mit dem Haproxy-Image gemacht habe, und die Containerbenutzer zur Gruppe „Nobody“ hinzufügen, damit ich die Zertifikatsberechtigungen auf 640 ändern kann. Das ist ein hässlicher Hack.

  3. Docker-Remapping löschen, damit ich Zertifikatsdateien mit derselben UID wie der Benutzer in den nginx- und haproxy-Containern mounten kann. Dies würde bedeuten, dass ich die Sicherheit von Docker-Remapping verliere und die Zertifikatsdateien dieselbe UID wie der Benutzer in den haproxy- und nginx-Containern benötigen.

  4. Erstellen Sie während der Installation (und beim Aktualisieren der Basisimages oder der Zertifikatsdateien) neue Images auf dem Server meines Kunden mit meinen vorhandenen Images aus meinem privaten Docker-Repository als Basisimages. Die Docker-Build-Dateien auf dem Server meines Kunden sind sehr einfach und dienen nur dazu, die SSL-Zertifikatsdateien mit den richtigen Berechtigungen in die Container zu kopieren.

Frage:

Gibt es eine Möglichkeit, die Host-UID der UID des Benutzers innerhalb des Containers zuzuordnen, sodass gemountete Dateien die richtige UID haben?

verwandte Informationen