Patchmanagement Docker / Kubernetes

Gast #7179130
Lesenswert?

Wie stellt man eigentlich Patchmanagement in Docker Containern / 
Kubernetes Clustern sicher? Erstmal muss ich ja sicherstellen, dass ich 
immer das aktuellste Image nutze. Aber das reicht ja nicht. Ich weiß 
schließlich nicht, ob im Image auch die aktuellen Sicherheitsupdates des 
Betriebssystems installiert sind. Wie auditiere ich also den Patchstand 
und wie korrigiere ich ihn bei Bedarf?

Ein anderes Problem ist immer auf latest zu setzen. Ich merke dann gar 
nichts von Breaking Changes und bei irgendeinem (automatischen) Update 
fliegt mir alles auseinander.

Dann kommt noch dazu, dass bestimmte Images zum Beispiel eine ältere 
Datenbankserver Version brauchen. Ich muss also den Tag fix auf die 
Version setzen, erhalte dann aber für den Tag keine Sicherheitsupdates 
mehr. So ist das doch alles Murks!

Nehme ich dagegen ein nacktes Debian oder CentOS/Rocky/RHEL, dann 
kümmert sich jemand für mich darum, dass ich Updates recht sorglos 
automatisch machen kann. Breaking Changes werden zurückgehalten und 
Security Fixes nachgeliefert. Automatische Updates lassen sich nachts 
einfach installieren. Wie kann ich dieses Verhalten auch in Docker 
Images erreichen? Muss ich alle meine Images dann selber bauen?
#7179227
Lesenswert?

Laurenz schrieb:
> Nehme ich dagegen ein nacktes Debian oder CentOS/Rocky/RHEL, dann
> kümmert sich jemand für mich darum, dass ich Updates recht sorglos
> automatisch machen kann.

Richtig erkannt. Und wenn du deine eigene Applikation docketisieren 
willst, dann bist dieser Jemand du! Wer sonst soll wissen, was deine 
Applikation braucht?

Es gibt zwar ein paar Möglichkeiten den aktuellen Minor von 
Abhängigkeiten zu referenzieren - aber normalerweise sollte deine App ja 
nicht allzuviel brauchen und da musst du halt schauen, dass das aktuell 
ist und zusammenpasst.
#7179234
Lesenswert?

Laurenz schrieb:
> Ich muss also den Tag fix auf die
> Version setzen, erhalte dann aber für den Tag keine Sicherheitsupdates
> mehr. So ist das doch alles Murks!

"gute" Images bieten da Tags an, die auch auf kompatible Versionen mit 
Sicherheits-Updates passen.

z.B. mit "postgres:12" kriegst du kein ungefragtes Update auf 13 oder 
14, sondern die aktuelle 12.12er Version. Im Unterschied zu 
"postgres:12.12" kriegst du aber ein Update, sollte eine 12.13er-Version 
erscheinen.

Trotzdem:

Laurenz schrieb:
> Muss ich alle meine Images dann selber bauen?

Ja. Mehr oder weniger. Kannst auch irgendwo eine Grenze ziehen, welchen 
Projekten du zutraust, zeitnah Sicherheitsupdates zu integrieren, und ab 
welcher Ebene du selber baust.

Z.B. den Debian-Basis-Images vertrauen, darauf aufbauende Dockerfiles 
selber bauen lassen.
Gast #7179239
Lesenswert?

Jan H. schrieb:
> Laurenz schrieb:
>
>> Nehme ich dagegen ein nacktes Debian oder CentOS/Rocky/RHEL, dann
>> kümmert sich jemand für mich darum, dass ich Updates recht sorglos
>> automatisch machen kann.
>
> Richtig erkannt. Und wenn du deine eigene Applikation docketisieren
> willst, dann bist dieser Jemand du! Wer sonst soll wissen, was deine
> Applikation braucht?
> Es gibt zwar ein paar Möglichkeiten den aktuellen Minor von
> Abhängigkeiten zu referenzieren - aber normalerweise sollte deine App ja
> nicht allzuviel brauchen und da musst du halt schauen, dass das aktuell
> ist und zusammenpasst.

Thema verfehlt! Es geht mir nicht um meine Applikationen, sondern 0815 
turnkey images von beliebten Projekten wie nextcloud.
Gast #7179247
Lesenswert?

Laurenz schrieb:
> Thema verfehlt! Es geht mir nicht um meine Applikationen, sondern 0815
> turnkey images von beliebten Projekten wie nextcloud.

Tja, er hat aber schon alles gesagt. Du bist wohl etwas undankbar.

https://hub.docker.com/_/nextcloud/tags

Da könntest du Version 24 folgen wie er vorgeschlagen hat.

Was aber auch egal ist, denn die Container führend etwaige Upgrades 
automatisch durch:


Since all data is stored in volumes, nothing gets lost. The startup 
script will check for the version in your volume and the installed 
docker version. If it finds a mismatch, it automatically starts the 
upgrade process. Don't forget to add all the volumes to your new 
container, so it works as expected.

PS: Nextcloud ist Rotz, genauso Docker. Wenn dir Sicherheit wichtig ist 
würde ich auf alles mögliche setzen, aber garantiert kein Docker. Wenn 
schon Container, dann etwas wie LXC. Docker läuft selbst als Root, viel 
zu riskant die Geschichte...
Gast #7179272
Lesenswert?

Onkel Ted schrieb:
> Docker läuft selbst als Root, viel
> zu riskant die Geschichte...

systemd läuft selbst als Root, viel
zu riskant die Geschichte...

crond läuft selbst als Root, viel
zu riskant die Geschichte...

System IV init läuft selbst als Root, viel
zu riskant die Geschichte...

Soll ich weitermachen?
#7179420
Lesenswert?

Laurenz schrieb:
> Wie stellt man eigentlich Patchmanagement in Docker Containern /
> Kubernetes Clustern sicher?

Oh. Hans  VMFreak  <whatever>, bist Du wieder auf Deinem Kreuzzug 
gegen Docker, Kubernetes & Co.? Also wenn Du so ein Profi wärst, wie Du 
gerne behauptest, dann fielen Dir doch sicher aus dem Stehgreif zwanzig 
Lösungen dafür ein.

> Nehme ich dagegen ein nacktes Debian oder CentOS/Rocky/RHEL, dann

...nimm das doch. Dann mußt Du weder dieses Forum mit Deinen Ergüssen 
erfreuen und kannst immer tief und ruhig schlafen.
Gast #7179549
Lesenswert?

Oli Schulz schrieb:
> Onkel Ted schrieb:
>> Docker läuft selbst als Root, viel
>> zu riskant die Geschichte...
>
> systemd läuft selbst als Root, viel
> zu riskant die Geschichte...
>
> crond läuft selbst als Root, viel
> zu riskant die Geschichte...
>
> System IV init läuft selbst als Root, viel
> zu riskant die Geschichte...
>
> Soll ich weitermachen?

Die übernehmen alle die Isolation einer Anwendung vor anderen und dem 
Kernel? Interessant!

Man sollte ggf. einmal einen Artikel über die Architektur von Docker und 
z.B. LXD gelesen haben und/oder sich diese einfach selbst genauer einmal 
anschauen.

Eine Schwachstelle in den Isolationsmethoden des Kernels ist deutlich 
unwahrscheinlicher als eine im Docker Code.
Gast #7179678
Lesenswert?

Onkel Ted schrieb:
> Eine Schwachstelle in den Isolationsmethoden des Kernels ist deutlich
> unwahrscheinlicher als eine im Docker Code.

Die Aussage ist ein bisschen... unklug. Container sind keine 
Sicherheitstechnik (was man wissen würde, wenn man die Dokumentationen 
gelesen hätte), und sie nutzen (und konfigurieren) nur die 
Schnittstellen des Linux-Kernels, insbesondere Namespaces sowie Control 
Groups. Der "Docker Code" gerät auch gar nicht mit der Aussenwelt in 
Kontakt. Hast Du diesmal vielleicht was Klügeres als im anderen Thread?
Gast #7179679
Lesenswert?

Was ist falsch mit euch? Ich will nicht darüber diskutieren, ob hier 
irgendwas als Root läuft. Ich will vernünftige Konzepte um die 
Aktualität von Docker Images sicherzustellen.

Ein T. schrieb:
> Laurenz schrieb:
>> Wie stellt man eigentlich Patchmanagement in Docker Containern /
>> Kubernetes Clustern sicher?
>
> Oh. Hans  VMFreak  <whatever>, bist Du wieder auf Deinem Kreuzzug
> gegen Docker, Kubernetes & Co.? Also wenn Du so ein Profi wärst, wie Du
> gerne behauptest, dann fielen Dir doch sicher aus dem Stehgreif zwanzig
> Lösungen dafür ein.

Du scheinst jemand zu sein, der oft aneckt. Ich habe ja keine Ahnung mit 
wem du hier im Forum so alles irgendwelche Differenzen hast, aber es 
scheint dich ja schwer getroffen zu haben. Vielleicht nennst du ja mal 
eine deiner zwanzig Lösungen.

>> Nehme ich dagegen ein nacktes Debian oder CentOS/Rocky/RHEL, dann
>
> ...nimm das doch. Dann mußt Du weder dieses Forum mit Deinen Ergüssen
> erfreuen und kannst immer tief und ruhig schlafen.

Mein Gott. Das ist nicht das Thema. Damit habe ich viel Arbeit und die 
kann ich mir mit Turnkey Images ersparen. Also nenne mir doch bitte eine 
deiner 20 Lösungen und ich kann sogar mit fertigen Images ruhig 
schlafen. Wenn du das nicht kannst oder willst, dann bitte ich dich 
selber ruhig zu schlafen und deine Ergüsse in anderen Threads abzuladen. 
Du kannst mich dann auch gerne auf die Liste deiner Kreuzritter setzen.

Onkel Ted schrieb:
> Laurenz schrieb:
>> Thema verfehlt! Es geht mir nicht um meine Applikationen, sondern 0815
>> turnkey images von beliebten Projekten wie nextcloud.
>
> Tja, er hat aber schon alles gesagt. Du bist wohl etwas undankbar.

Du meintest wahrscheinlich den Post von Ernst B.? Der hat sich zeitlich 
mit meinem Post überschnitten. Ich bezog mich nur auf die erste Antwort.

Εrnst B. schrieb:
> Laurenz schrieb:
>> Ich muss also den Tag fix auf die
>> Version setzen, erhalte dann aber für den Tag keine Sicherheitsupdates
>> mehr. So ist das doch alles Murks!
>
> "gute" Images bieten da Tags an, die auch auf kompatible Versionen mit
> Sicherheits-Updates passen.
>
> z.B. mit "postgres:12" kriegst du kein ungefragtes Update auf 13 oder
> 14, sondern die aktuelle 12.12er Version. Im Unterschied zu
> "postgres:12.12" kriegst du aber ein Update, sollte eine 12.13er-Version
> erscheinen.

Ja, das ist sinnvoll. Ich habe da allerdings zwei Probleme. Vielleicht 
hat da jemand eine gute Lösung für. Erstens bekomme ich nicht mit, falls 
irgendwann Postgres 12 keine Updates mehr erhält. Ich bräuchte also eine 
Art Überwachung, ob ein Image in den letzen x Tagen aktualisiert wurde. 
Zweitens muss ich die Updates ja auch ausrollen. Ich muss also irgendwie 
einen automatischen Check laufen lassen und danach einen konkreten Tag 
setzen, da im Kubernetes Cluster ja sonst kein Rollout startet oder ein 
redeploy Auslösen. Gibt es da Tools für?

> Trotzdem:
>
> Laurenz schrieb:
>> Muss ich alle meine Images dann selber bauen?
>
> Ja. Mehr oder weniger. Kannst auch irgendwo eine Grenze ziehen, welchen
> Projekten du zutraust, zeitnah Sicherheitsupdates zu integrieren, und ab
> welcher Ebene du selber baust.
>
> Z.B. den Debian-Basis-Images vertrauen, darauf aufbauende Dockerfiles
> selber bauen lassen.

Ich halte es bisher so, dass ich ausschließlich offizielle Images der 
jeweiligen Projekte verwende. Ich denke, dass das ein ganz guter 
Kompromiss ist. Speziellere Dinge baue ich mit einer CI/CD Pipeline aus 
genannten Gründen in Gitlab selbst. Wenn aber ein Image offensichtlich 
keine Updates für das Betriebssystem erhält, ist es raus.
#7179741
Lesenswert?

Laurenz schrieb:
> Ich muss also irgendwie
> einen automatischen Check laufen lassen und danach einen konkreten Tag
> setzen, da im Kubernetes Cluster ja sonst kein Rollout startet oder ein
> redeploy Auslösen. Gibt es da Tools für?

Ich setze da seit einiger Zeit auf https://keel.sh/.

Pro Deployment konfiguriere ich da jeweils mit Annotationen ein 
Updateintervall, welches alle X Tage auf eine neue Minor Version prüft 
und diese dann automatisch einspielt bzw. mir Bescheid gibt (Je nach 
Wichtigkeit der Anwendung). Für interne Anwendungen kann zusätzlich auch 
ein Redeployment per Webhook ausgelöst werden (z.B. aus einem CI/CD 
Job).

Zusätzlich kann man sich mit Keel auch Benachrichtigungen senden lassen, 
wenn z.B. ein Update ansteht oder nachdem es eingespielt wurde. Klappt 
bislang sehr gut, nur muss man sich natürlich auch auf die Quelle des 
Images verlassen können.
Gast #7180038
Lesenswert?

Ntldr -. schrieb:
> Ich setze da seit einiger Zeit auf https://keel.sh/.
>
> Pro Deployment konfiguriere ich da jeweils mit Annotationen ein
> Updateintervall, welches alle X Tage auf eine neue Minor Version prüft
> und diese dann automatisch einspielt bzw. mir Bescheid gibt (Je nach
> Wichtigkeit der Anwendung). Für interne Anwendungen kann zusätzlich auch
> ein Redeployment per Webhook ausgelöst werden (z.B. aus einem CI/CD
> Job).

Das sieht sehr interessant aus. Werde ich mir auf jeden Fall mal 
ansehen. Dann fehlt mir eigentlich nur noch ein Audit Tool, um das Alter 
der deployten Images zu überwachen.
Gast #7180515
Lesenswert?

Ein T. schrieb:
> Oh. Hans  VMFreak  <whatever>, bist Du wieder auf Deinem Kreuzzug
> gegen Docker, Kubernetes & Co.? Also wenn Du so ein Profi wärst, wie Du
> gerne behauptest, dann fielen Dir doch sicher aus dem Stehgreif zwanzig
> Lösungen dafür ein.

Ach sieh an, der Schaumschläger ist wieder da.

Laurenz schrieb:
> Du scheinst jemand zu sein, der oft aneckt. Ich habe ja keine Ahnung mit
> wem du hier im Forum so alles irgendwelche Differenzen hast, aber es
> scheint dich ja schwer getroffen zu haben. Vielleicht nennst du ja mal
> eine deiner zwanzig Lösungen.

Der hat keine einzige Lösung. Keine Ahnung, ob er Docker und Kubernetes 
wirklich so durch die rosa Blümchenbrille sieht oder er einfach nur ein 
Troll ist. Aber mit konkreten Problemen konfrontiert kontert er 
bestenfalls mit unpassenden Links. Den kannst du getrost ignorieren.
Gast #7184415
Lesenswert?

Habe keel jetzt im Einsatz. Scheint soweit nun stabil zu funktionieren. 
Auch den Webhook für die Integration in CI/CD Pipelines ist sehr 
praktisch.

Was noch fehlt ist ein Audit, welche Images zu alt sind, aber da teste 
ich schon.

Huch schrieb:
> Laurenz schrieb:
>> Du scheinst jemand zu sein, der oft aneckt. Ich habe ja keine Ahnung mit
>> wem du hier im Forum so alles irgendwelche Differenzen hast, aber es
>> scheint dich ja schwer getroffen zu haben. Vielleicht nennst du ja mal
>> eine deiner zwanzig Lösungen.
>
> Der hat keine einzige Lösung. Keine Ahnung, ob er Docker und Kubernetes
> wirklich so durch die rosa Blümchenbrille sieht oder er einfach nur ein
> Troll ist. Aber mit konkreten Problemen konfrontiert kontert er
> bestenfalls mit unpassenden Links. Den kannst du getrost ignorieren.

Hast recht, der hatte außer heißer Luft echt nichts beizutragen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren