Become a Creator today!Start creating today - Share your story with the world!
Start for free
00:00:00
00:00:01
Secrets Not Included: Secret Handling  image

Secrets Not Included: Secret Handling

S1 E2 · Secrets Not Included
Avatar
32 Plays1 month ago

Wir sprechen in dieser Folge wie wir mit Serects umgehen und welche Do's und Don'ts es gibt. 

Transcript

Einleitung und Themeneinführung

00:00:01
Kai Ole Hartwig
Ja, willkommen zur zweiten Folge Secrets Not Included.
00:00:05
Kai Ole Hartwig
Wieder Daniel und Ole hier.

Diskussion über SOPS und Verschlüsselung

00:00:08
Kai Ole Hartwig
Und wir haben uns gedacht, wir sprechen heute mal über Secrets und Geheimnisse.
00:00:13
Daniel Langemann
Genau.
00:00:14
Kai Ole Hartwig
Einfach frei raus, was machen wir da und verraten jetzt doch alle Geheimnisse.
00:00:17
Kai Ole Hartwig
Oder Daniel?
00:00:18
Kai Ole Hartwig
Ja.
00:00:19
Daniel Langemann
Ja, genau.
00:00:19
Daniel Langemann
Alles wird öffentlich, wie es sich nicht gehört.
00:00:22
Daniel Langemann
Ne, das passt ja zum Titel.
00:00:24
Daniel Langemann
Und wir hatten uns vorhin schon zusammengesetzt und darüber gesprochen, was für Themen könnten interessant sein, was wollen wir erzählen, was wollen wir nicht erzählen.
00:00:35
Daniel Langemann
Und dabei ist eigentlich die Abkürzung SOPS gefallen.
00:00:41
Daniel Langemann
Und ich habe keinen Plan, was das ist.
00:00:41
Kai Ole Hartwig
Genau.
00:00:44
Kai Ole Hartwig
SOPS ist eigentlich ein schönes Tool, um Secrets zu verschlüsseln.
00:00:48
Kai Ole Hartwig
Also Secrets Operations heißt es.
00:00:52
Kai Ole Hartwig
Ist, glaube ich, ursprünglich von Mozilla entwickelt worden und
00:00:58
Kai Ole Hartwig
Kurz gesagt, kannst du damit alle Secrets mit zum Beispiel AID, PGP oder auch HashiCorp Vault entsprechend verschlüsseln und nachher auch wieder entschlüsseln.
00:01:16
Daniel Langemann
Achso, das bezeichnet also eine Toolgruppe, so wie ich jetzt AWS Secrets Manager oder Parameter Store, jetzt HashiCorp Vault kenne ich auch.
00:01:25
Kai Ole Hartwig
Genau, das
00:01:25
Daniel Langemann
Das bezeichnet die Toolgruppe also.
00:01:27
Daniel Langemann
Okay.
00:01:27
Daniel Langemann
Okay.
00:01:28
Kai Ole Hartwig
Ja, also keine Toolgruppe, sondern es ist halt ein CLI-Tool, um Secrets zu managen oder vielmehr um Dateien zu verschlüsseln und entschlüsseln mit einem Key deiner Wahl.
00:01:45
Kai Ole Hartwig
Und dabei fällt dann halt eine Datei raus, die ist verschlüsselt, die kannst du im Git tracken für GitOps nutzen und dann kann aber dein Secret nicht jeder lesen.
00:01:59
Daniel Langemann
Ja, also basierend auf asynchroner Verschlüsselung.
00:02:04
Daniel Langemann
Immer nach dem Konzept, es gibt ein Public und Private Key.
00:02:07
Daniel Langemann
Public liegt im Projekt mit drin.
00:02:10
Daniel Langemann
Ich kann sagen, ich möchte das Datenpasswort ändern, schreibe es rein, es wird verschlüsselt, im Git abgelegt.
00:02:18
Daniel Langemann
Und auf dem Zielsystem liegt irgendwo wirklich abgesichert dann der Private Key, wo das dann sozusagen zur Laufzeit entschlüsselt wird und möglichst wenig Credentials irgendwo rumliegen, sage ich mal.
00:02:30
Daniel Langemann
Oder?
00:02:30
Kai Ole Hartwig
Umgekehrt, zum Verschlüsseln den Private Key, zum Entschlüsseln den Public Key, oder?
00:02:40
Daniel Langemann
Nein, der sollte ja...
00:02:41
Kai Ole Hartwig
Warte mal, wir müssen das schneiden.
00:02:44
Daniel Langemann
Nein, nein, genau das ist es doch.
00:02:46
Daniel Langemann
Also asynchrone Verschlüsselung funktioniert ja in beide Richtungen.
00:02:50
Kai Ole Hartwig
Genau.
00:02:50
Daniel Langemann
Wenn ich den Private Key... Moment, was habe ich jetzt gesagt?
00:02:55
Daniel Langemann
Ich habe genau falschrum gesagt, ne?
00:02:56
Daniel Langemann
Ich habe die... Ja.
00:02:57
Kai Ole Hartwig
Also du wolltest mit dem Public Key verschlüsseln und mit dem Private Key entschlüsseln.
00:03:00
Daniel Langemann
Ja.
00:03:00
Kai Ole Hartwig
Ich würde gerne mit dem Private Key verschlüsseln und mit dem Public Key entschlüsseln.
00:03:05
Daniel Langemann
Genau so möchte ich das aber, weil nur das Produktivsystem soll ja sehen, welche Passwörter
00:03:13
Daniel Langemann
in unserem Git-Repo drin liegen.

Sicherheit und Zugangsbeschränkungen

00:03:15
Daniel Langemann
Und mal abgesehen jetzt von dem Fall selber, Public und Private Key funktioniert ja so, aus der E-Mail-Verschlüsselung oder Signaturen genauso, ist ja so, wenn ich diesen Private Key habe, den ich nirgendwo rausgeben darf, kann ich mich ja authentifizieren als Nutzer XY, wenn derjenige meinem Private Key vertraut.
00:03:34
Daniel Langemann
Heißt, mir können alle Menschen eine E-Mail schicken und verschlüsseln und ich bin der Einzige, der sie mit diesem Private Key entschlüsseln kann.
00:03:43
Kai Ole Hartwig
Stimmt, du hast absolut recht und ich sollte vielleicht kein Secret Management mit Kopfschmerzen machen.
00:03:49
Kai Ole Hartwig
Ja, natürlich, natürlich.
00:03:50
Daniel Langemann
Das haben wir extra eingebaut zum Zeigen und damit ich was erklären kann.
00:03:53
Kai Ole Hartwig
Ja, du hast selbstverständlich an der Stelle recht.
00:03:53
Daniel Langemann
Genau.
00:03:57
Kai Ole Hartwig
Die Secrets sollte man nur entschlüsseln können, wenn man den passenden Key hat.
00:04:03
Kai Ole Hartwig
So, das war's, fertig.
00:04:06
Kai Ole Hartwig
Und alle Secrets sind sicher, weil wir haben sie jetzt dann doch irgendwie im Git getrackt, obwohl es ja eigentlich Best Practice ist, die gar nicht ins Git zu schmeißen.
00:04:16
Kai Ole Hartwig
Vom Grundsatz her möchte man ja eigentlich gar keine Geheimnisse im Git haben.
00:04:23
Kai Ole Hartwig
Das geht aber ja explizit und unumstößlich für nicht verschlüsselte Geheimnisse.
00:04:32
Daniel Langemann
Also einfach mit dem Hintergrund, ich möchte zum Beispiel im Produktivsystem das Datenbank-Passwort polieren können.
00:04:40
Daniel Langemann
Bei AWS gibt es die Möglichkeit, viele andere machen das auch.
00:04:43
Daniel Langemann
Täglich, wöchentlich, was auch immer, zu gewissen Uhrzeiten ändert sich das Passwort, ohne dass die Applikation irgendwie neu deployed werden muss oder dass ein Entwickler das theoretisch dann committen müsste, pushen müsste, ein Deployment machen müsste.
00:04:55
Daniel Langemann
Das wäre ja viel zu umständlich und genau deswegen möchte man auch noch, also mal abgesehen von dem Sicherheitsfaktor, auch die Secrets nicht im Projekt haben, damit die einfach geändert werden können.
00:05:05
Daniel Langemann
Oder zum Beispiel auch Entwickler.
00:05:09
Daniel Langemann
Ich als Entwickler muss keine Credentials für irgendwelche Produktivsysteme haben.
00:05:13
Daniel Langemann
Ich muss nicht auf Kundendaten zugreifen können, das ist oft auch ein Sicherheitsproblem.
00:05:18
Daniel Langemann
Ich darf nicht in der Datenbank suchen können nach Nutzern, die mich nichts angehen.
00:05:23
Daniel Langemann
Und oft ist es so in größeren Teams, dass Ops, also Operations, sich um Credentials, um Betrieb kümmert.
00:05:30
Daniel Langemann
Da ist protokolliert mit Zugriff und, und, und, wer wann wo wie darauf zugreifen darf.
00:05:36
Daniel Langemann
Und ich als Entwickler habe eine Testdatenbank mit unkritischen Daten oder mit irgendwelchen Feature-Daten.
00:05:39
Kai Ole Hartwig
Vielen Dank.
00:05:43
Daniel Langemann
Und kann die dann nacharbeiten und möchte auch gar nicht.
00:05:46
Daniel Langemann
Also umgekehrt genauso, wenn es irgendwann mal einen Sicherheitsvorfall gibt, bin ich als Entwickler sogar froh, einfach gar nicht zum Kreis der Verdächtigen zu gehören, weil ich nie diese Credentials in der Hand hatte oder hätte haben können.
00:05:59
Kai Ole Hartwig
Ja, ich finde, es ist auch immer total schön, Cludentials gar nicht zu kennen.
00:06:03
Kai Ole Hartwig
Also wenn ich die Passwörter nicht kenne und gar keinen Zugriff auf diese Systeme haben kann, bedeutet das auch, ich kann die nie verlieren.
00:06:12
Daniel Langemann
Ja, genau.
00:06:13
Kai Ole Hartwig
Ja, also ob absichtlich oder unabsichtlich.
00:06:17
Kai Ole Hartwig
Stell dir mal vor, du hast die Sachen einfach so im Git liegen oder meinetwegen auch eine Kopie vom Produktivsystem runtergezogen, hast jetzt alle Bestellungen zum Beispiel aus dem Shop bei dir liegen oder alle Kontaktanfragen mit allen personenbezogenen Daten und durch einen dummen Zufall vergisst du deinen USB-Stick in der Bahn, wo diese Daten drauf waren.

Best Practices und humorvolle Anekdoten

00:06:43
Kai Ole Hartwig
So.
00:06:44
Daniel Langemann
Lustige Geschichte dazu.
00:06:45
Daniel Langemann
Stell dir mal, du testest einen Newsletter lokal und nutzt dann aus Versehen mal richtige Credentials für ein Produktivsystem und sendest diese Newsletter raus.
00:06:56
Daniel Langemann
Und wenn du dann auch noch Pech hast und dann irgendwie, sagen wir mal, ein Geschlechtsteil als irgendwie Titel oder so nutzt, dann geht das an Kunden raus.
00:07:05
Daniel Langemann
Das ist sehr peinlich, aber eine coole Geschichte für Jahre später zum Erzählen.
00:07:09
Daniel Langemann
Also...
00:07:12
Kai Ole Hartwig
Ich frage jetzt nicht, wie du auf diese Geschichte kommst und wie der Titel dieses Newsletters zustande gekommen ist.
00:07:16
Daniel Langemann
Ja.
00:07:16
Daniel Langemann
Ja, ja.
00:07:16
Daniel Langemann
Das wäre mal ein anderes Thema.
00:07:17
Daniel Langemann
Oh ja.
00:07:17
Daniel Langemann
Ja.
00:07:21
Kai Ole Hartwig
Aber definitiv, wir haben also Dinge, die man nicht hat, kann man nicht verlieren und nicht seltsam benutzen.
00:07:34
Kai Ole Hartwig
Ja, wäre nächste Woche dann, übernächste Woche dann das Thema, warum der Newsletter so hieß, wie er hieß?
00:07:43
Kai Ole Hartwig
Okay.
00:07:47
Kai Ole Hartwig
Ich meine, das ist ja auch so ein Grundgedanke, an den man sich vielleicht auch so ein bisschen gewöhnen muss, wenn man etwas kleinere Projekte hat oder übersichtlichere Teams, dass
00:08:01
Kai Ole Hartwig
Secrets halt auch einfach nicht in den produktiven Container gehören, dass sie immer von außen reinkommen sollten.
00:08:09
Kai Ole Hartwig
Und auch an der Stelle ist ja SOPS auch so ein bisschen, also ich finde, das ist eine schöne Lösung für etwas kleinere Setups, wo ich halt nicht zur Laufzeit meines Secrets direkt reingeben kann.
00:08:25
Daniel Langemann
Mhm.
00:08:26
Kai Ole Hartwig
Also ich persönlich bevorzuge halt irgendwie ein Vault oder ein anderes Secret-Management, meinetwegen über einen Sidecar-Container in der Laufzeitumgebung, um ehrlich zu sein, als dass ich sage, ja, okay, jetzt habe ich das in der Daten, im Git liegen meine Secrets und dann schlüssel ich die und gebe die dann rein.
00:08:48
Kai Ole Hartwig
Ja, ich finde das immer total sympathisch, Secrets quasi nur in der Runtime zu haben,
00:08:56
Kai Ole Hartwig
in dem Web-Container zum Beispiel, der sie braucht.
00:09:00
Kai Ole Hartwig
Und dann, ich sage jetzt mal, nicht über Environment-Variablen oder ähnliches rumliegen zu haben, damit halt auch da nicht über irgendeinen Dump oder Mitschnitt vom Log halt diese Secrets rauskommen können.
00:09:19
Daniel Langemann
Mhm.
00:09:19
Daniel Langemann
Yep.
00:09:20
Kai Ole Hartwig
Man hält die halt schön raus und damit macht man halt auch Secret Management einfach.
00:09:25
Kai Ole Hartwig
Ja, ich meine, klar, so kannst du halt auch einfach neu deployen, hast neue Secrets drin, alles cool.
00:09:33
Kai Ole Hartwig
Aber so ein losgelöstes Tool, das dann vielleicht auch selbstständig da läuft, wo du Regeln definieren kannst mit, hey, okay, gut, hier alle fünf Minuten.
00:09:41
Kai Ole Hartwig
Bisschen übertrieben, aber
00:09:44
Kai Ole Hartwig
rotiere halt alle 30 Tage hier diese Daten und alle x Tage die anderen Daten.

Geheimnisverwaltung in der Praxis

00:09:53
Kai Ole Hartwig
Das erhöht halt ja auch nochmal die Sicherheit einfach, dass wenn alles ordnungsgemäß konfiguriert ist und einfach das Secret Management da läuft, abgeschottet ist und so weiter, dass
00:10:07
Kai Ole Hartwig
selbst wenn mal Daten verloren gehen, die einfach nicht langlebig sind, nicht langlebig, wenn Zugriff darauf möglich ist, dann hat halt mal jemand für x Tage Zugriff gehabt, das ist schlimm genug, aber wir haben eine Maßnahme und eine Methode, die durch Regelmäßigkeit dafür sorgt, dass der Schaden kleiner bleibt.
00:10:11
Daniel Langemann
Ja, es geht ja auch nicht darum, oh sorry.
00:10:30
Kai Ole Hartwig
So, jetzt muss... Ne, ne, mach ruhig.
00:10:34
Daniel Langemann
Es geht ja auch nicht darum, wirklich hundertprozentige Sicherheit, die gibt es nicht.
00:10:34
Kai Ole Hartwig
Da bricht mich.
00:10:38
Daniel Langemann
Nichts ist hundertprozentig sicher.
00:10:40
Daniel Langemann
Es geht ja nur darum, mit den Maßnahmen es möglichst schwer zu machen.
00:10:46
Daniel Langemann
Zum Beispiel an Credentials zu kommen, in Systeme reinzukommen,
00:10:50
Daniel Langemann
Auch Verschlüsseln, sagen wir mal, wenn man genug Rechenleistung im Hintergrund hat und es ist eine schlechte Verschlüsselung gewählt, kann man solche Sachen auch aushebeln.
00:10:59
Daniel Langemann
Es gibt genug Einwände, wo man sagen könnte, ist auch das Verschlüsseln zur Laufzeit, wenn jemand Zugriff auf den Container hat zum Beispiel, irgendwo müssen die Sachen ja auch wieder entschlüsselt sein und sind dann auch zugreifbar.
00:11:11
Kai Ole Hartwig
Genau.
00:11:11
Daniel Langemann
Aber es ist halt so, die liegen nicht leicht zugänglich.
00:11:15
Daniel Langemann
Also das beste Beispiel ist einfach den Schlüssel unter die Fußmatte legen.
00:11:18
Daniel Langemann
Das wollen wir nicht.
00:11:19
Daniel Langemann
Also es soll eine vernünftige Tür da sein, die Fenster sollen zu sein.
00:11:23
Daniel Langemann
Wir wollen den Schlüssel nicht unter die Fußmatte legen, damit derjenige gar nicht, also es nicht leicht hat, ins System zu kommen.
00:11:28
Daniel Langemann
Und je mehr man macht, umso besser ist auch oft die Sicherheit.
00:11:32
Daniel Langemann
Mhm.
00:11:33
Kai Ole Hartwig
Ich glaube gar nicht je mehr, sondern je durchdachter, finde ich.
00:11:37
Kai Ole Hartwig
Also ich meine, es hilft jetzt ja nicht, alles Mögliche draufzuschmeißen und zu verstecken und zu sagen, ja, meinen SSH-Port, den lege ich jetzt von 22 auf 2222 oder irgendwie sowas und ich ändere alle Standards-Ports und so, da geht es ja gar nicht drum.
00:11:59
Kai Ole Hartwig
Also Sachen verstecken, ähm,
00:12:03
Kai Ole Hartwig
Hilft ja nicht.
00:12:04
Kai Ole Hartwig
Irgendwann findet man, wenn man lang genug sucht und wir können automatisch suchen.
00:12:10
Kai Ole Hartwig
Das ist nicht wie, wenn ich den Hausschlüssel finden muss, unter welchem Blumenpott steht.
00:12:15
Kai Ole Hartwig
Liegt der jetzt, weil unter der Hausmatte wollte ich ihn ja nicht, sondern das funktioniert ja gleichzeitig und automatisch.
00:12:23
Kai Ole Hartwig
Sprich, ich finde, das ganze Secret Management und welche Sicherheitsmaßnahmen man macht, sollte halt durchdacht sein.
00:12:31
Kai Ole Hartwig
Ja, auch so etwas wie, hey, wenn ich von außen komme, dann komme ich halt grundsätzlich nur über meine beiden Ports, die dafür vorgesehen sind.
00:12:42
Kai Ole Hartwig
80 und von 80 werde ich auf 443 auf HTTPS umgeleitet und dann ist das meine Zugriffsmöglichkeit.
00:12:49
Kai Ole Hartwig
Und wenn ich dann auch nur mit der Route nur auf den Webserver draufkomme und auf gar nichts, was dahinter liegt, alles andere muss da durchlaufen, dann ist ja schon mal ein deutlicher Schritt gemacht.
00:13:01
Kai Ole Hartwig
Ja, da müsste ich ja einen Weg finden, in diesen Container reinzukommen oder in dieses System reinzukommen und von dort aus weiterzukommen.
00:13:11
Kai Ole Hartwig
Klar, wenn ich es geschafft habe, reinzukommen, dann ist es immer noch schön, wenn es, ähm,
00:13:18
Kai Ole Hartwig
Maßnahmen gibt es, die dafür sorgen, dass es schwierig ist, drinnen zu bleiben.
00:13:22
Daniel Langemann
Ja.
00:13:23
Kai Ole Hartwig
Oder schwierig ist halt, die Credentials auszulesen, weil man sie halt nicht einfach mit Print Env oder so ausgeben kann.
00:13:32
Kai Ole Hartwig
Und das sind ja so diese Schritte, wenn man, ich finde, wenn man so ein paar durchdachte Dinge tut,
00:13:38
Kai Ole Hartwig
dann erhöht man halt die Sicherheit auch unfassbar.
00:13:41
Kai Ole Hartwig
Ja, wie zum Beispiel, dass auch einfach nur ein Entry Point, eine Index-PHP, da liegt in diesem Public-Verzeichnis und alles andere liegt außerhalb von dem Web-Root, dann erhöht das halt auch schon mal die Wahrscheinlichkeit,
00:13:55
Kai Ole Hartwig
das erhöht den Aufwand darauf zuzugreifen und die Wahrscheinlichkeit, dass einfach eine Sicherheitslücke ausgenutzt werden kann.
00:14:04
Kai Ole Hartwig
Selbst wenn sie drin ist, muss man halt nochmal eine Schippe drauflegen, um sie ausnutzen zu können.
00:14:04
Daniel Langemann
Mhm.
00:14:10
Kai Ole Hartwig
Und ich sage jetzt mal, je mehr Schichten,
00:14:16
Kai Ole Hartwig
von so einem Emmentaler mit den großen Löchern du aufeinanderlegst.
00:14:20
Kai Ole Hartwig
Je undurchlässiger wird das ja.
00:14:22
Kai Ole Hartwig
Wenn du das dann irgendwann hochhältst, siehst du ja auch keine direkte Lücke mehr.
00:14:26
Kai Ole Hartwig
Da sind zwar überall Löcher drin, aber die verdecken sich halt gegenseitig und dann kannst du halt nicht durchschauen.
00:14:34
Kai Ole Hartwig
Und, ähm,
00:14:37
Kai Ole Hartwig
Ich finde, das ist eigentlich ein schönes Bild aus Maßnahmen, die man machen kann, wozu halt auch das Secret Management einfach als eine Ebene da drin gehört, zusammen mit der Secret Rotation.
00:14:48
Kai Ole Hartwig
Wir wissen ja eigentlich auch, langlebige Credentials sind halt das höchste Risiko.
00:14:53
Daniel Langemann
Mhm.
00:14:54
Kai Ole Hartwig
Wenn wir so ein API Key nie ändern über ein Jahr oder noch länger,
00:14:58
Kai Ole Hartwig
dann geht er halt mit hoher Wahrscheinlichkeit dann doch irgendwann mal verloren.
00:15:02
Kai Ole Hartwig
Und da finde ich das total wichtig.
00:15:06
Kai Ole Hartwig
Jetzt gehen wir beide natürlich wieder davon aus, dass wir in einer schönen, containerisierten Welt sind, in der wir sowas haben.
00:15:18
Kai Ole Hartwig
Ich finde, da ist es deutlich schwieriger mit umzugehen,
00:15:22
Kai Ole Hartwig
wenn wir halt auf einem Standard-V-Host-Setup oder Shared-Setup sind.
00:15:30
Daniel Langemann
Ja, ja.
00:15:31
Kai Ole Hartwig
Weil da wird es natürlich sehr, sehr schwierig, das oder schwieriger, entsprechende Maßnahmen zu machen.
00:15:41
Kai Ole Hartwig
Einfach weil du dann ja in der Situation bist, alles liegt auf dem gleichen Ding drauf.
00:15:48
Daniel Langemann
Also da bieten sich ja dann von HashiCorp Vault, AWS Parameter Store oder Secrets Manager schon fast an, weil die recht einfach einzubauen sind,
00:16:00
Daniel Langemann
zur Laufzeit die Daten abrufen, heißt auf dem V-Host, wie auch immer geartet, liegen die nicht permanent auf der Platte, sondern maximal in einem Cache, den man natürlich auch mit Schreibrechten und so weiter auch nochmal absichern sollte.
00:16:16
Daniel Langemann
Aber das ist schon mal ein guter Schritt, dass man dann die Credentials da drin hat und nicht in Umgebungsvariablen, wo andere Applikationen darauf zugreifen könnten oder in Dateien zum Beispiel.
00:16:27
Daniel Langemann
Das wäre ja so ein bisschen der Super-GAU.
00:16:30
Daniel Langemann
Es gibt auch für kleinere Projekte, also wenn man die Komplexität nicht explodieren lassen will, weil nicht jeder hat oder nicht jede Firma hat dann noch einen AWS-Account, wo jeder Zugriff drauf hat und wo das verwaltet wird, wo man sowas machen kann.
00:16:41
Daniel Langemann
Also zum Beispiel von Symfony gibt es das auch.
00:16:45
Daniel Langemann
dass man Secrets verwalten kann.
00:16:47
Daniel Langemann
Genau nach diesem Konzept mit Public Key, Private Key.
00:16:51
Daniel Langemann
Man müsste jetzt bei diesem V-Host natürlich gucken, was macht man mit diesem Private Key, damit theoretisch nur die eine Applikation darauf zugreifen kann.
00:17:01
Daniel Langemann
mit wem teilt man sich das?
00:17:02
Daniel Langemann
Ist man der alleinige Herrscher auf dem System oder gibt es da andere Abteilungen, die nicht zugreifen sollen?
00:17:08
Daniel Langemann
Das wäre natürlich alles interessant, aber in meiner kleinen idealen Welt bin ich alleine dafür zuständig, habe als einziger Handgriff drauf und dann könnte man zum Beispiel auch sowas, also ohne die Komplexität mit externen Tools in die Höhe zu treiben, sowas machen oder habe ich auch schon mal selber gebaut für ein Projekt, auch kleines Projekt, genau diese Konstellation.
00:17:15
Kai Ole Hartwig
Vielen Dank.

Herausforderungen beim Testen und Entwicklungen

00:17:28
Daniel Langemann
Ich habe die Kontrolle über den Host,
00:17:31
Daniel Langemann
Ich will die nicht im Git drin haben, die Credentials, also nicht im Klartext drin haben, genau das Spielchen mit GPG, einfach lokal mit dem Public Key Sachen verschlüsselt, die Datei mit eingecheckt, beim Auschecken zur Laufzeit einfach mit dem Private Key dann
00:17:47
Daniel Langemann
entschlüsselt, in den Cache abgelegt und also wenn er halt, wenn der Cache leer war oder ein Cache miss war, einmal entschlüsselt, das war ein bisschen länger natürlich, nicht optimal, was Ladezeiten betrifft, aber das war einer von zigtausend Requests, also das war in Ordnung.
00:17:51
Kai Ole Hartwig
Ja.
00:18:03
Daniel Langemann
Und dann hat man da eigentlich auch schon ein sehr gutes Setup, ohne dass man irgendwie Großunternehmenskontext unterwegs ist, wo man eine eigene Operations-Abteilung hat und die einem da auch dann zuarbeitet.
00:18:15
Kai Ole Hartwig
Ja, aber ich finde tatsächlich, dieses Secret-Management auf V-Host ist halt sehr schwierig, weil alles ist im gleichen Ding.
00:18:24
Kai Ole Hartwig
Irgendwie hat dann doch dieser V-Host-User Zugriff auf alles.
00:18:28
Daniel Langemann
Mhm.
00:18:32
Kai Ole Hartwig
Da wird es glaube, also ich finde, das ist immer so das, wo ich sage, okay, alle Konzepte, die wir so normalerweise fahren und machen, ähm,
00:18:42
Kai Ole Hartwig
die werden da schwierig.
00:18:44
Kai Ole Hartwig
Wofür verschlüssel ich irgendwo ein Secret, wenn ich den Key quasi daneben legen muss und jeder kommt da dran?
00:18:54
Kai Ole Hartwig
Ich sage jetzt mal für den ungeübten, nicht Linux-affinen Menschen, der da draufkommt, falls es das denn gibt,
00:19:06
Kai Ole Hartwig
wäre das sicherlich zumindest, also man sucht zumindest ein bisschen, bis man das entschlüsselt, bis man den Key gefunden hat.
00:19:13
Kai Ole Hartwig
Fünf Minuten.
00:19:16
Kai Ole Hartwig
Aber, ja, bedeutet halt, es ist zumindest ein Schutz da, dass ein Entwickler die Dinge nicht so einfach verliert.
00:19:28
Kai Ole Hartwig
Oder nicht unverschlüsselt verliert.
00:19:31
Daniel Langemann
Um bei unserer Metapher zu bleiben, wir haben einen großen Stein auf die Matte gelegt.
00:19:31
Kai Ole Hartwig
Ja.
00:19:34
Daniel Langemann
Ja.
00:19:35
Kai Ole Hartwig
Ja, immerhin.
00:19:36
Kai Ole Hartwig
Immerhin den großen, ne?
00:19:37
Kai Ole Hartwig
Aber ich meine, ich finde ja auch Schlüssel im Blumentopf viel sympathischer als eine Löffnungsmatte.
00:19:49
Daniel Langemann
Ja.
00:19:50
Daniel Langemann
Aber nicht, wenn es friert.
00:19:50
Daniel Langemann
Mhm.
00:19:51
Daniel Langemann
Genau.
00:19:54
Kai Ole Hartwig
Das kommt halt drauf an, wo der Topf steht.
00:19:57
Kai Ole Hartwig
Oder die Fußmatte.
00:19:58
Kai Ole Hartwig
Naja, wenn das schön wettergeschützt ist, ist das vielleicht eine Option.
00:20:05
Daniel Langemann
Ich werde mal bei dir vorbeifahren und gucken.
00:20:07
Daniel Langemann
Ja, mache ich.
00:20:08
Daniel Langemann
Ja.
00:20:08
Kai Ole Hartwig
Mach das, mach das, bitte.
00:20:13
Kai Ole Hartwig
Und wenn du dann vor der Tür stehst, schön lächeln für die Kamera und winken.
00:20:18
Kai Ole Hartwig
Gut.
00:20:24
Kai Ole Hartwig
Heißt, aber wir beide sind großer Fan davon, Secrets nicht zu kennen, Credentials nicht zu kennen.
00:20:36
Kai Ole Hartwig
und sind auch damit glücklich und fein, wenn wir gar keine Produktivdaten haben, weil wir beide eigentlich gerne Dinge verlieren, das aber nicht so sagen.
00:20:48
Daniel Langemann
Exakt.
00:20:49
Kai Ole Hartwig
Perfekt.
00:20:51
Daniel Langemann
Gerade das Verlieren ist schlimm.
00:20:57
Daniel Langemann
Ja, es ist so.
00:20:58
Daniel Langemann
Also, dass etwas schief geht, kannst du nie ausschließen.
00:21:05
Daniel Langemann
Ich habe schon so viele Sachen gemacht, wo ich entweder Glück hatte, dass es nicht schiefgegangen ist, als Junior zum Beispiel, weil man einfach Sachen ausprobiert hat, wo man dann im Nachhinein sagt, mein Gott, das hätte wirklich schiefgehen können, weil da war ein Produktiv... Also, das beste Beispiel ist immer, du musst ein Produktivsystem, irgendwelche Credentials nutzen, weil es deine Applikation...
00:21:19
Kai Ole Hartwig
Ja.
00:21:30
Daniel Langemann
Meistens ist es mit Paymentsachen, es gibt oft keine Testumgebung fürs Payment oder das Testsystem ist irgendwie anders konfiguriert.
00:21:39
Daniel Langemann
Ja, natürlich macht man das.
00:21:40
Daniel Langemann
Man kopiert sich dann Credentials in seine lokale Entwicklungsumgebung und macht irgendwas, überlegt gerade nicht, schmeißt nochmal die End-to-End-Tests an und die klicken ja natürlich durch und kaufen, wie blöd.
00:21:51
Daniel Langemann
Und auf einmal läuft das Ding los und versucht dann irgendwie x Bestellungen zu machen und Fraud Detection schlägt natürlich im Produktivsystem an.
00:21:59
Daniel Langemann
Man sagt so, edgy badg, guck mal, vielleicht sind die Credentials weg und auf einmal funktioniert der Shop nicht.
00:22:04
Daniel Langemann
weil ich lokal natürlich ein Brute Force sozusagen auf das Produktivsystem Payment System gemacht habe.
00:22:10
Daniel Langemann
Also noch nicht passiert, aber ich hätte es einmal fast geschafft.
00:22:13
Daniel Langemann
Also
00:22:15
Daniel Langemann
Genau deswegen möchte ich solche Sachen gar nicht haben, weil dann kann es mir gar nicht passieren, dass ich aus Versehen Bestellungen auslöse oder Kundendaten genauso.
00:22:24
Daniel Langemann
Dann spiele ich im Shop rum, die End-to-End-Tests laufen durch und nehme zum Beispiel den erstbesten Kunden, den die finden, der gerade vor einer Stunde gekauft hat.
00:22:31
Daniel Langemann
Und dann kriegt der einfach mal 50 E-Mails, weil der dann irgendwie Testbestellung 1, 2, 3 kriegt.
00:22:37
Daniel Langemann
Naja, so.
00:22:38
Kai Ole Hartwig
Ja, auch Testbestellungen im Produktivsystem.
00:22:41
Kai Ole Hartwig
Also ich habe da auch so meine Erfahrungen, ich sage jetzt mal, von gelieferten Wein über palettenweise Fliesen und andere Baustoffe habe ich da schon alles erlebt.
00:22:54
Kai Ole Hartwig
Zum Glück war ich ja nie im Shop-Team, also konnte ich das sehr entspannt sehen.
00:23:00
Kai Ole Hartwig
Aber ich sage jetzt mal, es ist schon komisch, wenn da jemand mit so einer Palette auf einmal steht.
00:23:07
Daniel Langemann
Ja.
00:23:09
Daniel Langemann
Also für alle Unbeteiligten immer lustig, aber nicht für den Armen, der es auslöst.
00:23:14
Kai Ole Hartwig
So, und das ist ja einfach so ein Ding.
00:23:20
Kai Ole Hartwig
Und da bin ich auch froh.
00:23:22
Kai Ole Hartwig
In CMS-Systemen haben wir es ja ähnlich, oder wenn ERP-Systeme angebunden sind oder Ähnliches, das Testen wird dann immer schwieriger, weil dann gibt es vielleicht einfach die Systeme nicht dafür.
00:23:34
Kai Ole Hartwig
Und
00:23:35
Kai Ole Hartwig
Und nachher hat man dann doch Produktivdaten auch lokal und schießt dann doch gegen das andere Produktivsystem, was da steht.
00:23:45
Kai Ole Hartwig
Das, finde ich, sind auch immer sehr schwierige Situationen, weil du halt nicht wirklich entspannt arbeiten kannst damit.
00:23:52
Kai Ole Hartwig
Du musst immer sehr, sehr genau aufpassen, was passiert denn jetzt gerade.
00:23:58
Daniel Langemann
Ja.
00:23:58
Kai Ole Hartwig
Und ich finde, solche Situationen sind gut zu vermeiden.
00:24:03
Kai Ole Hartwig
Besser das System sagt mir, ich kann damit gar nicht sprechen, weil ich kenne das nicht, schicke mir einen Fehlercode zurück, dann merke ich wenigstens, ich habe gerade was Dummes gemacht, ohne dass was kaputt gegangen ist.
00:24:16
Kai Ole Hartwig
Und ich glaube, jeder hat schon mal ein Produktivsystem abgeschossen.
00:24:22
Kai Ole Hartwig
Aber ich finde auch diese Änderung quasi zu sagen, okay, ich komme gar nicht mehr auf diese Produktivsysteme drauf.
00:24:32
Kai Ole Hartwig
Und ich lasse zum Beispiel auch entsprechende Datenbank Migrationen in meiner Pipeline laufen.
00:24:38
Kai Ole Hartwig
System, das Deployed, ist auch verantwortlich, dass die Datenbank Migration läuft und solche Dinge.
00:24:43
Kai Ole Hartwig
Ich finde, das war für mich persönlich damals ein gedanklich sehr großer Schritt, da hinzukommen.
00:24:50
Kai Ole Hartwig
Ja, auch nicht mehr dieses Notfall-Backup zu haben mit, ich logge mich jetzt einfach mal auf dieses Produktivsystem ein und dann fixe ich das halt im Zweifelsfall, was da gerade kurz schiefgegangen ist in fünf Minuten.

Optimierung von Entwicklungsumgebungen

00:25:05
Kai Ole Hartwig
Ja, also so wirklich, ja, ja, Daniel, ich komme ja aus einer dunklen Welt, wo wir mit FTP deployed haben und auf dem, also, ne, wo es keine Testsysteme gab.
00:25:05
Daniel Langemann
Ja.
00:25:15
Kai Ole Hartwig
Und ich finde, das ist eigentlich auch ein Ding, was man halt verstehen muss.
00:25:22
Kai Ole Hartwig
Man muss halt wirklich lokale Entwicklungsumgebungen, haben wir ja beim letzten Mal darüber gesprochen, haben die,
00:25:28
Kai Ole Hartwig
die sehr nah an dem Produktivsystem sind, damit man alles gut machen kann.
00:25:35
Kai Ole Hartwig
Und dann braucht man und dann macht halt auch aus meiner Sicht ein Secret Management mit einem Volt etc.
00:25:42
Kai Ole Hartwig
Sinn.
00:25:43
Kai Ole Hartwig
Und dann halt nicht nur SOPs.
00:25:47
Kai Ole Hartwig
Also ich mag SOPs, gerade für Entwicklungsumgebungen, dass man auch da ein bisschen sorgsam mit den Sachen umgeht und vielleicht auch so eine Datenbankdamp sich einfach mal an
00:25:59
Kai Ole Hartwig
nur verschlüsselt zum in den Chart legt, damit, falls das mal irgendwie public wird, dann wenn doch mal irgendwelche Daten drin waren, die da vielleicht eigentlich nicht drin sein sollten, dass die auch einfach nicht unverschlüsselt verloren gehen, weil das geht zum Beispiel auch wunderbar mit SOPs.
00:26:14
Daniel Langemann
Ja.
00:26:19
Kai Ole Hartwig
Ja, du kannst einfach eine Datenbank Dampf verschlüsseln.
00:26:21
Kai Ole Hartwig
Dafür liebe ich das Ding so ein bisschen.
00:26:25
Kai Ole Hartwig
So und ich, also das mag ich grundsätzlich und du kannst damit halt auch deine Key Rotation und so einfach mal sehr flach und einfach testen.
00:26:36
Kai Ole Hartwig
Was passiert denn, wenn ich jetzt einfach den Datenbank Key, das Datenbank Passwort ändere?
00:26:43
Kai Ole Hartwig
Und ich finde dann lokal immer noch ein Roll zu haben zum Testen und da rotiere ich dann und was passiert dann?
00:26:50
Kai Ole Hartwig
Es ist manchmal vielleicht je nach Projekt einfach ein bisschen
00:26:54
Daniel Langemann
Overengineered.
00:26:55
Kai Ole Hartwig
too much overengineered, weil dann muss ich doch wieder irgendwie das Tool besser kennen, das ich vielleicht auch als Entwickler gar nicht so gut kenne.
00:26:55
Daniel Langemann
Mhm.
00:27:02
Kai Ole Hartwig
Und da finde ich, sind dann einfache Sachen, die für die Applikation aber am Tagesende gleich aussehen, weil halt über die Runtime einfach das Passwort reingereicht wird.
00:27:17
Kai Ole Hartwig
Aus welchem Tool auch immer, ist ja völlig egal.
00:27:20
Kai Ole Hartwig
an für sich für die Applikation, hoffentlich ist es dir egal, dass man dann halt so hingeht und so auch lokal wirklich alles durchtesten kann.
00:27:31
Kai Ole Hartwig
Ja, nichts ist witziger, als wenn das Datenbankpasswort rotiert wird, aber der Mechanismus einfach nicht gut funktioniert.
00:27:38
Kai Ole Hartwig
In der Applikation steht ein neues Passwort drin, die Datenbank kennt das aber gar nicht.
00:27:43
Daniel Langemann
Musst du den Finger in die Wunde legen?
00:27:46
Kai Ole Hartwig
Natürlich, natürlich.
00:27:47
Kai Ole Hartwig
Aber das ist ja auch so ein, also
00:27:48
Daniel Langemann
Also, ich habe es geschafft.
00:27:51
Kai Ole Hartwig
Ja.
00:27:52
Daniel Langemann
Das ist noch gar nicht so lange her.
00:27:54
Daniel Langemann
Kleines Projekt.
00:27:55
Daniel Langemann
Und auf AWS kannst du das ja sogar, also Setup war halt auch mit RDS-Datenbank und Secrets-Manager.
00:28:04
Daniel Langemann
Ich denke mir, geil, du bist richtig sicher, lässt das Datenbankpasswort rotieren, wir entwickeln fröhlich, fleißig, erster Tag, Live-Gang.
00:28:16
Daniel Langemann
Ich habe die Rotation nicht getestet, weil ich habe nicht aufgepasst, das wurde in einem anderen Secret geschrieben, das neue Passwort.
00:28:24
Daniel Langemann
Mitten im Livebetrieb, also wo du jetzt sagst testen, also kann ich nur bestätigen, sollte man vorher testen.
00:28:30
Daniel Langemann
Das Problem war, ich glaube, ich habe es auf sieben Tage gestellt, wollte es nachher noch testen, habe es nicht mehr getestet, habe es vergessen und es hat natürlich nicht funktioniert.
00:28:40
Kai Ole Hartwig
Ja, Klassiker, ne?
00:28:42
Kai Ole Hartwig
Ganz klassisches Ding.
00:28:45
Kai Ole Hartwig
Das ist ja auch, das ist der Punkt, wo ich sage, man muss was gut überlegen, was man da tut an der Stelle.
00:28:52
Kai Ole Hartwig
Ja, also, vielleicht aus eigener Erfahrung.
00:28:52
Daniel Langemann
Ja, habe ich bewiesen.
00:28:58
Kai Ole Hartwig
Ja.
00:29:00
Kai Ole Hartwig
Und das sind auch Dinge, definitiv aufschreiben.
00:29:03
Kai Ole Hartwig
Das sind so Teile, erst aufschreiben, dann machen.
00:29:08
Kai Ole Hartwig
Nicht einfach spontan machen, finde ich.
00:29:12
Kai Ole Hartwig
Damit auch jemand anderes nachlesen kann, was ich mir eigentlich gedacht habe.
00:29:16
Kai Ole Hartwig
Was ich als logische Idee empfunden habe.
00:29:19
Kai Ole Hartwig
Oder aus welchem verrückten Blogbeitrag ich irgendeine Idee geklaut habe.
00:29:25
Kai Ole Hartwig
Ähm...
00:29:29
Kai Ole Hartwig
Und dass man das nachlesen kann, was da eigentlich passieren soll, um das auch abzugleichen.
00:29:35
Daniel Langemann
Mhm.
00:29:36
Daniel Langemann
Gerade auch später, dann ein halbes Jahr oder dreiviertel Jahr später.
00:29:40
Daniel Langemann
Oft ist man ja nicht mehr die gleiche Person im Projekt oder was weiß ich, was ich vor einem halben Jahr gedacht habe nach fünf anderen Projekten.
00:29:47
Daniel Langemann
Gerade wenn die dann so ein bisschen ähnlicher aufgesetzt waren.
00:29:48
Kai Ole Hartwig
Bis wenn es noch das gleiche Projekt ist.
00:29:51
Daniel Langemann
Ja, ja, genau.
00:29:51
Kai Ole Hartwig
Also das ist ja so, also wenn du Sachen nach drei Monaten nochmal anschaust, das hätte auch jemand anderes schreiben können.
00:29:58
Kai Ole Hartwig
Aber manchmal schon nach einer Woche.
00:30:01
Kai Ole Hartwig
Also das geht Blame als immer.
00:30:08
Kai Ole Hartwig
Die Erkenntnis, dass man zu dem Zeitpunkt vielleicht noch nicht so schlau war wie heute.

Ideale Setups und Tools für Geheimnisverwaltung

00:30:17
Kai Ole Hartwig
Welchen Secrets Manager würdest du denn jetzt, wenn das perfekte Setup, was wäre da ein Traum als Secret Management?
00:30:25
Daniel Langemann
Also ich bin einfach als AWS-Fanboy, würde ich jetzt mal sagen.
00:30:30
Daniel Langemann
Also in den letzten Projekten habe ich viel AWS im Setup drin gehabt und mit AWS ECS zum Beispiel, also Docker-Container und Fargate, die automatisch skalieren,
00:30:42
Daniel Langemann
Da bist du natürlich sofort dabei.
00:30:44
Daniel Langemann
AWS Secrets Manager für die Datenbank mit einem rotierenden Passwort und Parameter Store für Parameter kannst du schön einstellen, dass wirklich nur der ECS-Container darauf Zugriff hat.
00:30:57
Daniel Langemann
Also da musst du dir auch nicht Sorgen machen, dass du irgendwie AWS Credentials nochmal irgendwo unterbringen musst auf einem V-Host oder so.
00:31:04
Daniel Langemann
Da bist du schon sehr sicher mit dabei.
00:31:07
Daniel Langemann
In anderen Projekten hatte ich jetzt von Hachikop den Vault Store noch erlebt, also nicht selbst verwaltet, aber erlebt.
00:31:07
Kai Ole Hartwig
Und
00:31:14
Daniel Langemann
Und das ist natürlich auch angenehm, weil da Operations das komplett verwaltet hat.
00:31:19
Daniel Langemann
Also komplett kopiert, Production und für Development gab es auch einen, haben wir da verwaltet, hatten dann unsere lokalen Credentials drin.
00:31:30
Daniel Langemann
Das war ganz gut, weil wir mussten Credentials sozusagen beantragen und das hat dazu geführt, dass wir
00:31:37
Daniel Langemann
nicht nach Production deployen können, weil wir mussten ja für lokal auch schon Credentials beantragen, damit das funktioniert.
00:31:43
Kai Ole Hartwig
Ja.
00:31:43
Daniel Langemann
Genau dieses mit, ich trage das lokal selber ein, also wie mit dem Rotieren auch, man vergisst das nachher zu testen, man vergisst Operations Bescheid zu sagen, deployed off port und es knallt und alle so, warum, es hat doch lokal funktioniert.
00:31:57
Daniel Langemann
Und dann siehst du in den Logs mit, ja guck mal, Credentials fehlen.
00:31:59
Daniel Langemann
Also deswegen war das ganz gut, dass du für lokal auch beantragen musst.
00:32:02
Daniel Langemann
Das hört sich jetzt schlimmer an, als es ist, aber das war so ein Sicherheitsmechanismus.
00:32:05
Daniel Langemann
Und wenn du das hattest, haben die jetzt automatisch auch für Pod schon was erstellt.
00:32:09
Daniel Langemann
Und dann konntest du sicher sein, dass das da ist, wenn du es lokal hattest.
00:32:12
Daniel Langemann
Mhm.
00:32:12
Kai Ole Hartwig
Ich meine, wenn das ein gut laufender Prozess ist, warum nicht?
00:32:18
Kai Ole Hartwig
Also es spricht ja gar nichts gegen schlanke, gut laufende Prozesse.
00:32:22
Kai Ole Hartwig
Und vor allem, wenn halt auch die Verantwortlichen klar ist.
00:32:25
Kai Ole Hartwig
Wenn klar ist, Operations, Ops ist immer, oder DevOps oder Who Cares, ein Team, egal wie wir es nennen.
00:32:37
Kai Ole Hartwig
ist verantwortlich für Secret Management, dann ist es ja eine ganz klar geregelte Verantwortlichkeit.
00:32:43
Kai Ole Hartwig
Das ist viel cooler, als wenn sich niemand für etwas verantwortlich fühlt.
00:32:49
Daniel Langemann
Ja, aber dann hast du kein Secrets-Problem, dann hast du ein Prozess-Problem.
00:32:53
Daniel Langemann
Ja.
00:32:54
Kai Ole Hartwig
Ja, natürlich, dann hast du ein ganz anderes Problem.
00:32:56
Kai Ole Hartwig
Aber ich finde bei Secrets und bei solchen Themen...
00:33:03
Kai Ole Hartwig
merkst du das halt am ehesten, dass es Prozessprobleme gibt.
00:33:07
Kai Ole Hartwig
Dadurch, dass die Sachen halt nicht sauber laufen und dass du dann halt stehst und sagst, ach, jetzt, ja gut, ich kann alles einrichten, außer das Produktivsystem.

Zusammenarbeit und Kommunikation im Team

00:33:17
Kai Ole Hartwig
Im Produktivsystem fehlt jetzt das Secret.
00:33:19
Kai Ole Hartwig
Ja, schade, ich habe aber deployed, weil Deployment darf ich ja.
00:33:23
Kai Ole Hartwig
So, das ist ja das Ding.
00:33:27
Kai Ole Hartwig
Ich finde, da muss man halt klare,
00:33:31
Kai Ole Hartwig
Übergänge schaffen und haben und an solchen Stellen merkt man das immer sehr gut, ob da Verantwortung übernommen wird für etwas und Verantwortlichkeiten geklärt sind oder ob das so ein ist, ja, wir haben das mal gemacht, weil wir haben gehört, das ist gut.
00:33:48
Daniel Langemann
Mhm.
00:33:48
Daniel Langemann
Mhm.
00:33:48
Kai Ole Hartwig
Stell dir vor, jemand geht jetzt hin nach unserem Podcast und sagt, ja, wir verschlüsseln jetzt alle Secrets.
00:33:56
Kai Ole Hartwig
Coole Idee, ja, go for it.
00:33:58
Kai Ole Hartwig
Aber es weiß niemand anderes davon und nur das eine Team macht das und die anderen Teams machen es nicht.
00:34:04
Kai Ole Hartwig
Aber ein anderes Team konsumiert auch die Datenbank-Credentials und kommt auf einmal nicht mehr ran.
00:34:11
Kai Ole Hartwig
Ja, ich habe da verrückte Dinge im Kopf.
00:34:15
Kai Ole Hartwig
So etwas wie, ich habe zwei Teams, gleiche Datenbank und jeder macht, was er möchte.
00:34:19
Kai Ole Hartwig
Das funktioniert natürlich nicht.
00:34:21
Kai Ole Hartwig
Am schlimmsten ist es noch, wenn man gar nicht weiß, dass das andere Team das auch macht.
00:34:26
Kai Ole Hartwig
Oder auf einmal zum Beispiel zwei oder drei Teams sich die Verantwortlichkeit für einen Service teilen.
00:34:26
Daniel Langemann
Ja, beide verschlüsselt.
00:34:35
Kai Ole Hartwig
Da wird es halt schwierig, weil dann muss es eigentlich ein Team sein.
00:34:40
Kai Ole Hartwig
Also dann hat man die Sachen falsch geschnitten.
00:34:43
Daniel Langemann
Also was man nochmal machen kann ist, war halt auch in dem letzten Beispiel auch so, wir haben nachher gesplittet.
00:34:51
Daniel Langemann
Also wir haben wirklich gesagt, was sind Credentials oder Secrets, also Datenbankpasswörter, Zugang fürs Payment und, und, und.
00:34:56
Kai Ole Hartwig
Ja klar.
00:35:00
Daniel Langemann
Und was sind Parameter?
00:35:03
Daniel Langemann
Also im Sinne von...
00:35:05
Daniel Langemann
ich habe einen Feature-Flag irgendwo mit drin und möchte jetzt irgendein tolles Feature an- und ausschalten können.
00:35:11
Daniel Langemann
Das hatten wir da auch zum Beispiel über Umgebungsvariablen gelöst.
00:35:15
Daniel Langemann
Und beides war in einem Secrets-Manager organisiert.
00:35:20
Daniel Langemann
Auf den einen hatte das Entwicklerteam Zugriff, weil ob ein Flag für Feature 1, 2, 3 auf True oder False steht, das kann jeder wissen, das ist kein Betriebsgeheimnis.
00:35:33
Daniel Langemann
Das Schlimmste, was passieren kann, dass ein Feature früher online geht, aber da sind die Entwickler auch für zuständig.
00:35:39
Kai Ole Hartwig
Ja.
00:35:39
Daniel Langemann
Und das hat uns auch geholfen, so Geschwindigkeit aufzunehmen, weil vorher war es so, dass alles da drin war und alles musste an Obds herangetragen werden.
00:35:47
Daniel Langemann
Und dann
00:35:49
Daniel Langemann
hast du natürlich direkt den Unmut.
00:35:50
Daniel Langemann
Also ich war auch sehr genervt davon.

Feature Flags und Deployment-Prozesse

00:35:54
Daniel Langemann
Für jede Kleinigkeit, so könnt ihr da bitte das eintragen?
00:35:56
Daniel Langemann
Ja, okay, nächste Woche müssen wir das umtragen.
00:35:59
Daniel Langemann
Könnt ihr dann um 15 Uhr?
00:36:01
Daniel Langemann
Und das waren aber so ganz normale Sachen, wo du sagst, das ist Aufgabe von einem Entwickler.
00:36:05
Daniel Langemann
Und ich denke mal, ob es sind wir auch sehr auf die Nerven gegangen damit, mit unserer unfreundlichen Art und so, könnt ihr das wieder ändern?
00:36:10
Daniel Langemann
Ach, das wollen wir jetzt doch wieder andersrum.
00:36:13
Daniel Langemann
Und das hat... Ja, genau.
00:36:13
Kai Ole Hartwig
Ja, das soll doch noch wieder raus, kurz, 10 Minuten, das muss raus, Tester hat gesagt, geht nicht.
00:36:21
Kai Ole Hartwig
Ja, aber ganz ehrlich, Parameter, also sowas wie Feature-Flex, habe ich ehrlich gesagt noch nie in Secret Manager geschmissen.
00:36:31
Kai Ole Hartwig
Also da tendiere ich dazu, einfach Umgebungsvariablen zu haben und im Zweifelsfall auch einfach über ein Deployment umstellen zu können.
00:36:41
Daniel Langemann
Okay, also im Hintergrund, wir hatten keinen Einfluss auf das Deployment.
00:36:45
Daniel Langemann
Also Unternehmen groß genug, da hast du natürlich Ops, die sich darum kümmern, um Deployment, alles drum und dran.
00:36:47
Kai Ole Hartwig
Ja.
00:36:53
Daniel Langemann
Und die einzige, in Anführungsstrichen, einzige Möglichkeit oder Einfluss, den wir hatten, war über Secrets.
00:36:59
Daniel Langemann
oder den Secrets Manager, den wir genutzt haben.
00:37:02
Daniel Langemann
Das war sozusagen die Schnittstelle und dementsprechend haben wir dann gesagt, bevor wir jetzt noch das nächste Tool daneben bauen und die Komplexität wieder hochtreiben, lasst uns das nutzen, was wir im Projekt haben, weil ansonsten hätten wir lokal das reproduzieren müssen und sagen müssen, guck mal, wir haben jetzt, weiß ich nicht, also man kann das ja über die.env-Datei, man kann es umgebungsvariablen, man kann es irgendwo im PHP-Kontext unterbringen,
00:37:22
Kai Ole Hartwig
Mhm.
00:37:28
Daniel Langemann
Und nachher hast du dann vier Stellen, wo du Sachen suchen musst.
00:37:32
Daniel Langemann
Und das erhöht natürlich auch direkt wieder die Chance, dass irgendjemand sagt, ich glaube, das ist eine gute Stelle für einen Secret.
00:37:38
Daniel Langemann
Den packe ich da mal rein und teste das.
00:37:39
Daniel Langemann
Ja.
00:37:39
Kai Ole Hartwig
Ja, natürlich, natürlich.
00:37:42
Kai Ole Hartwig
Ich bin ein großer Fan davon, aber jetzt weichen wir etwas vom Thema ab, auch, dass bis zu einem gewissen Punkt das Deployment in der Verantwortung, also auch die Pipeline in der Verantwortung von einem Entwicklungsteam liegt.
00:38:01
Kai Ole Hartwig
Ähm.
00:38:08
Kai Ole Hartwig
Ja, aber das besprechen wir, glaube ich, irgendwann.
00:38:12
Kai Ole Hartwig
Wann ich denke, dass, oder wo ich denke, dass Dev und Ops so ihre Schnittstelle haben und warum es DevSecOps eigentlich ist.
00:38:14
Daniel Langemann
Ich finde aber das Thema... Also zumindest das Bewusstsein für Credentials.
00:38:29
Daniel Langemann
wo die hingehören, wo die nicht hingehören.
00:38:30
Daniel Langemann
Und gerade auch Pipeline ist auch so ein Thema, was ich auch schon öfter gesehen habe, dass Leute davon ausgehen, dass wenn Docker-Container gebaut werden, dass auch in einer Pipeline gebaut werden, irgendwie sicher sind.
00:38:45
Daniel Langemann
Und dann werden Docker-Container mit Secrets da drin in ein Repository gepusht.
00:38:52
Daniel Langemann
Und das ist so...
00:38:58
Kai Ole Hartwig
Ja, schön.

Sicherheitsbedenken bei Drittanbieter-Tools

00:39:00
Kai Ole Hartwig
Ja, vor allem war es ja auch, also da gibt es ja tatsächlich auch noch ganz andere Probleme, wenn du dann, wenn du zum Beispiel irgendeinen privaten Key brauchst, um Sachen zu ziehen, während der Build-Time, dann liegt das nachher in deinem Container drin.
00:39:16
Daniel Langemann
Genau.
00:39:16
Daniel Langemann
Genau.
00:39:16
Kai Ole Hartwig
Ja, also du kannst es anders übergeben, dass es quasi nur zur Runtime kurzzeitig verfügbar war, aber das musst du natürlich wissen.
00:39:24
Kai Ole Hartwig
Also, ähm,
00:39:28
Kai Ole Hartwig
Und Container sind ja per se nicht sicherer als jedes andere System auch.
00:39:31
Kai Ole Hartwig
Du musst sie sicher machen, damit sie sicher sind.
00:39:35
Daniel Langemann
Also jeder Entwickler würde direkt sagen, in den Quelltext würde ich nie einen Frontend, Backend, wie auch immer, einfach so plain Passwörter reinkopieren.
00:39:35
Kai Ole Hartwig
Und
00:39:44
Daniel Langemann
Und das gleiche gilt für Docker-Container auch, weil eigentlich kann man sich das eher wie ein ZIP-Archiv vorstellen, wo auch Sachen drinstehen und Dateien drinliegen.
00:39:52
Daniel Langemann
Und das ist genauso wie Quelltext auch und da darf auch kein Credential drin landen nachher.
00:39:57
Kai Ole Hartwig
Genau, du kannst halt ein Inspect machen, unter anderem, und siehst halt die Sachen, die da passiert sind.
00:39:57
Daniel Langemann
Für viele ist das ja nur eine Blackbox-Container.
00:40:06
Kai Ole Hartwig
So, und, ja, dann kannst du es dir auch sparen, alles, was wir gesagt haben.
00:40:07
Daniel Langemann
Mm.
00:40:21
Kai Ole Hartwig
Was hältst du davon, so etwas wie
00:40:24
Kai Ole Hartwig
One Password oder BitWorden oder so als Secret Manager zu nutzen.
00:40:29
Kai Ole Hartwig
Also quasi dein Passwort Management Tool auch noch im Hosting einzusetzen.
00:40:39
Daniel Langemann
Habe ich mir noch nie Gedanken drüber gemacht.
00:40:41
Daniel Langemann
Also ich habe auch einen Passwort Manager, aber... Das heißt, du installierst ein OnePassword auf einem Server?
00:40:42
Kai Ole Hartwig
Ja, also so als Idee für sehr kleine Setups.
00:40:59
Kai Ole Hartwig
Ja, die CLI.
00:41:09
Kai Ole Hartwig
Dein Gesicht spricht Bände.
00:41:10
Daniel Langemann
Ja, es rattert gerade extrem.
00:41:12
Daniel Langemann
Also ich versuche mal laut zu denken und ich hoffe, ich erzähle nicht zu viel komische Sachen.
00:41:17
Daniel Langemann
Das heißt, ich müsste mich per SSH auf eine Kiste anmelden, installiere die CLI.
00:41:24
Daniel Langemann
Zum Installieren bzw.
00:41:26
Daniel Langemann
um mich einmalig anzumelden, brauche ich die Credentials und dann...
00:41:33
Daniel Langemann
Ist das Ding aktiv, bis der Rechner neu gestartet wird?
00:41:37
Daniel Langemann
Oder werden die, also eine erste Frage wäre, werden die Credentials irgendwo hinterlegt?
00:41:43
Daniel Langemann
Muss ich die?
00:41:47
Kai Ole Hartwig
Gute Frage.
00:41:52
Kai Ole Hartwig
Naja, du musst dich da ja vor allem auch ständig wieder einloggen und anmelden.
00:41:58
Kai Ole Hartwig
Aber ich hatte tatsächlich das als Idee irgendwo jetzt gelesen, die Tage.
00:42:05
Kai Ole Hartwig
dass es schlau wäre, so etwas zu machen quasi, wenn man nicht sagt, ah ja, ich setze hier noch ein neues System auf.
00:42:10
Kai Ole Hartwig
Aber ich finde die Idee halt schwierig, weil genau das sind so diese Fragen, die ich habe.
00:42:14
Kai Ole Hartwig
Rufe ich dann die ganze Zeit bei dem anderen Tool, bei dem anderen Anbieter an und sage, oh, gib mir nochmal, gib mir nochmal, gib mir nochmal.
00:42:21
Kai Ole Hartwig
Dann cache ich es vielleicht doch besser.
00:42:23
Kai Ole Hartwig
Dann läuft irgendwann aber ja meine Session ab.
00:42:26
Kai Ole Hartwig
Das heißt, die muss ich ja auch regelmäßig erneuern.
00:42:30
Kai Ole Hartwig
Und
00:42:33
Kai Ole Hartwig
Also ich habe es bisher nicht gemacht.
00:42:37
Kai Ole Hartwig
Und ich konnte halt auch die Idee nicht so ganz nachvollziehen, weil in meinem Kopf habe ich halt eine Session, also zumindest lokal ist es so, ich habe eine Session, bei der habe ich mich angemeldet und
00:42:52
Kai Ole Hartwig
die läuft halt eine bestimmte Zeit, dann läuft die ab, dann muss ich mich neu anmelden.
00:42:57
Kai Ole Hartwig
Und wenn ich das mache, bedeutet das, ich muss das eigentlich regelmäßig auf dem Server machen und dann halt auch regelmäßig dann die Sachen anfragen.
00:43:05
Kai Ole Hartwig
Oder ich gehe hin und
00:43:07
Kai Ole Hartwig
schreibt dann doch die Daten dann einmal wieder in.end-File oder so.
00:43:12
Kai Ole Hartwig
Aber dann sind wir halt bei dem gleichen Ansatz wie SOPS und ich finde dann ist SOPS irgendwie sympathischer, als wenn ich immer noch zu einem anderen Tool telefonieren muss, weil meine Überlegung ist, was ist denn, wenn dieses Tool eine Störung hat, wenn ich gerade deploye?
00:43:20
Daniel Langemann
Das ist einfach eine weitere Abhängigkeit.
00:43:28
Kai Ole Hartwig
Ja.
00:43:32
Daniel Langemann
Also egal welches Tool, jede externe Schnittstelle kann mal ausfallen.
00:43:36
Daniel Langemann
Man sollte es ja theoretisch so bauen, dass alles ausfallen kann, aber mit Cloudflare und anderen Sachen haben wir gesehen, das funktioniert nicht.
00:43:43
Kai Ole Hartwig
Ja gut, wenn dir das Secret Management ja, wenn dir das Secret Management wegknallt und du keine Secrets mehr kennst, ja, dann
00:43:53
Daniel Langemann
Ich bin gerade noch, also es rattert immer noch in meinem Kopf.
00:43:56
Daniel Langemann
Ich gehe mal davon aus, dass wir das irgendwie hinkriegen, die Credentials oder die Session so sicher zu hinterlegen wie Vault und der Secrets Manager.
00:44:07
Daniel Langemann
Die brauchen auch Credentials.
00:44:09
Daniel Langemann
Also es ist nicht hundertprozentig sicher.
00:44:10
Daniel Langemann
Ich denke mal, da dürfte jetzt kein großer Unterschied sein mit dem Unterschied bei Secrets Manager und anderen.
00:44:18
Daniel Langemann
haben sich klügere Leute als ich Gedanken gemacht, wie man die Sachen ablegt, damit die nicht komplett, also die Credentials oder die Session zum Beispiel ablegt, damit die nicht komplett auf dem Server verfügbar ist.
00:44:31
Daniel Langemann
Bei OnePassword weiß ich nicht.
00:44:33
Daniel Langemann
Also das ist meine Unwissenheit eher.
00:44:35
Daniel Langemann
Also hat sich da schon jemand Gedanken gemacht?
00:44:38
Daniel Langemann
Wurde das so gebaut, dass das so verwendet wird?
00:44:40
Daniel Langemann
Oder ist das einfach so, weil eine API ist und ich habe ein paar Umgebungsvariablen und

Persönliche Präferenzen und Expertise

00:44:45
Daniel Langemann
spreche da was an?
00:44:45
Daniel Langemann
Ja.
00:44:47
Kai Ole Hartwig
Ich habe es mir halt auch nur, ich habe es nur kurz überflogen.
00:44:50
Kai Ole Hartwig
Also es scheint so zu sein, dass es da ein extra Tool für gibt, das ja ähnlich zu funktionieren scheint wie der Volt.
00:44:54
Daniel Langemann
Mhm.
00:44:57
Kai Ole Hartwig
Aber im Detail kann ich das jetzt auch nicht sagen.
00:45:00
Kai Ole Hartwig
Ich dachte, du machst ja auch verrückte Sachen wie ich.
00:45:04
Kai Ole Hartwig
Vielleicht bist du schon darüber gestolpert.
00:45:08
Kai Ole Hartwig
Ich muss sagen, ich finde die Idee halt, ähm,
00:45:14
Kai Ole Hartwig
ein Stück weit, selbst wenn es genauso funktionieren sollte wie der Volt, finde ich es immer ein Stück weit schwierig bei solchen Themen, mich von Services, das gilt auch für AWS im Übrigen, aber für Services abhängig zu machen, die ich nicht selber neu starten kann.
00:45:33
Kai Ole Hartwig
Ja, die ich nicht selber kaputt machen kann, vielleicht auch so ein bisschen.
00:45:37
Kai Ole Hartwig
Also, das mag so ein
00:45:40
Kai Ole Hartwig
mein Ding sein, dass ich sage, wenn man das selber hostet, dann kann man es selber kaputt machen, aber auch selber reparieren.
00:45:48
Daniel Langemann
Ich finde das sympathisch, wenn andere das reparieren müssen und ich das nicht muss.
00:45:51
Kai Ole Hartwig
Und aus irgendeinem Grund finde ich das sympathischer, als wenn ich mich davon abhängig mache, dass jemand anderes das kaputt machen darf und jemand anderes auch reparieren muss.
00:46:07
Daniel Langemann
Also es hängt von der Projektgröße ab.
00:46:09
Daniel Langemann
Bin ich alleine oder bin ich mit zwei Entwicklern da, dann habe ich das ganz gerne gemacht.
00:46:10
Kai Ole Hartwig
Ja, natürlich.
00:46:13
Kai Ole Hartwig
Ja, dann bin ich auch immer froh, wenn ich nichts machen muss von diesen Themen.
00:46:20
Daniel Langemann
Also je kleiner der Bereich einfach ist, um den ich mich kümmern muss, weil, sagen wir mal, wenn du alleine bist, hast du ja so einen Berg mit, ne?
00:46:27
Daniel Langemann
Du hast, sagen wir mal, die Backend, Frontend, du hast Security, du hast Operations und, und, und mit dabei.
00:46:32
Daniel Langemann
Und da bin ich einfach froh, den so klein wie möglich zu halten.
00:46:35
Daniel Langemann
Hast du größere Teams, wo du sagen kannst, ne?
00:46:37
Daniel Langemann
Das ist so ein bisschen dein Steckenpferd.
00:46:39
Daniel Langemann
Du kennst dich in Ops ein bisschen besser aus.
00:46:41
Daniel Langemann
Du hast eine, ne?
00:46:43
Daniel Langemann
Dann finde ich sowas wieder interessant.
00:46:44
Kai Ole Hartwig
Ja, aber das ist ein guter Punkt.
00:46:47
Kai Ole Hartwig
Du kennst dich ein bisschen besser aus, finde ich, ist der Punkt, wo ich sage, da sollte man dann immer noch extern gehen.
00:46:54
Kai Ole Hartwig
Ich finde, das sind so Sachen, da reicht ein bisschen besser auskennen oder habe ich schon mal gesehen.
00:47:02
Kai Ole Hartwig
Es ist quasi der Indikator für mich, wo ich sage, dann sollten wir die andere Lösung benutzen.
00:47:12
Kai Ole Hartwig
Wenn wir jetzt mal bitte, also dieses simple, unflexible Blasops-Gedöns da so ein bisschen ausklammern, weil das ist wirklich einfach und schnell.
00:47:23
Kai Ole Hartwig
Ja, aber wenn man jetzt sich überlegt, ah, ich habe schon mal gesehen, wie ein Volt betrieben wird und jetzt mache ich das überall, finde ich, ist es eine gefährliche Annahme, dann zu sagen, ja, das klappt und ich kann das, das ist gar kein Problem.
00:47:36
Daniel Langemann
Also ich meinte, dass... Also ich meinte, dass man die Stufe der bewussten Inkompetenz erreicht hat.
00:47:37
Kai Ole Hartwig
Also ich finde, da gehört mehr Erfahrung zu, im Sinne von, vielleicht auch wenn man sagt, wir möchten das gerne machen, das auch einfach ausprobieren und rausfinden.
00:47:49
Kai Ole Hartwig
Da möchte ich ja keinem von arbeiten.
00:47:53
Daniel Langemann
Also dass man zumindest weiß, was man alles nicht kann und was es für Probleme geben kann.
00:47:58
Daniel Langemann
Und dann auch beurteilen kann, sagen kann, mach ich nicht, weil kann ich nicht, hab ich nicht genug Ahnung.
00:48:03
Daniel Langemann
Das Schlimmste ist ja,
00:48:05
Daniel Langemann
wenn du keine Ahnung hast, was du alles nicht weißt, dann bist du immer sehr mutig und baust Sachen und merkst dann später erst, was alles schief gehen kann.
00:48:12
Daniel Langemann
Das ist, was du ja gerade beschrieben hast.
00:48:16
Kai Ole Hartwig
Aber wir wissen doch alles.
00:48:17
Kai Ole Hartwig
Wir können doch alles.
00:48:20
Daniel Langemann
Genau.
00:48:22
Daniel Langemann
Ich weiß alles, ich kann alles und ich bin für alles verantwortlich, wenn es kaputt geht.
00:48:28
Kai Ole Hartwig
Ja, sehr schön.
00:48:29
Kai Ole Hartwig
Aber hey, dann ist immerhin jemand da, der verantwortlich ist.

Abschluss und Ratschläge zur Geheimnisrotation

00:48:33
Kai Ole Hartwig
Der hoffentlich dann auch die Verantwortung übernimmt.
00:48:37
Kai Ole Hartwig
Perfekt.
00:48:37
Kai Ole Hartwig
Dann wissen wir jetzt, wir verlieren unsere Secrets, haben sie aber verschlüsselt und deswegen ist das alles nicht mehr so schlimm, weil die sich eh alle sieben Tage erneuern.
00:48:47
Daniel Langemann
Genau.
00:48:48
Kai Ole Hartwig
Perfekt.
00:48:49
Daniel Langemann
Und weil wir es vorher getestet haben, die Rotation.
00:48:51
Daniel Langemann
Und nicht im Produktivsystem.
00:48:52
Daniel Langemann
Ja.
00:48:52
Daniel Langemann
Nee, erstmal nicht.
00:48:53
Daniel Langemann
Der Rest kommt nächste Woche.
00:48:53
Kai Ole Hartwig
Na ja, jeder hat halt ein Testsystem.
00:48:55
Kai Ole Hartwig
Manchmal ist es nicht das Produktivsystem.
00:49:03
Kai Ole Hartwig
Wunderbar.
00:49:04
Kai Ole Hartwig
Dann war es es, glaube ich.
00:49:06
Kai Ole Hartwig
Es sei denn, dir fällt jetzt noch etwas ein, was du unbedingt zu Secrets und Credentials noch loswerden möchtest.
00:49:14
Kai Ole Hartwig
Erstmal nicht.
00:49:14
Kai Ole Hartwig
Nein.
00:49:15
Kai Ole Hartwig
Der Rest kommt nächste Woche.
00:49:17
Kai Ole Hartwig
Perfekt.
00:49:17
Kai Ole Hartwig
Dann war das Folge 2 von Secrets Not Included.
00:49:21
Kai Ole Hartwig
Diesmal mit Secrets.
00:49:24
Kai Ole Hartwig
Und wir freuen uns auf die nächste Folge.
00:49:29
Daniel Langemann
Ja, bis zum nächsten Mal.
00:49:30
Daniel Langemann
Ciao.
00:49:30
Kai Ole Hartwig
Bis dahin.
00:49:31
Kai Ole Hartwig
Ciao.