secrethubwarden – Secrets von Bitwarden zu GitHub synchronisieren

Bitwarden ist aktuell mein persönlicher Passwortmanager. Und meine privaten Projekte deploye ich bevorzugt über GitHub Actions. Dabei verwende ich Repository Secrets um sensitive Daten wie Passwörter oder Secret Keys sicher abzulegen. Das manuelle Herumkopieren dieser Daten ist allerdings fehleranfällig und hätte ich gerne automatisiert. Eine existierende Lösung für mein Problem fand ich nicht, dafür ein Projekt mit ähnlicher Funktionalität: envwarden. Davon inspiriert habe ich mir ein eigenes Skript geschrieben und veröffentlicht:

secrethubwarden

(Habe ich an dieser Stelle schon mal erwähnt, dass ich schlecht im Namen vergeben bin?)

Dieses Bash-Skript nimmt die Konfigurationsdatei .secrethubwarden mit folgendem Format:

MY_SECRET_PASSWORD=secrethubwarden Example Password
MY_SECRET_NOTE=Secret Note Name

Danach benutzt es die Bitwarden-CLI um im Passwort-Vault das entsprechende Passwort (z.B. secrethubwarden Example Password) zu suchen, und schreibt dieses mit der GitHub-CLI als Repository Secret (Hier: MY_SECRET_PASSWORD) hinein. Ohne dass du dein Passwort je zu Gesicht bekommst.

Ich benutze secrethubwarden bereits erfolgreich in verschiedenen Projekten. Es ist etwas langsam, aber es nimmt mir viel Handarbeit ab. Und animiert mich damit dazu sensitive Daten noch konsequenter aus dem Sourcecode rauszuhalten.

Feedback ist willkommen.

GitHub Action: Mehrzeiliges Secret in eine Datei schreiben

Um beispielsweise eine .env-Datei in einer GitHub Action aus einem Secret heraus zu befüllen, muss sich leider mit fehlenden Zeilenumbrüche herumschlagen.

Ein einfacher Trick habe ich in einem Stackoverflow-Kommentar gefunden: Die unerwünschten Leerzeichen mit tr in Newlines verwandeln.

- name: Write .env
  run: |
    echo $ENV_FILE | tr ' ' '\n' > .env
  shell: bash
  env:
    ENV_FILE: ${{secrets.DOTENV}}

Nachteil dieser Methode: Das Secret selber darf keine Leerzeichen enthalten.