Übersicht
DTZ Identity verwaltet drei Dinge: Rollen, Identitäten und Authentifizierungen für jede Ressource, die innerhalb eines Kontexts lebt. Kontexte sind die organisatorischen Einheiten in DTZ; jede Entität gehört zu einem, und die Zugriffskontrolle läuft darüber.

Kernkonzepte
Kontext
Ein Kontext (context-…) ist der Container für Ihre Anwendungen, Dienste und Abrechnung. Der Ersteller wird automatisch als Context Admin zugewiesen, und eine Service-Identität wie admin@{context_id}.dtz.rocks wird für Automatisierung bereitgestellt.
Identitäten
Eine Identität ist ein Principal (menschlicher Benutzer oder Dienstkonto). Rollenzuweisungen werden an Identitäten gebunden.
Rollen (abstrakt vs. konkret)
- Abstrakte Rollen sind wiederverwendbare Berechtigungssätze, die von jedem DTZ-Dienst definiert werden (z. B. „containers admin“, „objectstore admin“, „billing admin“).
- Konkrete Rollen sind abstrakte Rollen, die an einen Gültigkeitsbereich gebunden sind (entweder ein Kontext oder eine Identität) und als role URI ausgedrückt werden. Diese sind das, was Sie tatsächlich zuweisen.
Beispiele für konkrete role URIs:
- Context-scoped:
https://dtz.rocks/containers/admin/{context_id} - Identity-scoped:
https://dtz.rocks/identity/admin/{identity_id}
Diese Aufteilung hält die Berechtigungslogik konsistent und macht Zuweisungen kontextbewusst.
Rollenbereiche
Identitätsbezogene Rollen
Betreffen Aktionen an der Identität selbst (z. B. wer ein Passwort setzen oder API-Schlüssel für eine Identität erstellen kann).
Häufige Beispiele:
https://dtz.rocks/identity/admin/{identity_id}https://dtz.rocks/billing/admin/{identity_id}https://dtz.rocks/identity/assume/{identity_id}
Kontextbezogene Rollen
Betreffen Aktionen innerhalb eines Kontexts (Deployments, Logs, Object Store usw.).
Häufige Beispiele:
https://dtz.rocks/context/admin/{context_id}https://dtz.rocks/containers/admin/{context_id}https://dtz.rocks/objectstore/admin/{context_id}https://dtz.rocks/observability/admin/{context_id}https://dtz.rocks/containerregistry/admin/{context_id}https://dtz.rocks/rss2email/admin/{context_id}
Jeder DTZ-Dienst kann eigene Rollennamen und Bereiche definieren; die oben gezeigten URIs sind beispielhaft.
Wie Berechtigungen ausgewertet werden
- Authentifizieren (wer Sie sind).
- Konkrete Rollen auflösen für den Aufrufer (Role-URIs auf der Identität).
- Autorisieren basierend darauf, ob eine erforderliche Role-URI mit dem Zielbereich (Kontext oder Identität) und der Aktion übereinstimmt.
Beispiel: Zuweisung und Verwendung einer Rolle
- Weisen Sie die abstrakte Rolle „containers admin“ einem bestimmten Kontext zu → Sie erhalten eine konkrete Rolle:
https://dtz.rocks/containers/admin/context-abc123
- Binden Sie diese Rolle an die Identität
alice@example.com. - Wenn Alice die Containers API innerhalb von
context-abc123aufruft, stimmt die Role-URI überein und die Aktion wird autorisiert. Dieselbe Rolle gewährt keine Rechte in anderen Kontexten.
Authentifizierung
DTZ unterstützt mehrere Authentifizierungsverfahren; verwenden Sie das, das am besten zu Ihrem Client und Ihrer Umgebung passt.
API-Schlüssel
- Schlüssel werden in der Identity-UI erstellt und sind an einen Kontext und eine Identität gebunden.
- Senden über Header:
X-API-KEY: YOUR_API_KEY
- Einige Drittanbieter-Integrationen, die keine Header setzen können, können
apiKeyals Query-Parameter übergeben (nur wenn unvermeidbar).
Bearer-Tokens (Passwort-Login)
Erhalten Sie ein JWT, indem Sie Benutzername/Passwort per POST senden, und schicken Sie dann Authorization: Bearer ….
Request token:
POST https://identity.dtz.rocks/api/2021-02-21/token/auth
Content-Type: application/json
{
"username": "user",
"password": "password"
}
Use token:
curl -H "Authorization: Bearer eyJhb..." \
https://identity.dtz.rocks/api/2021-02-21/me
Sie können das JWT auch als Cookie mit dem Namen dtz-auth verwenden. Basic Auth wird für einige Endpunkte unterstützt (apikey:apikey-1234).
Getting started checklist
- Erstellen oder wählen Sie einen Kontext für Ihre App aus.
- Bestimmen Sie, welche abstrakten Rollen Ihre App benötigt, und binden Sie diese in konkrete Rollen mit den richtigen Bereichen (Kontext vs. Identität).
- Weisen Sie diese konkreten Rollen den Identitäten (Benutzern/Dienstkonten) zu, die sie benötigen.