c't 24/2020
S. 142
Praxis
Zugangsdaten sicher speichern
Bild: Albert Hulm

Tresor to Go

Zugangsdaten sicher speichern mit Go

Viele Programme erfragen Anmeldedaten vom Benutzer, um sich an einem Server anzumelden. Oft landet das Kennwort dann im Klartext in einer Datei auf der Festplatte – dabei ist es kein Hexenwerk, den sicheren Kennwortspeicher des Betriebssystems zu nutzen. Mit Go gelingt das plattformübergreifend.

Von Jan Mahn

Die „schönsten“ Probleme beim Programmieren sind solche, die man vorm Programmieren noch gar nicht hatte. Eigentlich hatte man sich mit einem ganz anderen Ziel an den Computer gesetzt und verbringt dann die meiste Zeit mit einer ganz neuen Baustelle. Für manche Probleme gibt es nämlich ästhetische Lösungen, deren Schönheit darin besteht, dass der Nutzer von ihnen nichts mitbekommt. Die Gewissheit, eine wirklich schöne Lösung gefunden und umgesetzt zu haben, muss als Lohn für die Arbeit dann ausreichen. Wenn man die Welt dabei noch ein Stückchen sicherer gemacht hat, ist das befriedigend genug.

Das sichere Speichern von Zugangsdaten in einer Anwendung ist ein gutes Beispiel, das eine schöne Lösung verlangt. Auf die Existenz dieses Problems stieß ich natürlich nebenbei: Ein kleines Kommandozeilenwerkzeug sollte her, mit dem Kollegen und ich per HTTPS auf ein internes API im Verlag zugreifen können. Eigentlich keine große Sache: Meine neue Lieblingssprache Go bringt alles mit, um eine Kommandozeilenanwendung zu bauen und für alle gängigen Betriebssysteme zu kompilieren. Unter Windows, Linux und macOS sollte das Programm laufen, damit möglichst viele Kollegen in den Genuss kommen können. Die ersten Schritte waren auch schnell erledigt, die Hülle einer Kommandozeilenanwendung mit Go und dem CLI-Framework Cobra habe ich in einer mittlerweile vierteiligen Artikelreihe zum Einstieg in Go vorgestellt und konnte mich dort an meinem eigenen Code großzügig bedienen [1 – 4]. Das Cross-Compiling erledigt Go voller Eleganz und schnell hatte ich auf dem Mac drei Binärdateien für die drei Betriebssysteme. Auch das Abrufen von Informationen aus einem HTTP-API ist mit den Bordmitteln von Go keine große Herausforderung.

Kommentieren