Zum Hauptinhalt springen

🔐 Sicherheit

Einführung

Sicherheit hat in Semaphore UI höchste Priorität. Ob Sie kritische Infrastrukturaufgaben automatisieren oder den Teamzugriff auf sensible Systeme verwalten – Semaphore UI ist darauf ausgelegt, von Haus aus einen robusten und sicheren Betrieb zu bieten. Dieser Abschnitt beschreibt, wie Semaphore mit Sicherheit umgeht und was Sie beim Einsatz in der Produktion beachten sollten.

Authentifizierung & Autorisierung

Semaphore unterstützt sichere Authentifizierung und flexible Autorisierungsmechanismen:

  • Anmeldemethoden:

    • Benutzername/Passwort
      Standardmethode mit Anmeldedaten, die in der Semaphore-Datenbank gespeichert sind. Passwörter werden mit einem starken Algorithmus (bcrypt) gehasht.

    • LDAP
      Ermöglicht die Integration mit Unternehmensverzeichnisdiensten. Unterstützt Benutzer-/Gruppenfilterung und sichere Verbindungen über LDAPS.

    • OpenID Connect (OIDC)
      Ermöglicht Single Sign-on mit Identitätsanbietern wie Google, Azure AD oder Keycloak. Unterstützt benutzerdefinierte Claims und Gruppenzuordnungen.

  • Zwei-Faktor-Authentifizierung (2FA)
    TOTP-basierte 2FA ist verfügbar und wird für alle Benutzer empfohlen. Sie kann pro Benutzer aktiviert werden und unterstützt optionale Wiederherstellungscodes. Siehe die Konfigurationsoptionen auth.totp.enabled und auth.totp.allow_recovery.

  • Rollenbasierte Zugriffskontrolle
    Sie können Benutzern unterschiedliche Rollen wie Admin, Maintainer oder Viewer zuweisen und so den Zugriff entsprechend der Verantwortung einschränken.

  • Sitzungsverwaltung
    Sitzungen werden durch sichere HTTP-Cookies geschützt. Sitzungsablauf und Abmeldemechanismen sorgen für eine minimale Angriffsfläche.

Geheimnisse & Anmeldedaten

Die sichere Verwaltung von Geheimnissen ist eine Kernfunktion:

  • Verschlüsselter Schlüsselspeicher
    Anmeldedaten und geheime Variablen werden im Ruhezustand mit AES-Verschlüsselung verschlüsselt.

  • Umgebungsisolation
    Geheimnisse werden Jobs nur zur Laufzeit übergeben und nicht direkt in der Container-Umgebung offengelegt.

  • SSH-Schlüssel und Token
    Benutzer sind dafür verantwortlich, gültige SSH-Schlüssel und Token hochzuladen. Diese werden verschlüsselt und nur beim Ausführen von Tasks verwendet.

  • HashiCorp-Vault-Integration (Pro)
    Geheimnisse können in einer externen Vault-Instanz gespeichert werden. Wählen Sie den Speicherort pro Geheimnis beim Erstellen oder Bearbeiten eines Geheimnisses.

Datenverschlüsselung

Sensible Daten werden in verschlüsselter Form in der Datenbank gespeichert. Sie sollten die Konfigurationsoption access_key_encryption in der Konfigurationsdatei setzen, um die Verschlüsselung der Access Keys zu aktivieren. Der Schlüssel muss mit folgendem Befehl generiert werden:

head -c32 /dev/urandom | base64

Ausführen von nicht vertrauenswürdigem Code / Playbooks

Semaphore führt benutzerdefinierte Playbooks und Befehle aus, was riskant sein kann:

  • Container-Isolation
    Tasks werden in isolierten Docker-Containern ausgeführt. Diese Container haben keinen Zugriff auf das Hostsystem.

  • Minimale Rechte
    Container laufen mit minimalen Berechtigungen und können über Docker-Flags weiter eingeschränkt werden.

  • Chroot-Ausführung
    Semaphore kann Tasks in einem Chroot-Jail ausführen, um die Ausführungsumgebung weiter vom Hostsystem zu isolieren.

  • Prozessbenutzer für Tasks
    Tasks können unter einem dedizierten Systembenutzer ohne Root-Rechte (z. B. semaphore) ausgeführt werden, um die Auswirkungen potenzieller Exploits zu verringern. Dies ist optional und kann entsprechend den Systemrichtlinien konfiguriert werden.

Sichere Bereitstellung

Um sicherzustellen, dass Semaphore sicher bereitgestellt wird:

  • HTTPS verwenden
    Semaphore unterstützt HTTPS sowohl über die integrierte TLS-Unterstützung als auch über einen Reverse-Proxy wie Nginx. Es wird dringend empfohlen, HTTPS in der Produktion zu aktivieren.

    Um die integrierte HTTPS-Unterstützung zu aktivieren, fügen Sie folgenden Block zur config.json hinzu:

    {
    ...
    "tls": {
    "enabled": true,
    "cert_file": "/path/to/cert/example.com.cert",
    "key_file": "/path/to/key/example.com.key"
    }
    ...
    }
  • Hinter einer Firewall betreiben
    Beschränken Sie den Zugriff auf Semaphore UI und die Datenbank auf vertrauenswürdige IP-Adressen.

  • Datenbanksicherheit
    Verwenden Sie starke Passwörter und beschränken Sie den Datenbankzugriff ausschließlich auf Semaphore.

Updates & Patch-Management

Sicherheitsupdates werden regelmäßig veröffentlicht:

  • Aktuell bleiben
    Verwenden Sie immer die neueste stabile Version.

  • Changelog
    Prüfen Sie die Änderungen auf GitHub, bevor Sie aktualisieren.

  • Automatische Updates
    Wenn Sie Docker verwenden, ziehen Sie Automatisierungs-Pipelines für regelmäßige Updates in Betracht.

Melden von Schwachstellen

Sie haben eine Schwachstelle gefunden? Helfen Sie uns, Semaphore sicher zu halten:

Zielfristen für die Behebung von Schwachstellen

Wir streben an, gemeldete Schwachstellen innerhalb der folgenden Zeitfenster zu beheben:

  • Kritisch: innerhalb von 30 Tagen
  • Hoch: innerhalb von 60 Tagen
  • Mittel: innerhalb von 90 Tagen
  • Niedrig: nach bestem Bemühen, in der Regel innerhalb von 180 Tagen

Für aktiv ausgenutzte Probleme, die die neuesten stabilen Versionen betreffen, können außerplanmäßige Patches veröffentlicht werden.

Werkzeuge für die Codesicherheit

Wir verwenden CodeQL, Codacy, Snyk und Renovate, um den Code und die Abhängigkeiten zu analysieren und Abhängigkeitsupdates zu automatisieren.

  • Keine öffentlichen Exploits
    Veröffentlichen Sie Schwachstellen nicht, bevor sie gepatcht sind.

  • Danksagungen
    Sicherheitsforscher können auf Wunsch in den Versionshinweisen genannt werden.