🔐 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 Konfigurationsoptionenauth.totp.enabledundauth.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:
- Verantwortungsvolle Offenlegung
Bitte senden Sie uns eine E-Mail an[email protected].
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.