Transcript

00:00:00Das ist Valor, ein Open-Source-Tool zur Verwaltung von Umgebungsvariablen, das dafĂŒr sorgt,
00:00:04dass ihr nie wieder Geheimnisse im Klartext auf der Festplatte speichern mĂŒsst. Es funktioniert,
00:00:10indem es Umgebungsvariablen lokal oder ĂŒber Passwortmanager wie 1Password, Bitwarden, AWS und viele
00:00:16weitere auflöst, ein typsicheres Schema verwendet und eure Secrets zur Laufzeit in die Anwendung
00:00:21einschleust. So ist eure .env-Datei sicher fĂŒr KI und kann sogar öffentlich auf GitHub gepostet werden.
00:00:27Aber wie funktioniert das eigentlich und was hat es mit dieser komischen Syntax auf sich? Abonniert den Kanal und los geht's.
00:00:31Wie oft habt ihr schon einen neuen Entwicklerjob angefangen, Zugriff auf den Code bekommen,
00:00:39ihn lokal gestartet und festgestellt, dass er nicht lÀuft? Nur um dann zu merken, dass eine .env-Datei fehlt,
00:00:45die man erst von einem Kollegen oder aus einem verschlĂŒsselten Speicher besorgen muss.
00:00:50Diesen Prozess wiederholt man jedes Mal, wenn die .env-Datei aktualisiert wird. Genau das löst Valor.
00:00:56Zudem verhindert es, dass KI-Agenten per Prompt-Injection auf Geheimnisse zugreifen, die sie nicht sehen dĂŒrfen.
00:01:02Schauen wir uns die Funktionsweise an. Hier ist ein kleines Projekt, an dem ich arbeite.
00:01:06Es generiert Artikel aus Twitter-Videos mit OpenAIs Whisper fĂŒr die Transkription und Claude fĂŒr den Text.
00:01:12Wir fangen simpel an und nutzen Valor, um die Portnummer zu Àndern. Valor ist bereits installiert,
00:01:17daher sollten wir eine .env-Schema-Datei haben, die aktuell noch leer ist. Sie wird unsere
00:01:23einzige Quelle der Wahrheit fĂŒr alle Variablen sein und kann öffentlich auf GitHub landen.
00:01:28Zuerst fĂŒgen wir eine einfache Variable “appenv” hinzu und setzen den Wert auf “testing”.
00:01:33Jetzt kann ich in einem neuen Tab “varlock load” ausfĂŒhren, um unser Schema zu validieren.
00:01:39Hier sehen wir, dass die Umgebungsvariable gelesen und als “sensitiv” markiert wurde.
00:01:43Das liegt daran, dass alle Variablen in Varlock standardmĂ€ĂŸig als sensibel eingestuft werden.
00:01:48In dieser Datei fĂŒge ich nun unseren ersten Deklarator hinzu: einen Root-Deklarator.
00:01:52Er betrifft alle Variablen in der Datei. Wir setzen “default sensitive” auf “false”.
00:01:56Beachtet das #-Zeichen davor. Root-Variablen werden normalerweise durch eine Trennlinie abgesetzt.
00:02:02Die gesamte Datei nutzt eine domÀnenspezifische Sprache namens mspec, eine Open-Spec des Varlock-Teams.
00:02:08Wenn ich das Schema jetzt erneut validiere, können wir den Wert der Variable tatsÀchlich sehen,
00:02:14da sie nicht mehr als sensibel markiert ist. Aber wir können noch mehr coole Dinge tun,
00:02:19wie zum Beispiel einen Typ festlegen. Ich gebe ihr den Typ “string”.
00:02:24Es funktioniert weiterhin, aber wenn ich es in “number” Ă€ndere, erhalten wir eine Fehlermeldung,
00:02:29da ein String erwartet wurde. Ich kann auch den “required”-Deklarator hinzufĂŒgen
00:02:33und den Text entfernen. Wenn wir die Datei nun prĂŒfen, gibt es einen Fehler, da ein Wert fehlt.
00:02:39Diese werden Item-Deklaratoren genannt. Eine vollstÀndige Liste findet ihr in der Varlock-Dokumentation,
00:02:44genau wie alle verfĂŒgbaren Typen. FĂŒgen wir nun eine weitere Umgebungsvariable hinzu.
00:02:50Diese nennen wir “port” mit dem Wert 3002. Ich weise ihr den Typ “port” zu.
00:02:55Oben setze ich dies wieder auf “sensitive” und Ă€ndere den anderen Typ zurĂŒck auf “string”.
00:03:01Jetzt wurden beide Variablen erkannt, aber der Wert ist versteckt, da er sensibel ist.
00:03:05Aber wie kriegen wir diese Werte nun in unsere Anwendung? Wir mĂŒssen lediglich
00:03:10“varlock run” ausfĂŒhren, gefolgt von dem Skript, das die App startet.
00:03:15In der package.json sehen wir, dass wir den “vite”-Befehl fĂŒr das Frontend brauchen.
00:03:21Wenn ich nun “varlock run vite” eingebe, wird die Konfiguration geladen, aufgelöst
00:03:27und in unsere Umgebungsvariablen injiziert. Genau das ist passiert: Der Port ist jetzt 3002.
00:03:33Das funktioniert im Code, weil dort zuerst die von Varlock injizierte Variable geprĂŒft wird.
00:03:38Es muss nicht unbedingt JavaScript sein. Varlock funktioniert mit jedem Projekt, egal ob
00:03:43Python, Go oder Rust. Alles sollte wie erwartet laufen. Falls ihr es nicht ĂŒber npm
00:03:48installieren wollt, gibt es auch eine Varlock-CLI. Das klappt fĂŒr lokale Variablen wunderbar,
00:03:54aber schauen wir uns nun an, wie man sie stattdessen aus 1Password abruft,
00:03:59anstatt lokale Shell-Variablen fĂŒr Dinge wie den OpenAI- oder Anthropic-API-Key zu nutzen.
00:04:05Ich persönlich nutze 1Password eigentlich nicht, sondern habe nur ein Probe-Abo fĂŒr dieses Video.
00:04:11Ich habe einen neuen Tresor erstellt – das ist wichtig, ich erklĂ€re spĂ€ter warum.
00:04:16Darin befinden sich zwei EintrÀge: ein OpenAI-API-Key und ein Anthropic-API-Key.
00:04:24Da sie komplett erfunden sind, macht es nichts, wenn ich sie zeige. Das hier ist kein echter Key.
00:04:30Um diese Werte in unser Varlock-Schema zu bekommen, installieren wir zuerst das 1Password-Plugin.
00:04:36Plugins in Varlock können eigene Root- und Item-Deklaratoren mitbringen. Ihr werdet hier also
00:04:42neue sehen, die nicht in der Standard-Doku stehen, wie etwa diesen “init 1password”-Deklarator.
00:04:49Nach der Installation laden wir den entsprechenden Root-Deklarator und können
00:04:55den Befehl ausfĂŒhren. Alles, was ich jetzt brauche, ist das Token, das ich hier lade.
00:05:01Um dieses Token zu erhalten, mĂŒsst ihr es mit einem neuen Tresor verbinden,
00:05:06nicht mit eurem persönlichen. Ihr findet es unter “Developer Service Account”.
00:05:11Da ich mein Token und den Account nach dem Video lösche, zeige ich es offen her.
00:05:15Ich gebe ihm den Typ “onepassword service token”, welcher sensibel ist und vom Plugin kommt.
00:05:21Vielleicht fÀllt euch auf, dass die Datei kein Syntax-Highlighting hat. Das liegt daran,
00:05:26dass das Varlock-Team zwar ein VS-Code-Plugin erstellt hat, aber bisher noch keines fĂŒr
00:05:32Neovim existiert. Vielleicht erstelle ich selbst eins oder lasse es Claude machen.
00:05:37Nun erstelle ich eine neue Umgebungsvariable namens “openai_api_key_id”.
00:05:43Um diese von 1Password zu holen, rufe ich die 1Password-Funktion auf, gefolgt von
00:05:49diesem Protokoll. Dann brauche ich den Namen meines Tresors (“test”), den Namen
00:05:55des Eintrags (“openai”) und den Feldnamen. Wie wir hier sehen, lautet dieser “credential”.
00:06:02Ich setze auch das auf “sensitive”. Wenn wir nun “varlock load” ausfĂŒhren, dauert es kurz,
00:06:08bis der OpenAI-Key von 1Password geholt wird. Dass es klappt, können wir prĂŒfen, indem wir
00:06:14den Wert hier zum Beispiel auf “1234” Ă€ndern. Bei erneutem Laden werden die korrekten Werte geholt.
00:06:20Damit ist unser Schema bereit fĂŒr den Commit. Aber ich weiß, was ihr denkt:
00:06:25Ist dieses 1Password-Token sicher? Ehrlich gesagt, wenn ihr lokal entwickelt
00:06:31und 1Password nutzt, habt ihr vermutlich die Desktop-App oder die CLI installiert.
00:06:38In diesem Fall könnt ihr 1Password einfach per Fingerabdruck entsperren statt mit einem Token.
00:06:43Varlock unterstĂŒtzt auch andere Plugins fĂŒr AWS, GCP und sogar Bitwarden,
00:06:52sowie Integrationen fĂŒr Vite, Next.js und Cloudflare Workers. Es gibt noch so viele
00:06:57weitere Features, die ich heute nicht alle zeigen konnte, wie das Generieren von TypeScript-Typen,
00:07:03das Importieren von Variablen aus anderen Dateien oder das Zensieren sensibler Ausgaben
00:07:08in Logs und HTTP-Antworten – ein sehr schönes Detail. Es gibt sogar einen MCP-Server,
00:07:15der eurem KI-Agenten hilft, das Schema automatisch zu erstellen, und eine GitHub Action
00:07:21fĂŒr eure CI/CD-Pipeline. Aber so cool Varlock auch ist, es gibt ein paar Nachteile.
00:07:27Man kann es zum Beispiel nicht offline nutzen. Wer am Flughafen codet, muss also wieder
00:07:32auf fest im Code stehende Variablen zurĂŒckgreifen – aber wer programmiert schon ohne Internet?
00:07:37Apropos Internet: Es gibt eine leichte Verzögerung beim Abrufen der Passwörter,
00:07:41sodass der Start eurer Skripte einen Moment lĂ€nger dauert. Außerdem fehlen noch
00:07:46einige Anbieter wie Dashlane. Ich hatte auch einen seltsamen Bug: Wenn ein Name
00:07:53im Schema identisch mit einer lokalen Shell-Variable war, wurde der lokale Wert bevorzugt.
00:07:59Aber Varlock wird aktiv weiterentwickelt und ich bin sicher, dass viele dieser Punkte
00:08:05bald behoben werden. Trotzdem ist das Produkt schon jetzt unglaublich nĂŒtzlich fĂŒr mich.
00:08:10Ich werde es wohl fĂŒr alle meine kĂŒnftigen Nebenprojekte verwenden und vielleicht sogar
00:08:16meine lokalen Shell-Dateien durch Varlock-Schemata ersetzen, falls das möglich ist.
00:08:21Das wÀre super, denn ich möchte nicht, dass irgendwelche Agenten meine Infos abgreifen.
00:08:26Bis zum nÀchsten Mal.

Key Takeaway

Varlock ersetzt unsichere .env-Dateien durch ein typsicheres, zentralisiertes Schema, das Secrets direkt aus Passwortmanagern in die Anwendung injiziert und so die Sicherheit sowie die Entwicklererfahrung verbessert.

Highlights

Varlock ist ein Open-Source-Tool, das Umgebungsvariablen sicher verwaltet und Klartext-Secrets auf der Festplatte eliminiert.

Es nutzt ein typsicheres Schema (mspec), um Variablen zu validieren und Fehler wie falsche Datentypen oder fehlende Pflichtfelder zu verhindern.

Das Tool integriert sich nahtlos in Passwortmanager wie 1Password, Bitwarden sowie Cloud-Anbieter wie AWS und GCP.

Dank der Injektion zur Laufzeit können Schema-Dateien sicher auf GitHub veröffentlicht werden, ohne die eigentlichen Secrets preiszugeben.

Varlock bietet Schutz gegen Prompt-Injection bei KI-Agenten, indem es den Zugriff auf sensible Daten kontrolliert.

ZusĂ€tzliche Funktionen umfassen das Zensieren von Secrets in Logs, TypeScript-Typgenerierung und eine GitHub Action fĂŒr CI/CD-Pipelines.

Timeline

EinfĂŒhrung in Varlock und das Ende von .env-Problemen

Der Sprecher stellt Varlock als moderne Alternative zur klassischen .env-Datei vor, die oft zu Sicherheitsproblemen und Onboarding-Verzögerungen fĂŒhrt. Anstatt Secrets lokal im Klartext zu speichern, löst Varlock diese ĂŒber Passwortmanager auf und injiziert sie zur Laufzeit direkt in die Anwendung. Dies löst das bekannte Problem, dass neue Entwickler erst mĂŒhsam nach fehlenden Konfigurationsdateien suchen mĂŒssen, wenn ein Projekt lokal nicht startet. Ein weiterer entscheidender Vorteil ist der Schutz vor KI-Agenten, die durch Prompt-Injection versuchen könnten, auf sensible Umgebungsvariablen zuzugreifen. Somit wird die Verwaltung von Geheimnissen nicht nur sicherer, sondern auch wesentlich effizienter fĂŒr Teams gestaltet.

Das Varlock-Schema und die mspec-Syntax

In diesem Abschnitt wird die praktische Anwendung von Varlock anhand eines Beispielprojekts demonstriert, das Twitter-Videos transkribiert. Der Sprecher erklĂ€rt die zentrale Rolle der .env-Schema-Datei, die auf der domĂ€nenspezifischen Sprache mspec basiert und als einzige 'Quelle der Wahrheit' dient. Es wird gezeigt, wie man Variablen definiert, sie als sensibel markiert oder globale Einstellungen ĂŒber Root-Deklaratoren festlegt. Besonders hervorgehoben wird die Typsicherheit, bei der das Tool Fehler ausgibt, wenn beispielsweise ein String anstelle einer erwarteten Nummer eingegeben wird. Diese Validierung sorgt dafĂŒr, dass die Anwendung nur mit korrekt konfigurierten Umgebungsvariablen startet.

Integration in den Workflow und App-Start

Hier wird erklĂ€rt, wie die definierten Variablen tatsĂ€chlich in die laufende Anwendung gelangen, wobei der Befehl 'varlock run' die zentrale Rolle spielt. Dieser Befehl lĂ€dt die Konfiguration, validiert sie gegen das Schema und injiziert die Werte in den Prozess, wie am Beispiel eines Vite-Frontends mit Port 3002 gezeigt wird. Varlock ist dabei technologisch agnostisch und funktioniert nicht nur mit JavaScript, sondern auch mit Sprachen wie Python, Go oder Rust. Der Sprecher betont, dass man fĂŒr die Nutzung nicht zwingend npm benötigt, da auch eine eigenstĂ€ndige CLI zur VerfĂŒgung steht. Damit wird verdeutlicht, dass Varlock eine universelle Lösung fĂŒr die lokale Entwicklung ĂŒber verschiedene Ökosysteme hinweg darstellt.

Anbindung von Passwortmanagern am Beispiel von 1Password

Der Fokus verlagert sich nun auf die externe Auflösung von Secrets, wobei die Integration von 1Password detailliert vorgefĂŒhrt wird. Durch die Installation spezieller Plugins kann Varlock ĂŒber Service-Token oder die lokale Desktop-App direkt auf Tresore zugreifen und Werte wie OpenAI-API-Keys abrufen. Der Sprecher zeigt den Prozess der VerknĂŒpfung, inklusive der Verwendung spezifischer Item-Deklaratoren, die den Pfad zum Passwortmanager definieren. Ein wichtiger Sicherheitshinweis ist dabei die Nutzung von dedizierten Service-Accounts anstelle von persönlichen Tresoren fĂŒr die Entwicklung. Sobald 'varlock load' ausgefĂŒhrt wird, werden die aktuellen Keys in Echtzeit abgerufen, was manuelle Updates lokaler Dateien ĂŒberflĂŒssig macht.

Erweiterte Features, Nachteile und Fazit

Zum Abschluss beleuchtet das Video weitere Profi-Funktionen wie das automatische Maskieren von Secrets in HTTP-Antworten und die Integration in CI/CD-Tools. Trotz der Begeisterung spart der Sprecher nicht an Kritik und nennt Nachteile wie die zwingende Internetverbindung fĂŒr Passwortmanager-Abrufe und leichte Verzögerungen beim Start. Es werden auch kleinere Bugs erwĂ€hnt, etwa wenn lokale Shell-Variablen fĂ€lschlicherweise Vorrang vor dem Varlock-Schema erhalten. Dennoch ĂŒberwiegen die Vorteile deutlich, insbesondere die Vermeidung von Datenlecks gegenĂŒber KI-Agenten und die saubere Schema-Struktur. Der Sprecher plant, Varlock kĂŒnftig in all seinen Projekten einzusetzen, da es die Sicherheit massiv erhöht.

Community Posts

View all posts