API-Keys & Authentifizierung
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 |
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>"
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.
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!
API-Key verwenden
=== "CLI-Konfiguration"
# ~/.polycrate/polycrate.yml
api:
enabled: true
url: https://hub.polycrate.io
api_key: poly_abc123def456...
=== "cURL"
curl -X GET https://hub.polycrate.io/api/v1/workspaces/ \
-H "Authorization: Bearer poly_abc123def456..."
=== "Python"
import requests
headers = {
"Authorization": "Bearer poly_abc123def456..."
}
response = requests.get(
"https://hub.polycrate.io/api/v1/workspaces/",
headers=headers
)
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
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
polycrate api agent --agent-token "agt_xyz789..."
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
=== "Umgebungsvariablen"
export POLYCRATE_API_KEY="poly_abc123..."
polycrate run my-block install
=== "Secret Manager"
# AWS Secrets Manager
export POLYCRATE_API_KEY=$(aws secretsmanager get-secret-value \
--secret-id polycrate/api-key --query SecretString --output text)
=== "CI/CD Secrets"
# GitHub Actions
- name: Run Polycrate
env:
POLYCRATE_API_KEY: ${{ secrets.POLYCRATE_API_KEY }}
run: polycrate run my-block deploy
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.