code

1Password CLI

Von peter portmann,

Veröffentlicht am 23. Juni 2026   â€”   8 min Lesezeit

toolsmacoswindows
ChatGPT
🔑
1Password verwende ich nun seit gut vier Jahren. Hier möchte ich die sichere Bereitstellung von Variablen unter macOS im Terminal und Skripts erläutern. Bitte beachten: Dieser Blog ist ein 'Proof of Concept'. Verwendung auf eigene Gefahr. 💥

Das 1Password CLI (Command Line Interface) ist ein mächtiges Kommandozeilen-Werkzeug. Es wurde entwickelt, um den Zugriff auf den 1Password-Tresor direkt über das Terminal zu ermöglichen – ganz ohne die grafische Benutzeroberfläche.


Wieso 1Password

Meine Meinung

Ich verwende 1Password aus den folgenden GrĂĽnden:

  • Firmensitz NICHT in den USA (Kanada), Server in der EU
  • Gute Reputation.
  • Ich will dafĂĽr kein Selfhosting. Soll fĂĽr meine Familie unabhängig von meiner Person funktionieren.
  • Familienabo bis 5 Benutzer, Zugriffsgruppen.
  • Crossplattform. Ich verwende es mit macOS, Windows und iOS.
  • Gute Integration mit effizienten Apps.
  • Ich speichere damit auch Texte, Dateien, Lizenzen, URLs und mehr.

Recherche zu 1Password

Interview mit Gemini.

1. Wo ist der Hauptsitz?

Der Hauptsitz von 1Password (betrieben von der Firma AgileBits Inc.) befindet sich in Toronto, Ontario, Kanada. Das Unternehmen wurde dort 2005 bzw. 2006 gegrĂĽndet.

2. Wo sind die Server, DSGVO-Kompatibilität?

1Password bietet eine strikte regionale Datentrennung an.

  • Server-Standort fĂĽr Europa: Wenn Sie Ihr Konto ĂĽber die europäische Domain 1password.eu registrieren, werden Ihre verschlĂĽsselten Daten auf der AWS-Infrastruktur (Amazon Web Services) in Frankfurt am Main (Deutschland) gehostet.
  • Keine automatische Migration: Die Daten verbleiben fest in dieser Region und werden nicht automatisch in andere Regionen (wie die USA oder Kanada) kopiert oder verschoben.
  • DSGVO-Kompatibilität: Durch den Server-Standort in Frankfurt und die Ausrichtung auf europäische Datenschutzstandards ist 1Password DSGVO-kompatibel. Hinweis: Support-Anfragen per E-Mail werden primär in den USA verarbeitet, die eigentlichen Tresordaten liegen jedoch verschlĂĽsselt in der EU.

3. Wie werden zufällige Strings (Passwörter) generiert?

1Password nutzt mathematische Prinzipien und System-Ressourcen für maximale Zufälligkeit:

  • Kryptografische Zufallszahlengeneratoren (CSPRNG): Die App greift auf die im jeweiligen Betriebssystem (iOS, Android, macOS, Windows) integrierten, hochsicheren Zufallsgeneratoren zu. Diese nutzen unvorhersehbare Systemereignisse (Entropie), um echte Zufallswerte zu erzeugen.
  • Gleichmässige Verteilung (Uniform Distribution): Durch mathematische Algorithmen wird sichergestellt, dass jedes Zeichen, jede Zahl oder jedes Wort aus einer vordefinierten Liste die exakt gleiche Wahrscheinlichkeit hat, ausgewählt zu werden. Menschen neigen bei der Passwort-Erstellung zu Mustern; die Maschine eliminiert diese vollständig.
  • Varianten: Sie können rein zufällige Zeichenketten (Kombination aus Gross-/Kleinschreibung, Zahlen und Sonderzeichen) oder merkbare Passphrasen (Kombination aus zufälligen Wörtern) generieren lassen.

4. Wie ist die Sicherheit verglichen mit der Konkurrenz?

1Password gilt in der Cybersicherheits-Branche als einer der sichersten Passwort-Manager auf dem Markt. Der grösste Unterschied und Vorteil gegenüber vielen Konkurrenten (wie z.B. dem durch Datenlecks in die Kritik geratenen Anbieter LastPass) liegt in der Sicherheitsarchitektur:

  • Das Secret Key-Prinzip (Einzigartig bei 1Password): Während fast alle Konkurrenten Ihre Daten ausschliesslich mit Ihrem Master-Passwort verschlĂĽsseln, nutzt 1Password ein Zwei-Faktor-VerschlĂĽsselungssystem. Bei der Einrichtung erhalten Sie einen 128-Bit starken Secret Key (GeheimschlĂĽssel), der lokal auf Ihren Geräten verbleibt. Ein Angreifer mĂĽsste sowohl Ihr Master-Passwort erraten als auch diesen riesigen, zufälligen Secret Key stehlen, um Ihre Daten zu entschlĂĽsseln. Selbst wenn die Server von 1Password komplett gehackt wĂĽrden, sind die Daten mathematisch unknackbar.
  • Zero-Knowledge-Architektur: 1Password hat zu keinem Zeitpunkt Zugriff auf Ihre Passwörter, Daten oder Ihren Secret Key. Alles wird ver- und entschlĂĽsselt, bevor es Ihr Gerät verlässt.
  • Transparenz & Audits: Das Sicherheitsdesign ist vollständig offengelegt (Whitepaper). Regelmässig untersuchen unabhängige Sicherheitsfirmen den Code auf Schwachstellen, und die Berichte werden öffentlich gemacht.
  • Vergleich mit Open-Source (z.B. Bitwarden): Bitwarden ist ebenfalls extrem sicher und durch den Open-Source-Ansatz sehr transparent. 1Password bietet im Vergleich oft eine etwas ausgefeiltere Benutzeroberfläche und die zusätzliche HĂĽrde des Secret Keys, ist dafĂĽr jedoch im Gegensatz zu Bitwarden reine proprietäre (kommerzielle) Software.

Exkurs Lavalampen

Es ist nicht trivial wirklich zufällige Zahlen zu erzeugen.

Bild: Cloudflare
https://www.cloudflare.com/learning/ssl/lava-lamp-encryption/

Warum macht man das?

Computer sind von Natur aus logisch und berechenbar. Wenn ein Computer eine Zufallszahl generieren soll, nutzt er dafĂĽr meistens eine mathematische Formel. Das Problem: Wenn ein Angreifer die Formel und den Startwert kennt, kann er die 'Zufallszahlen' vorhersagen. FĂĽr echte, unknackbare VerschlĂĽsselung im Internet braucht man aber echte, unvorhersehbare physikalische Entropie (Chaos).

Wie funktioniert das System?

  1. Die Wand: Bei Cloudflare steht eine Wand mit etwa 100 echten Lavalampen. Das Wachs darin bewegt sich völlig chaotisch und verändert sich durch minimale Temperaturunterschiede im Raum oder Luftströmungen unvorhersehbar.
  2. Die Kamera: Eine Digitalkamera filmt diese Wand durchgehend.
  3. Der Pixel-Zufall: Das Kamerabild wird in Daten (Pixelwerte) umgewandelt. Da sich nicht nur das Wachs bewegt, sondern auch das Licht im Raum flackert, Personen vorbeilaufen und jede Kamera ein minimales 'Bildrauschen' auf Pixelebene hat, ist kein einziges Bild jemals identisch mit einem anderen.
  4. Das Hashen: Cloudflare nimmt die Farbwerte dieser Millionen Pixel und jagt sie durch eine mathematische Funktion (einen Krypto-Hash). Das Ergebnis ist eine völlig unvorhersehbare, extrem lange Kette aus zufälligen Zahlen und Zeichen.

Dieses System erzeugt einen so starken kryptografischen Zufall, dass es praktisch unmöglich ist, die daraus generierten Schlüssel zu erraten. Cloudflare nutzt übrigens an anderen Standorten auch noch andere physikalische Systeme, wie das Chaos von Pendeln oder das Rauschen der Atmosphäre!


Warum die 1Password App erweitern mit den CLI Bibliothek?

Meine Sammlung für API Token und Passwörtern in Variablen für Skripts und Agenten geriet langsam ausser Kontrolle. Da ich den Code zunehmen automatisiert in ein Forgejo Repo (selbstgehostete GitHub Alternative) pushe, welches teilweise öffentlich ist, soll die Passwortverwaltung zentral und wasserdicht sein. Kritische Daten flächendeckend in .env Dateien zu sichern möchte ich vermeiden. Es ist schnell passiert, dass diese nicht in .gitignore eingetragen sind und schon ist ein Datenleck Tagsache.

1Password kann meine Variablen zentral und sicher verwalten. Es gibt verschiedene Varianten wie es umgesetzt werden kann. Hier meine Lösung individuell angepasst für macOS.


Variablen in einer Cloudflare Umgebung erfassen

OP_ENVwird verwendet um zu ĂĽberprĂĽfen, ob die Variablen mit 1Password CLI geladen wurden.

Der Speicherort für die virtuelle .env Datei kann beliebig gewählt werden. Die Datei ist im Filesystem nie sichtbar. Bei mir liegt die Datei im Home-Verzeichnis des Benutzers. Es können aber auch projektbezogene Umgebungen verwendet werden.


Code fĂĽr .zshrc

Dieser Codeblock in der .zshrc Datei schreibt die Variablen in der Arbeitsspeicher der Terminal-Sitzung.

# Lädt 1Password Environment-Variablen beim Terminal-Start (FIFO-Mount)
# Guard: OP_ENV wird von 1Password in die .env-Datei geschrieben
# Nur lesen, wenn OP_ENV noch nicht gesetzt ist (verhindert Doppelladen)
# Funktionsweise:
# - cat > /tmp/1pw.env → FIFO in normale Datei kopieren (still)
# - while read → Zeile für Zeile lesen, Kommentare überspringen
# - export "$line" → Variable setzen (still)
# - rm → Temp-Datei löschen
# - Kein stdout, kein stderr. Diskret und leise.
if  -z "$OP_ENV" ; then
    if  -e "/Users/pp/.config/1password/.env" ; then
        cat /Users/pp/.config/1password/.env > /tmp/1pw.env 2>/dev/null
        while IFS= read -r line; do
            case "$line" in
                '#'*|'') continue ;;
            esac
            export "$line"
        done < /tmp/1pw.env
        rm -f /tmp/1pw.env
    fi
fi

Kontrolle, ob es funktioniert hat.

pp@MacBookPro2023 ~ >env | grep OP_ENV
OP_ENV=MacBookPro2023pp

Die .env Datei kann auch so ausgelesen werden.

pp@MacBookPro2023 ~ >cat /Users/pp/.config/1password/.env
# Diese Datei wurde von 1Password erstellt. Alle manuellen Änderungen gehen verloren.
# Aus Umgebung erstellt: MacBookPro2023pp
etc.

Zusammenfassung

Der Inhalt der 1Password-Datei wird ohne einen potenziell gefährlicheneval-Befehl ausgeführt. Das Skript kopiert die Daten unbemerkt in eine temporäre Datei, liest sie Zeile für Zeile aus, sortiert Kommentare sowie Leerzeilen automatisch aus und exportiert die Passwörter einzeln ins System. Fehler oder Textausgaben werden komplett unterdrückt – das Skript arbeitet absolut diskret im Hintergrund des Terminal-Starts.

  1. Nur wenn $OP_ENV leer ist → verhindert doppeltes Laden.
  2. Nur wenn die Datei ~/.config/1password/.env existiert → vermeidet Fehlversuche.
  3. Kopiere den Inhalt in /tmp/1pw.env.
  4. Lese Zeile fĂĽr Zeile:
    • Kommentare (# …) und leere Zeilen werden ĂĽbersprungen.
    • Jede gĂĽltige NAME=WERT‑Zeile wird mit export als Umgebungsvariable gesetzt.
  5. Lösche die temporäre Datei wieder

Das Ergebnis ist ein stilles, einmaliges Laden aller von 1Password bereitgestellten Environment‑Variablen, ohne dass dabei etwas auf dem Terminal ausgegeben wird.


Shell-Skript

Wenn ein Shell-Skript direkt gestartet wird, funktioniert dieser Code. Die Variablen werden dabei nicht im Terminalfenster ausgegeben.

#!/bin/bash

# 1Password Local .env File (FIFO-Mount – kein Plaintext auf Disk)
# XDG-Standard: ~/.config/1password/.env
# OP_ENV: von 1Password automatisch in .env gesetzt (z.B. "MacBookPro2023pp")
# Nur Prüfung auf Anwesenheit – Wert ist irrelevant
ENV_FILE="$HOME/.config/1password/.env"
if [ -z "${OP_ENV:-}" ]; then
    if [ -e "$ENV_FILE" ]; then
        eval "$(cat "$ENV_FILE")"
    else
        echo "FEHLER: $ENV_FILE nicht gefunden." >&2
        echo "Richte in der 1Password App ein: Developer → View Environments" >&2
        echo "→ Environment öffnen → Destinations → Local .env file" >&2
        echo "→ Pfad: $ENV_FILE" >&2
        exit 1
    fi
fi

etc.

Zusammenfassung

Dieses Skript sorgt dafür, dass sicherheitsrelevante Umgebungsvariablen (wie Passwörter oder API-Keys) aus 1Password in die Terminal-Sitzung geladen werden.

Das Besondere daran ist die Nutzung eines FIFO-Mounts (einer virtuellen Pipeline). Die .env-Datei liegt niemals als unverschlĂĽsselter Klartext auf deiner echten Festplatte. Stattdessen stellt 1Password die Daten nur genau in dem Moment bereit, in dem das Skript sie liest. Das Skript prĂĽft zuerst, ob die Variablen schon da sind. Wenn nicht, holt es sie aus dieser sicheren Pipeline. Existiert die Pipeline nicht, bricht das Skript ab und zeigt dem Nutzer eine exakte Klickanleitung fĂĽr die 1Password-App.

Der eval Befehl könnte vielleicht vermieden werden. Ich habe diverse Versionen getestet, diese funktioniertet beim 'Direktstart.' Anregungen nehme ich gerne entgegen.


Quellen

https://support.1password.com/
https://1password.com/de/downloads/mac
https://1password.com/de/downloads/windows

https://support.1password.com/explore/get-started/

https://www.1password.dev/get-started/developer-quickstart

https://www.1password.dev/environments
https://www.1password.dev/environments/local-env-file


Video

Beschreibung

Höre auf, Geheimnisse in .env Dateien zu speichern

In diesem Video zeigen wir Ihnen, wie Sie 1Password Environments verwenden können, um Umgebungsvariablen zur Laufzeit sicher zu injizieren, ohne Klartext auf der Festplatte zu speichern.

Sie sehen, wie dieselbe 1Password Environment :

  • Lokale Entwicklung mit op run --environment unterstĂĽtzt
  • Einem Node.js‑Server runtime‑Secrets bereitstellt
  • Sichere Benutzer‑Authentifizierung fĂĽr den Zugriff ermöglicht
  • Headless‑Server ĂĽber Service‑Account‑Tokens versorgt
  • CI/CD‑ und Remote‑Automatisierungs‑Workflows bedient
  • Echtzeit‑Updates liefert, die Development‑ und Staging‑Umgebungen synchron halten

1Password Environments bieten sicheren, schreibgeschützten Zugriff auf Umgebungsvariablen über Entwicklungs‑ und Produktions‑Workflows hinweg.

Wesentliche Vorteile:

  1. Kein Klartext‑Secret auf der Festplatte
  2. Least‑privilege‑Zugriffskontrollen
  3. Sichere Laufzeit‑Injection
  4. Funktioniert mit CLI, SDKs und Service Accounts
  5. Zuverlässige Automatisierung unter macOS und Linux

Mehr erfahren:
https://1password.com/blog/programmatically-read-environments-sdks-desktop

Video

29.10.2025


Die Zusammenfassung wurde mithilfe von KI‑Tools erstellt. Web Clipper → Obsidian → Copilot, unter lokaler Verwendung von gpt‑oss:120b auf einem Mac Studio.
YouTube hat kürzlich die Codierung geändert, der bisherige Code für das Transkript funktioniert nicht mehr. Diesen habe ich nun angepasst. Siehe hier:


Transkript

EinfĂĽhrung

  • Moderne Workflows sind flexibel, dynamisch und setzen auf Automatisierung sowie KI-Tools.
  • Geheimnisse mĂĽssen zur Laufzeit bereitgestellt werden, ohne Klartext auf der Festplatte zu speichern.
  • Teams benötigen sicheren, minimal privilegierten Zugriff zum Teilen von Secrets.

Demo Ablauf

  • Demonstration: Lesen von Umgebungsvariablen aus einem 1Password Environment ĂĽber verschiedene Entwicklungsstadien hinweg.
  • Nutzung des 1Password CLI mit dem neuen op run --environment Flag zur Ăśbergabe einer Environment-ID.
  • Der CLI holt die Variablen und leitet sie an einen Node-Server weiter, der nach Nutzerauthentifizierung Zugriff erhält.
  • Auf einem Headless-Server ohne Desktop-App wird das gleiche Kommando mit einem Service-Account-Token ausgefĂĽhrt.
  • Ă„nderungen im 1Password Environment (z.B. Display Text) werden sofort von Server und Entwicklungsmaschinen reflektiert.

Vorteile

  • Nutzung von 1Password Environments in mehr Workflows fĂĽr Entwicklung und Produktion.
  • Reduzierung der Credential-Exposition durch Pull nur zur Laufzeit.
  • Vermeidung von Klartext-SchlĂĽsseln im Repository oder beim Kopieren zwischen Tools.
  • Sicherere, reproduzierbare Team-Workflows mit einfacher Onboarding-Möglichkeit.

Auf Facebook teilen Auf Linkedin teilen Auf Twitter teilen Per E-Mail senden