API-Keys & Authentifizierung¶
Übersicht¶
Die Polycrate API unterstützt mehrere Authentifizierungsmethoden für unterschiedliche Anwendungsfälle:
| Methode | Anwendungsfall | Empfohlen für |
|---|---|---|
| SSO (OIDC) | Web-Login | Benutzer im Browser |
| API-Keys | Programmatischer Zugriff | CLI, Scripts, CI/CD |
| Agent-Tokens | Monitoring-Agents | Automatisierte Checks |
SSO / OIDC¶
Unterstützte Provider¶
Die Polycrate API unterstützt OpenID Connect (OIDC) mit:
- Keycloak (Standard)
- Azure AD / Entra ID
- Okta
- Google Workspace
- Andere OIDC-kompatible Provider
Login-Flow¶
┌─────────┐ ┌─────────────┐ ┌──────────────┐
│ Browser │─────▶│ Polycrate │─────▶│ SSO Provider │
│ │ │ API │ │ (Keycloak) │
└─────────┘ └─────────────┘ └──────────────┘
│ ▲ │
│ │ │
│ ┌──────┴──────┐ │
│ │ Session │ │
│ │ erstellt │ │
│ └─────────────┘ │
│ │
└───────────────────────────────────────┘
Redirect nach Login
Gruppen-Mapping¶
OIDC-Gruppen können automatisch auf Polycrate-Rollen gemappt werden:
| OIDC-Gruppe | Polycrate-Rolle |
|---|---|
polycrate-admins | Super Admin |
polycrate-{org}-admins | Org Admin |
polycrate-{org}-users | User |
polycrate-{org}-viewers | Viewer |
Die Gruppennamen sind über Environment-Variablen konfigurierbar (nicht hardcoded):
| Variable | Beschreibung | Default |
|---|---|---|
OPENID_CONNECT_ADMIN_GROUPS | Komma-getrennte Liste von Gruppen für Super Admin | (leer) |
OPENID_CONNECT_STAFF_GROUPS | Komma-getrennte Liste von Gruppen für Staff-Zugriff | (leer) |
Die Gruppennamen in der Tabelle oben sind Konventionen – in der Praxis muss der Wert in der Env-Variable mit den tatsächlichen Keycloak-Gruppennamen übereinstimmen.
Keycloak OIDC einrichten¶
Für den SSO-Login muss in Keycloak ein OIDC Client konfiguriert werden:
- Client erstellen: Clients → Create client → Client ID (z. B.
polycrate-api), Client authentication: ON (confidential), Standard flow: ON - Redirect URIs setzen: Valid redirect URIs:
https://<polycrate-api-host>/* - Client Secret kopieren: Tab Credentials → Client Secret
- Groups Scope erstellen: Client Scopes → Create → Name:
groups, Mapper: Group Membership (Token Claim Name:groups, Full group path: OFF) - Scope zuweisen: Client → Client Scopes → Add
groupsals Default
Die OIDC-Konfiguration erfolgt über Environment-Variablen:
| Variable | Beschreibung |
|---|---|
OPENID_CONNECT_ENABLED | True zum Aktivieren |
OPENID_CONNECT_PROVIDER_ID | Eindeutige Provider-ID (z. B. keycloak) |
OPENID_CONNECT_PROVIDER_NAME | Anzeigename auf der Login-Seite |
OPENID_CONNECT_CLIENT_ID | Client ID aus Keycloak |
OPENID_CONNECT_CLIENT_SECRET | Client Secret aus Keycloak |
OPENID_CONNECT_SERVER_URL | Issuer-URL (z. B. https://id.example.com/realms/master) |
OPENID_CONNECT_TOKEN_AUTH_METHOD | client_secret_post (Standard) |
Die Scopes openid, email, profile und groups werden automatisch angefordert.
API-Keys¶
Was sind API-Keys?¶
API-Keys sind langlebige Tokens für programmatischen Zugriff. Sie werden vom Benutzer erstellt und können jederzeit widerrufen werden.
API-Key erstellen¶
- Öffnen Sie Profil → API-Keys
- Klicken Sie + Neuer API-Key
- Geben Sie einen Namen ein (z.B. "MacBook Pro", "CI/CD Pipeline")
- Optional: Ablaufdatum setzen
- Wichtig: Token wird nur einmal angezeigt – sofort kopieren!
Token-Sicherheit
Der API-Key wird nur einmalig nach Erstellung angezeigt. Speichern Sie ihn sicher – er kann nicht erneut abgerufen werden!
API-Key verwenden¶
API-Key-Eigenschaften¶
| Eigenschaft | Beschreibung |
|---|---|
| Name | Benutzerfreundlicher Identifier |
| Created At | Erstellungszeitpunkt |
| Expires At | Ablaufdatum (optional) |
| Last Used | Letzte Verwendung |
| Scopes | Berechtigungsbereiche (zukünftig) |
API-Key widerrufen¶
- Öffnen Sie Profil → API-Keys
- Finden Sie den zu widerrufenden Key
- Klicken Sie Löschen
- Bestätigen Sie die Aktion
Sofortige Wirkung
Nach dem Widerruf ist der API-Key sofort ungültig. Alle Anfragen damit schlagen fehl.
Agent-Tokens¶
Was sind Agent-Tokens?¶
Agent-Tokens sind spezielle Tokens für Polycrate Monitoring Agents. Sie haben eingeschränkte Berechtigungen:
- ✅ Endpoints abrufen
- ✅ Check-Ergebnisse melden
- ✅ Agent-Status aktualisieren
- ❌ Konfiguration ändern
- ❌ Auf andere Ressourcen zugreifen
Agent-Token erstellen¶
- Öffnen Sie Monitoring → Agents
- Klicken Sie + Neuer Agent
- Geben Sie einen Namen und Standort ein
- Agent-Token wird generiert
Agent-Token verwenden¶
Berechtigungsmodell¶
Rollen-Hierarchie¶
Super Admin
│ Alle Rechte im System
│
▼
Org Admin
│ Alle Rechte in einer Organisation
│
▼
Workspace Admin
│ Alle Rechte in einem Workspace
│
▼
User
│ Lesen + Schreiben (eingeschränkt)
│
▼
Viewer
│ Nur Lesen
Standard-Berechtigungen¶
| Aktion | Super Admin | Org Admin | WS Admin | User | Viewer |
|---|---|---|---|---|---|
| Organisationen verwalten | ✅ | ❌ | ❌ | ❌ | ❌ |
| Workspaces erstellen | ✅ | ✅ | ❌ | ❌ | ❌ |
| Workspaces konfigurieren | ✅ | ✅ | ✅ | ❌ | ❌ |
| Action-Runs ausführen | ✅ | ✅ | ✅ | ✅ | ❌ |
| Dashboard ansehen | ✅ | ✅ | ✅ | ✅ | ✅ |
| Alerts bestätigen | ✅ | ✅ | ✅ | ✅ | ❌ |
| API-Keys erstellen | ✅ | ✅ | ✅ | ✅ | ❌ |
Sicherheits-Best-Practices¶
API-Key-Management¶
- Separate Keys pro Anwendungsfall
- Einen für lokale Entwicklung
- Einen für CI/CD
-
Einen pro Automatisierungs-Script
-
Ablaufdaten setzen
- CI/CD-Keys: 90 Tage
- Entwickler-Keys: 365 Tage
-
Temporäre Keys: 7 Tage
-
Regelmäßige Rotation
- Kritische Keys alle 90 Tage
- Alle Keys mindestens jährlich
Secret-Storage¶
Niemals tun¶
- ❌ API-Keys in Git committen
- ❌ Keys in Logs ausgeben
- ❌ Keys in öffentlichen Kanälen teilen
- ❌ Einen Key für alles verwenden
- ❌ Keys ohne Ablaufdatum für CI/CD
Audit-Logging¶
Alle Authentifizierungs-Events werden geloggt:
| Event | Geloggte Daten |
|---|---|
| Login (SSO) | Benutzer, IP, Zeitpunkt, Provider |
| API-Key erstellt | Benutzer, Key-Name, Zeitpunkt |
| API-Key verwendet | Key-ID, Endpoint, IP, Zeitpunkt |
| API-Key widerrufen | Benutzer, Key-ID, Zeitpunkt |
| Fehlgeschlagener Login | IP, Zeitpunkt, Grund |
Logs sind unter Administration → Audit Logs einsehbar.