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 |
| User API-Keys | Programmatischer Zugriff als angemeldeter Benutzer | CLI, Scripts, CI/CD |
| System API Keys | Globaler API-Zugriff ohne Benutzerkontext | Customer Portal Backend, Automatisierung |
| Organization API Keys | Org-scopter API-Zugriff für Kunden | Self-Service-Portale, Kunden-Automatisierung |
| Agent-Tokens | Monitoring-Agents | Automatisierte Checks |
MCP (AI in der IDE)
User-, Organisations- und System-API-Keys authentifizieren den API-MCP (Authorization: Bearer … gegen /mcp). Session-Login und Agent-Tokens gelten dort nicht. MCP bleibt read-only.
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.
System API Keys¶
System API Keys sind Tokens für Dienste, die globalen Zugriff auf die Polycrate API benötigen – ohne Benutzerkontext. Typischer Anwendungsfall ist ein Customer Portal-Backend, das im Namen von Kunden Ressourcen verwaltet.
Berechtigungen¶
- Vollzugriff wie ein Super Admin (alle Organisationen, alle Ressourcen)
- Optional im
read-Modus (nur lesende Zugriffe) - Können Organization API Keys anlegen, auflisten und löschen
System API Key anlegen¶
- Administration → System API Keys → + Neu
- Namen vergeben und Zugriffsmodus wählen (
readoderread_write) - Token wird genau einmal angezeigt – sofort sichern
Verwendung¶
curl https://api.acme.corp/api/v1/organizations/ \
-H "Authorization: Bearer <system-api-key-token>"
Token-Sicherheit
System API Keys haben Super-Admin-Rechte. Den Token nur an vertrauenswürdige Backend-Dienste weitergeben, niemals in Frontends oder öffentlichen Repositories ablegen.
Kein Regenerate
Um einen Token zu erneuern, muss der Key gelöscht und neu erstellt werden. Ein Regenerate-Mechanismus existiert nicht.
Organization API Keys¶
Organization API Keys sind Tokens mit Org-Scope für Kunden oder Drittsysteme, die im Namen einer bestimmten Organisation handeln. Sie sehen und verwalten nur Ressourcen der eigenen Organisation.
Berechtigungen¶
- Zugriff auf alle Ressourcen der eigenen Organisation (DNS-Zonen, Buckets, Endpoints, Backups, …)
- Optional im
read-Modus (nur lesende Zugriffe) - Können durch System API Keys oder Administratoren angelegt werden
Organization API Key anlegen¶
Als Administrator (oder via System API Key):
POST /api/v1/organizations/{org-name}/api-keys/
{
"name": "customer-portal-prod",
"access_mode": "read_write"
}
In der Web-UI: Organisation öffnen → Tab API Keys → + Neu
Der Token wird einmalig in der Response zurückgegeben.
Verwendung¶
curl https://api.acme.corp/api/v1/domains/dnszones/ \
-H "Authorization: Bearer <org-api-key-token>"
Der Zugriff ist automatisch auf die eigene Organisation beschränkt – Cross-Tenant-Zugriffe werden mit 403 abgelehnt.
Kein Regenerate
Um einen Token zu erneuern, muss der Key gelöscht und neu erstellt werden.
User API-Keys¶
Was sind User API-Keys?¶
User API-Keys sind langlebige Tokens für programmatischen Zugriff als angemeldeter Benutzer. Sie haben dieselben Rechte wie der Benutzer, der sie erstellt hat.
User 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¶
User API-Key-Eigenschaften¶
| Eigenschaft | Beschreibung |
|---|---|
| Name | Benutzerfreundlicher Identifier |
| Created At | Erstellungszeitpunkt |
| Expires At | Ablaufdatum (optional) |
| Last Used | Letzte Verwendung |
| Scopes | Berechtigungsbereiche (zukünftig) |
User 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.