KNX Data Secure Unterstützung
für KNX Logger und KNX Busmonitor
KNX Diagnose Monitor, Import des ETS Projektes deutlich beschleunigt, Suche in der Navigation
Mehr Informationen dazu hier im Forum
Insider Version 6 zur 4.5 jetzt für alle Mitglieder des Insider Clubs installierbar
Alle Infos zum Update im Timberwolf Wiki
Benutzer für Docker Container
Forumsregeln
- Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
- Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
- Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
- Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
-
- Reactions:
- Beiträge: 431
- Registriert: Mo Aug 13, 2018 6:31 pm
- Hat sich bedankt: 199 Mal
- Danksagung erhalten: 147 Mal
Benutzer für Docker Container
Vielleicht habe ich das auch nur übersehen...
Aus Sicherheitsgründen wäre es wünschenswert, wenn die Software in den Docker Containern nicht als root sondern unter einem eigenen Benutzer laufen könnte. Ein Benutzer für alle Container würde da fürs erste schon ausreichen, noch schöner wäre natürlich, wenn man mehrere Benutzer anlegen könnte.
Beispiel: Der openHAB Container wechselt beim Start auf den per Umgebungsvariable übergebenen Benutzer & Gruppe.
Aus Sicherheitsgründen wäre es wünschenswert, wenn die Software in den Docker Containern nicht als root sondern unter einem eigenen Benutzer laufen könnte. Ein Benutzer für alle Container würde da fürs erste schon ausreichen, noch schöner wäre natürlich, wenn man mehrere Benutzer anlegen könnte.
Beispiel: Der openHAB Container wechselt beim Start auf den per Umgebungsvariable übergebenen Benutzer & Gruppe.
TWS 2500 ID: 145 + 1x TP-UART + 2x DS9490R, VPN geschlossen, Reboot nach Absprache / wiregate198 (im Ruhestand)
-
- Reactions:
- Beiträge: 27
- Registriert: So Aug 12, 2018 11:34 am
- Hat sich bedankt: 26 Mal
- Danksagung erhalten: 16 Mal
ByTheWay: das nicht verwenden von root ist auch seitens Docker empfohlen und best practise.
...aber wir haben bei unseren Anwendungen auch noch nicht alle umgestellt
Gruß Oliver
...aber wir haben bei unseren Anwendungen auch noch nicht alle umgestellt

Gruß Oliver
Timberwolf 2500 in Raspberry Violent 
timberwolf140, VPN offen, Reboot jederzeit

timberwolf140, VPN offen, Reboot jederzeit
-
- Elaborated Networks
- Reactions:
- Beiträge: 10707
- Registriert: So Aug 12, 2018 9:27 am
- Wohnort: Frauenneuharting
- Hat sich bedankt: 5303 Mal
- Danksagung erhalten: 8685 Mal
- Kontaktdaten:
Der Docker nebst portainer läuft doch gar nicht unter Root?
Dafür gibt es den Benutzer "Portainer"?
Auch sollte man nicht auf die Systemressourcen kommen außer einem dafür vorgesehenem Plattenbereich
lg
Stefan
Dafür gibt es den Benutzer "Portainer"?
Auch sollte man nicht auf die Systemressourcen kommen außer einem dafür vorgesehenem Plattenbereich
lg
Stefan
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de
Link zu Impressum und Datenschutzerklärung oben.
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de
Link zu Impressum und Datenschutzerklärung oben.
-
- Reactions:
- Beiträge: 193
- Registriert: Sa Aug 11, 2018 11:36 pm
- Wohnort: München
- Hat sich bedankt: 458 Mal
- Danksagung erhalten: 126 Mal
Jockel,
wenn du damit meinst unter welchem Benutzer die SW im Docker selber läuft, das wird über das Entry-Script gemacht und dafür ist der Ersteller des Containers zuständig.
Ich glaub man kann beim Starten aber auch ein anderes Entry-Skript angeben. Wenn das so ist, kannst du natürlich einen Wrapper mit dem Benutzer deiner Wahl machen, könnte aber schiefgehen, wenn das Entry-Skript noch Root-Rechte für bestimmte Einstellungen braucht.
Was aber wichtig ist:
Der Container teilt sich mit dem Host denselben UserID-(nicht User-Name)-Raum. Das kann gut sein, kann aber auch zu komischen Effekten bei gemappten Volumes führen. Wenn man sicher gehen will, dann legt man im Docker also UIDs an, die auf dem Host nicht existieren.
wenn du damit meinst unter welchem Benutzer die SW im Docker selber läuft, das wird über das Entry-Script gemacht und dafür ist der Ersteller des Containers zuständig.
Ich glaub man kann beim Starten aber auch ein anderes Entry-Skript angeben. Wenn das so ist, kannst du natürlich einen Wrapper mit dem Benutzer deiner Wahl machen, könnte aber schiefgehen, wenn das Entry-Skript noch Root-Rechte für bestimmte Einstellungen braucht.
Was aber wichtig ist:
Der Container teilt sich mit dem Host denselben UserID-(nicht User-Name)-Raum. Das kann gut sein, kann aber auch zu komischen Effekten bei gemappten Volumes führen. Wenn man sicher gehen will, dann legt man im Docker also UIDs an, die auf dem Host nicht existieren.
TW 2600 #178 + TW 3500 #1704 - VPN offen, Zugriff jederzeit
EFH, KNX, 1-Wire, DALI, Wiregate,
CometVisu (TW Docker-Container), Mobotix T25, Logiken für Licht- und Rolladensteuerung
1-Wire-Ventilaktoren + Logiken für Gartenbewässerung
EFH, KNX, 1-Wire, DALI, Wiregate,
CometVisu (TW Docker-Container), Mobotix T25, Logiken für Licht- und Rolladensteuerung
1-Wire-Ventilaktoren + Logiken für Gartenbewässerung
-
- Reactions:
- Beiträge: 431
- Registriert: Mo Aug 13, 2018 6:31 pm
- Hat sich bedankt: 199 Mal
- Danksagung erhalten: 147 Mal
Hallo,
ja ich meine der Nutzer, unter dem die Software im Container läuft.
Ich bleibe wieder beim Beispiel openHAB, weil ich damit zur Zeit experimentiere. Der Container bekommt per Umgebungsvariable eine user und Gruppen-Id:
...
- e USER_ID=1004 \
-e GROUP_ID=1000 \
...
In der entrypoint.sh des Containers wird dann ein Benutzer openhab im Container mit der übergebenen User-Id und Gruppen-Id angelegt und openHAB per "gosu" unter diesem benutzer gestartet.
Die übergebenen User-id und Gruppen-Id müssen natürlich auf dem Timberwolf existieren und entsprechende Rechte auf den gemappten Verzeichnissen haben.
Mein Feature-request ziehlte darauf ab, dass ich auf dem Timberwolf einen Benutzer openhab (um beim Beispiel zu bleiben) anlegen und ihm die Rechte auf den zu mappenden Verzeichnissen zuweisen können wollte um dann dessen User-Id beim Start an openhab übergeben zu können. Für den nächsten Container, z.B. dovecot dann einen weiteren Nutzer "dovecot" mit gleichem Prinzip.
Alternativ und einfacher: Ein Benutzer "docker_user" der dann beim Start aller Container verwendet werden kann.
Wenn ich Dich richtig verstanden habe, ist der Beutzer "portainer" ja derjenige, unter dem Portainer selbst auf dem Timberwolf läuft, der sollte dafür nicht verwendet werden.
Viele Grüße,
Jockel
ja ich meine der Nutzer, unter dem die Software im Container läuft.
Ich bleibe wieder beim Beispiel openHAB, weil ich damit zur Zeit experimentiere. Der Container bekommt per Umgebungsvariable eine user und Gruppen-Id:
...
- e USER_ID=1004 \
-e GROUP_ID=1000 \
...
In der entrypoint.sh des Containers wird dann ein Benutzer openhab im Container mit der übergebenen User-Id und Gruppen-Id angelegt und openHAB per "gosu" unter diesem benutzer gestartet.
Die übergebenen User-id und Gruppen-Id müssen natürlich auf dem Timberwolf existieren und entsprechende Rechte auf den gemappten Verzeichnissen haben.
Mein Feature-request ziehlte darauf ab, dass ich auf dem Timberwolf einen Benutzer openhab (um beim Beispiel zu bleiben) anlegen und ihm die Rechte auf den zu mappenden Verzeichnissen zuweisen können wollte um dann dessen User-Id beim Start an openhab übergeben zu können. Für den nächsten Container, z.B. dovecot dann einen weiteren Nutzer "dovecot" mit gleichem Prinzip.
Alternativ und einfacher: Ein Benutzer "docker_user" der dann beim Start aller Container verwendet werden kann.
Wenn ich Dich richtig verstanden habe, ist der Beutzer "portainer" ja derjenige, unter dem Portainer selbst auf dem Timberwolf läuft, der sollte dafür nicht verwendet werden.
Viele Grüße,
Jockel
TWS 2500 ID: 145 + 1x TP-UART + 2x DS9490R, VPN geschlossen, Reboot nach Absprache / wiregate198 (im Ruhestand)
-
- Elaborated Networks
- Reactions:
- Beiträge: 179
- Registriert: Mo Aug 13, 2018 11:31 am
- Hat sich bedankt: 393 Mal
- Danksagung erhalten: 333 Mal
Wenn ich mich richtig erinnere (gefährliches halbwissen das hat ein Kollege programmiert), dann läuft bei dem Timberwolf Docker unter dem User portainer.
In dem Container wird dann ein Container Portainer gestartet. Ob der Portainer in seinem Container als root gilt kann ich dir leider nicht sagen. Da sich das aber sowiso nur auf den Container beziehen dürfte sollte das vermutlich aber nicht relevant sein.
Der User unter dem der von dir verwendete user selbst läuft, sollte meines Wissens wie Cepheus schon sagte über das Entry Script festgelegt werden, alternativ aber auch als Umgebungsvariable (also vermutlich unter dem Reiter ENV im Portainer). Bin diesbezüglich aber selbst noch in der Experementierphase.
Theoretisch sollte also nichts dagegen sprechen, dass du also den Containern dieselbe UUID (über env) zuweist und das als deinen "docker_user" verwendest. Die Freigaben kannst du ja dann immernoch über Volumes verwalten, oder sehe ich das falsch?
Das sollte doch ziemlich genau deinem alternativ und einfacher entsprechen (bitte korregiert mich falls ich mich irre, eigentlich bin ich deutlich fitter im Bereich Hardware).
------------------
das wars zum Thema
An dieser möchte ich kurz ausholen und euch kurz mal näher bringen was all das immer für einen Rattenschwanz in der Entwicklung nach sich zieht und wie ich den damals Zwischenstand mit dem User Portainer und dem Container mitgekriegt habe.
Wie gesagt eigentlich bin ich bei ElabNET für die Entwicklung der Hardware verantwortlich (Platinen für TW 950/960/2500/2600, auch die ersten Gehäuse usw.).
Auf jeden Fall wurde dann im Laufe der Entwicklung klar, dass wir neben der ganzen Sicherheitsaspekte in der Software in Verbindung mit dem Docker auch noch sicher stellen mussten das unsere Hardware sicher als unsere eigene erkennen müssen, da nun jeder einen FTDI mit X-beliebiger Funktion in seinen Docker Container evtl einschleifen will.
Also musste auf die Schnelle nicht nur die Softwareentwicklung sich überlegen wie wir das alles managen wollen. Nein ich musste den damals firsch modifizierten 2600 (von normalem FTDI auf DUAL FTDI, damit sich die Kollegen in der Produktion leichter tun, da dadurch wurde ein 20 poliges Flachbandkabel von der Apu zu meiner Platine eingespart) abermals modifizieren um einen EEPROM hinzuzufügen.
Doch damit nicht genug. Diesen Dual FTDI habe ich ursprünglich bei der Verbesserung der Hutschienenserie entdeckt. Das neu verwendete CPU Modul bot nicht genügend UARTs um all die Peripherie bedienen zu können. Es gab in einer passenden Größe jedoch nicht allzuviele Alternativen und zumindest keine die ich damals gefunden habe, die auch nur ansatzweise so leistungsfähig gewesen wäre.
Als aufmerksame Leser werdet ihr mit Sicherheit bereits herausgefunden haben -> da muss also jetzt da auch noch ein EEPROM drauf. Also auch das erledigt.
Zu allem Überfluss scheint es aktuell unmöglich absolut unmöglich Bauteile, die man eine Woche vorher für die Nullsereie bestellt hat für die Serienproduktion zu bekommen es ist wirklich wirklich jedes Detail (für euch) für uns ein immenser Kraftakt.
Allen Problemen zum Trotz die 2500 wurden mittlerweile fast vollständig ausgeliefert und für die 2600 sind mittlerweile fast alle Bauteile geliefert.
Zu 950/960: Direkt nachdem ich den EEPROM hinzugefügt habe, hat der Hersteller der CPU-Boards uns mitgeteit (vermutlich nach der 10. Nachfrage), dass in ca 1% der fälle die Boards nicht Booten, wenn der Boot nach Vorhandensein aller Spannungen nach weniger als 1,5 Sekunden erfolgt -> ich vermute ihr wisst was das heißt.
Wie dem auch sei, all das ist vergangenheit. Auch hier ist aktuell das Problem der Bauteilbeschaffung.
liebe Grüße, Julian
In dem Container wird dann ein Container Portainer gestartet. Ob der Portainer in seinem Container als root gilt kann ich dir leider nicht sagen. Da sich das aber sowiso nur auf den Container beziehen dürfte sollte das vermutlich aber nicht relevant sein.
Der User unter dem der von dir verwendete user selbst läuft, sollte meines Wissens wie Cepheus schon sagte über das Entry Script festgelegt werden, alternativ aber auch als Umgebungsvariable (also vermutlich unter dem Reiter ENV im Portainer). Bin diesbezüglich aber selbst noch in der Experementierphase.
Theoretisch sollte also nichts dagegen sprechen, dass du also den Containern dieselbe UUID (über env) zuweist und das als deinen "docker_user" verwendest. Die Freigaben kannst du ja dann immernoch über Volumes verwalten, oder sehe ich das falsch?
Das sollte doch ziemlich genau deinem alternativ und einfacher entsprechen (bitte korregiert mich falls ich mich irre, eigentlich bin ich deutlich fitter im Bereich Hardware).
------------------
das wars zum Thema
An dieser möchte ich kurz ausholen und euch kurz mal näher bringen was all das immer für einen Rattenschwanz in der Entwicklung nach sich zieht und wie ich den damals Zwischenstand mit dem User Portainer und dem Container mitgekriegt habe.
Wie gesagt eigentlich bin ich bei ElabNET für die Entwicklung der Hardware verantwortlich (Platinen für TW 950/960/2500/2600, auch die ersten Gehäuse usw.).
Auf jeden Fall wurde dann im Laufe der Entwicklung klar, dass wir neben der ganzen Sicherheitsaspekte in der Software in Verbindung mit dem Docker auch noch sicher stellen mussten das unsere Hardware sicher als unsere eigene erkennen müssen, da nun jeder einen FTDI mit X-beliebiger Funktion in seinen Docker Container evtl einschleifen will.
Also musste auf die Schnelle nicht nur die Softwareentwicklung sich überlegen wie wir das alles managen wollen. Nein ich musste den damals firsch modifizierten 2600 (von normalem FTDI auf DUAL FTDI, damit sich die Kollegen in der Produktion leichter tun, da dadurch wurde ein 20 poliges Flachbandkabel von der Apu zu meiner Platine eingespart) abermals modifizieren um einen EEPROM hinzuzufügen.
Doch damit nicht genug. Diesen Dual FTDI habe ich ursprünglich bei der Verbesserung der Hutschienenserie entdeckt. Das neu verwendete CPU Modul bot nicht genügend UARTs um all die Peripherie bedienen zu können. Es gab in einer passenden Größe jedoch nicht allzuviele Alternativen und zumindest keine die ich damals gefunden habe, die auch nur ansatzweise so leistungsfähig gewesen wäre.
Als aufmerksame Leser werdet ihr mit Sicherheit bereits herausgefunden haben -> da muss also jetzt da auch noch ein EEPROM drauf. Also auch das erledigt.
Zu allem Überfluss scheint es aktuell unmöglich absolut unmöglich Bauteile, die man eine Woche vorher für die Nullsereie bestellt hat für die Serienproduktion zu bekommen es ist wirklich wirklich jedes Detail (für euch) für uns ein immenser Kraftakt.
Allen Problemen zum Trotz die 2500 wurden mittlerweile fast vollständig ausgeliefert und für die 2600 sind mittlerweile fast alle Bauteile geliefert.
Zu 950/960: Direkt nachdem ich den EEPROM hinzugefügt habe, hat der Hersteller der CPU-Boards uns mitgeteit (vermutlich nach der 10. Nachfrage), dass in ca 1% der fälle die Boards nicht Booten, wenn der Boot nach Vorhandensein aller Spannungen nach weniger als 1,5 Sekunden erfolgt -> ich vermute ihr wisst was das heißt.
Wie dem auch sei, all das ist vergangenheit. Auch hier ist aktuell das Problem der Bauteilbeschaffung.
liebe Grüße, Julian
Liebe Grüße,
Julian
Elaborated Networks GmbH
Hardware Entwicklung
timberwolf90, VPN offen, Reboot jederzeit
Julian
Elaborated Networks GmbH
Hardware Entwicklung
timberwolf90, VPN offen, Reboot jederzeit
-
- Reactions:
- Beiträge: 431
- Registriert: Mo Aug 13, 2018 6:31 pm
- Hat sich bedankt: 199 Mal
- Danksagung erhalten: 147 Mal
Damit der User im Entry Script gesetzt werden kann, muss die User Id auf dem Host aber schon existieren, da sich host und alle Container die gleichen Ids teilen (die aber im Container einen anderen Usernamen haben können. Mein Vorschlag war, auf dem Timberwolf User anlegen zu können, deren Id dann an den Container übergeben werden kann damit im Entry Script der Benutzer gewechselt werden kann. Hier ist ein ganz guterÜberblick über das Thema; https://medium.com/@mccode/understandin ... 37a01d01cfDer User unter dem der von dir verwendete user selbst läuft, sollte meines Wissens wie Cepheus schon sagte über das Entry Script festgelegt werden, alternativ aber auch als Umgebungsvariable (also vermutlich unter dem Reiter ENV im Portainer). Bin diesbezüglich aber selbst noch in der Experementierphase.
Ansonsten: Danke für den Blick hinter die Kulissen, sehr interessant!
Ich bin ja selbst Entwickler (wenn auch Software) und kann gut nachempfinden, wie auch vermeintliche Kleinigkeiten einen riesigen Aufwand nach sich ziehen können, von dem der Kunde am Ende nichts sieht... Und ich freue mich auch immer, wenn ich vom Kunden höre "kann man nicht mal eben"

Daher ist mir auch ganz klar, dass nicht jeder Wunsch hier erfüllt werden kann und manche zumindest länger dauern. Ich denke aber, es ist trotzdem sinnvoll sie zu posten, eher im Sinne einer Sammlung, die dann von Euch bewertet werden kann.
TWS 2500 ID: 145 + 1x TP-UART + 2x DS9490R, VPN geschlossen, Reboot nach Absprache / wiregate198 (im Ruhestand)
-
- Reactions:
- Beiträge: 3903
- Registriert: So Aug 12, 2018 8:44 am
- Hat sich bedankt: 1263 Mal
- Danksagung erhalten: 2213 Mal
@Julian: sehr schönes Posting mit einem sehr eindrucksvollen Einblick hinter die Kulissen!
Für mich ist das SmartHome ein nettes Hobby, beruflich bin ich in einer ganz anderen Branche unterwegs, umso mehr finde ich Einblicke in eure Welt spannend und neben dem Informationsaspekt zum TWS eben auch eine allgemeine Bereicherung!!!
Weiter so!
Lg
Robert
Für mich ist das SmartHome ein nettes Hobby, beruflich bin ich in einer ganz anderen Branche unterwegs, umso mehr finde ich Einblicke in eure Welt spannend und neben dem Informationsaspekt zum TWS eben auch eine allgemeine Bereicherung!!!
Weiter so!
Lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297
-
- Reactions:
- Beiträge: 3903
- Registriert: So Aug 12, 2018 8:44 am
- Hat sich bedankt: 1263 Mal
- Danksagung erhalten: 2213 Mal
@Jockel: Noch eine Frage bevor ich das Thema in die FR Übersicht aufnehme:
Verstehe ich das richtig: Deine Sorge ist, dass der User "portainer" zu viele Rechte besitzt, so dass zumindest die Gefahr besteht, dass man sich mehrere Docker gegenseitig beschädigen können, denke dass die Docker keine root Rechte am TWS selbst besitzen.
Mit mehreren Usern könnte man die Rechte der Docker flexibler einschränken.
Trifft das den Hintergrund, oder liege ich hier weit daneben?
lg
Robert
Verstehe ich das richtig: Deine Sorge ist, dass der User "portainer" zu viele Rechte besitzt, so dass zumindest die Gefahr besteht, dass man sich mehrere Docker gegenseitig beschädigen können, denke dass die Docker keine root Rechte am TWS selbst besitzen.
Mit mehreren Usern könnte man die Rechte der Docker flexibler einschränken.
Trifft das den Hintergrund, oder liege ich hier weit daneben?
lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297
-
- Reactions:
- Beiträge: 431
- Registriert: Mo Aug 13, 2018 6:31 pm
- Hat sich bedankt: 199 Mal
- Danksagung erhalten: 147 Mal
Ja genau, das trifft es!
Die Docker container selbst sollten nicht als root laufen (wenn ich es richtig verstanden habe tun sie das auch nicht, sondern werden unter dem Benutzer "portainer" gestartet). Aber wenn alle Container und dem selben Benutzer laufen besteht die Gefahr der gegenseitigen Beeinflussung, insbesondere auch bei eventuellen Sicherheitslücken.
Den FR Request halte ich jetzt auch nicht für den allerwichtigsten überhaupt, denke aber schon, dass das irgendwann angegangen werden sollte. Aber nicht unbedingt bis zur 1.0.
Die Docker container selbst sollten nicht als root laufen (wenn ich es richtig verstanden habe tun sie das auch nicht, sondern werden unter dem Benutzer "portainer" gestartet). Aber wenn alle Container und dem selben Benutzer laufen besteht die Gefahr der gegenseitigen Beeinflussung, insbesondere auch bei eventuellen Sicherheitslücken.
Den FR Request halte ich jetzt auch nicht für den allerwichtigsten überhaupt, denke aber schon, dass das irgendwann angegangen werden sollte. Aber nicht unbedingt bis zur 1.0.
TWS 2500 ID: 145 + 1x TP-UART + 2x DS9490R, VPN geschlossen, Reboot nach Absprache / wiregate198 (im Ruhestand)