Zum Hauptinhalt springen

Key Store

Der Key Store dient als zentrales Repository für Anmeldedaten in Semaphore. Er verwaltet Authentifizierungsmaterialien, die zum Klonen entfernter Git-Repositories, für Verbindungen zu Ziel-Infrastruktur-Hosts, zur Rechteausweitung (sudo/become) und zum Entschlüsseln von Ansible-Vault-Secrets benötigt werden.

Key Store

Der Key Store ist in zwei Hauptansichten unterteilt:

  • Tab Keys: Listet alle für das aktuelle Projekt bereitgestellten Zugangsdaten mit Name, Speicher-Backend, Typ und Synchronisationsstatus auf.
  • Tab Storages (Pro): Konfiguriert externe Secret-Backends (wie HashiCorp Vault, OpenBao, AWS Secrets Manager oder CyberArk) für dynamische Secret-Auflösung und automatische Synchronisation.

Typen von Anmeldedaten​

Semaphore unterteilt gespeicherte Anmeldedaten in drei grundlegende Typen:

1. SSH-Schlüssel​

SSH-Schlüssel bieten eine asymmetrische kryptografische Authentifizierung für Verbindungen zu Linux/UNIX-Knoten und das Klonen von Git-Repositories über SSH ([email protected]:...).

Beim Konfigurieren eines SSH-Schlüssels können Sie folgende Optionen festlegen:

  • Schlüsselname: Eine aussagekräftige Bezeichnung für die Anmeldedaten in Ihren Projektinventaren und Vorlagen.
  • Benutzername (Optional): Das standardmäßige Remote-Benutzerkonto für den SSH-Verbindungsaufbau (z. B. ansible oder ubuntu).
  • Passphrase (Optional): Die Passphrase zum Entschlüsseln verschlüsselter privater Schlüssel. Passphrase-Eingaben bieten ein Sichtbarkeitssymbol (Auge) und sind standardmäßig maskiert.
  • Privater Schlüssel: Der PEM/OpenSSH-Private-Key-Klartext.

Integrierter SSH-Schlüsselgenerator​

Statt ssh-keygen manuell auf externen Maschinen auszuführen, bietet Semaphore einen integrierten Ein-Klick-SSH-Schlüsselpaar-Generator direkt im Modalfenster:

Generate SSH Key Modal

  1. Wählen Sie SSH-Schlüssel im Dropdown-Menü Typ aus.
  2. Aktivieren Sie das Kontrollkästchen SSH-Schlüssel generieren.
  3. Das Textfeld für den manuellen privaten Schlüssel wird automatisch deaktiviert und gesperrt.
  4. Klicken Sie auf Erstellen. Semaphore generiert automatisch ein kryptografisch sicheres Schlüsselpaar (ED25519/RSA), verschlüsselt den privaten Schlüssel in der Datenbank und zeigt den öffentlichen Schlüssel in einem Dialog an:

Generated SSH Public Key

Kopieren Sie den öffentlichen Schlüssel mit der Schaltfläche In die Zwischenablage kopieren und fügen Sie ihn in die Deploy-Keys Ihres Git-Anbieters oder die ~/.ssh/authorized_keys-Datei Ihrer Zielknoten ein.

Öffentliche Schlüssel später abrufen (Public Key Drawer)​

Wenn Sie den Dialog schließen oder den öffentlichen Schlüssel später erneut benötigen, müssen Sie das Schlüsselpaar nicht neu generieren. Beim Bearbeiten eines mit dem Generator erstellten Schlüssels stellt Semaphore einen ausklappbaren Öffentlicher Schlüssel-Bereich bereit:

Public Key Drawer

  • Klicken Sie auf Anzeigen / Ausblenden, um den öffentlichen Schlüsselstring einzusehen.
  • Klicken Sie auf das Zwischenablage-Symbol, um den öffentlichen Schlüssel sofort zu kopieren.

Deploy-Keys bei gängigen Git-Hostern hinterlegen​

Fügen Sie bei Git-Repositories mit SSH-Authentifizierung den generierten öffentlichen Schlüssel als Deploy-Key hinzu:


2. Anmeldung mit Passwort​

Der Anmeldedatentyp Anmeldung mit Passwort unterstützt sowohl traditionelle Benutzername/Passwort-Kombinationen als auch isolierte Secret-Zeichenketten:

  • Host- und Sudo-Authentifizierung: Ermöglicht passwortbasierten SSH-Zugriff und sudo-Rechteausweitung auf Zielsystemen.
  • HTTPS-Git-Authentifizierung: Authentifiziert gegenüber Remote-Repositories über HTTPS mittels Benutzername und Personal Access Tokens (PAT).
  • Ansible-Vault-Passwörter: Entsperrt verschlüsselte Ansible-Vault-Dateien und -Variablen zur Laufzeit.
Secret-Zeichenketten und Personal Access Tokens (PAT)

Um eine reine Secret-Zeichenkette zu speichern (wie ein API-Token, Vault-Passwort oder PAT), lassen Sie das Feld Benutzername leer. Semaphore behandelt den Eintrag dann als reines Secret ohne zugehörigen Benutzernamen.

Maskierung und Überschreibschutz​

Zum Schutz vor unbefugter Einsicht und versehentlicher Änderung:

  • Passwort- und Passphrase-Eingaben sind maskiert und verfügen über Umschaltoptionen für die Sichtbarkeit.
  • Beim Bearbeiten bestehender Anmeldedaten sind sensible Secret-Eingaben standardmäßig deaktiviert.
  • Um ein bestehendes Secret zu aktualisieren, müssen Sie das Kontrollkästchen Überschreiben am Ende des Formulars aktivieren. Diese Schutzfunktion verhindert versehentliches Überschreiben bei routinemäßigen Änderungen.

3. Keine​

Der Typ Keine dient als Null-Authentifizierungs-Platzhalter. Er wird für öffentliche Open-Source-Git-Repositories (z. B. auf GitHub oder GitLab) und lokale Playbook-Ausführungen ohne SSH-Schlüssel oder Passwörter verwendet.


Secret-Speicher​

Semaphore unterstützt entkoppelte Secret-Speicherarchitekturen. Beim Erstellen oder Bearbeiten können Sie über die Speicher-Tabs wählen, wo das Secret abgelegt wird:

Speicher-TabVerfügbarkeitBeschreibung
LokalOpen Source & ProSecret wird direkt in der Semaphore-Datenbank mit Umschlagverschlüsselung gespeichert.
SpeicherProSecret verweist auf eine externe Secret-Engine (z. B. HashiCorp Vault, AWS Secrets Manager).
EnvOpen Source & ProSecret wird zur Laufzeit aus einer Umgebungsvariablen auf dem Semaphore-Server aufgelöst.
DateiOpen Source & ProSecret wird aus einer geschützten Datei im konfigurierten Secrets-Verzeichnis gelesen.

Secret-Speicher

Datenbank-Speicher (Lokal)​

Standardmäßig werden Secrets verschlüsselt in der Datenbank mittels symmetrischer AES-Verschlüsselung abgelegt. Der Hauptschlüssel wird über die Serverkonfiguration definiert:

  • Konfigurationsschlüssel: access_key_encryption
  • Umgebungsvariable: SEMAPHORE_ACCESS_KEY_ENCRYPTION
Generierung des Master-Schlüssels

Erzeugen Sie vor dem Start von Produktionsinstanzen einen kryptografisch sicheren 32-Byte-Base64-Schlüssel:

head -c32 /dev/urandom | base64

Sichern Sie diesen Schlüssel sorgfältig. Bei Verlust des Schlüssels können bestehende Secrets nicht wiederhergestellt werden.

Umgebungsvariablen & Dateien (Schreibgeschützt)​

Wenn Sie den Tab Env oder Datei wählen, behandelt Semaphore die Quelle als extern und schreibgeschützt. Die Oberfläche zeigt einen entsprechenden Hinweis an:

Read-only secret storage chosen.

Schreibgeschützter Speicher

  • Env-Quelle: Geben Sie den exakten Namen der Umgebungsvariablen an (z. B. SEMAPHORE_EXTERNAL_VAULT_TOKEN).
  • Datei-Quelle: Geben Sie den relativen Pfad zum konfigurierten Verzeichnis an (dirs.secrets / SEMAPHORE_SECRETS_PATH, Standard /tmp/semaphore).

Für strukturierte Schlüssel müssen Datei- und Variableninhalte als gültiges JSON formatiert sein. Details finden Sie unter Umgebungs- und Dateiquellen.

Externe Enterprise-Secret-Engines (Pro & Enterprise)​

Semaphore Pro und Enterprise erweitern den Key Store um native Anbindungen an führende Secret-Manager:


Secrets aus Remote-Speichern synchronisieren​

Statt Anmeldedaten einzeln manuell anzulegen, unterstützt Semaphore eine automatisierte Synchronisation aus externen Vaults.

Wenn ein Secret über Synchronisation verwaltet wird:

  • Wird es mit einem aktiven synchronized-Badge in der Key-Store-Tabelle gekennzeichnet.
  • Ist die manuelle Bearbeitung des Inhalts gesperrt, um den externen Tresor als Single Source of Truth zu wahren.
  • Werden Aktualisierungen oder Rotationen automatisch gemäß dem konfigurierten Intervall nach Semaphore übertragen.

Detaillierte Konfigurationsschritte finden Sie unter Secret-Synchronisation.