Aperçu
DTZ Identity gère trois éléments : Rôles, Identités et Authentifications pour chaque ressource qui vit à l’intérieur d’un Contexte. Les Contextes sont les unités organisationnelles dans DTZ ; chaque entité appartient à un contexte, et le contrôle d’accès s’y applique.

Concepts clés
Context
Un Contexte (context-…) est le conteneur de vos applications, services et facturation. Le créateur se voit automatiquement attribuer le rôle Context Admin, et une identité de service comme admin@{context_id}.dtz.rocks est provisionnée pour l’automatisation.
Identités
Une Identité est un principal (utilisateur humain ou compte de service). Vous lierez des attributions de rôles aux identités.
Rôles (Abstraits vs. Concrets)
- Les rôles abstraits sont des ensembles d’autorisations réutilisables définis par chaque service DTZ (par ex., « containers admin », « objectstore admin », « billing admin »).
- Les rôles concrets sont des rôles abstraits attachés à une portée (soit un Contexte, soit une Identité) et exprimés comme une URI de rôle. Ce sont ceux que vous assignez réellement.
Exemples d’URI de rôles concrets :
- Portée Contexte :
https://dtz.rocks/containers/admin/{context_id} - Portée Identité :
https://dtz.rocks/identity/admin/{identity_id}
Cette séparation maintient la logique des permissions cohérente tout en rendant les attributions dépendantes du contexte.
Portées des rôles
Rôles à portée Identité
Affectent les actions sur l’identité elle-même (par ex., qui peut définir un mot de passe ou créer des clés API pour une identité).
Exemples courants :
https://dtz.rocks/identity/admin/{identity_id}https://dtz.rocks/billing/admin/{identity_id}https://dtz.rocks/identity/assume/{identity_id}
Rôles à portée Contexte
Affectent les actions au sein d’un contexte (déploiements, logs, stockage d’objets, etc.).
Exemples courants :
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}
Chaque service DTZ peut définir ses propres noms et portées de rôles ; les URI ci-dessus sont représentatives.
Comment les permissions sont évaluées
- Authentifier (qui vous êtes).
- Résoudre les rôles concrets pour l’appelant (URI de rôle sur l’identité).
- Autoriser en vérifiant si une URI de rôle requise correspond à la portée cible (contexte ou identité) et à l’action.
Exemple : assigner et utiliser un rôle
- Assignez le rôle abstrait « containers admin » à un contexte spécifique → vous obtenez un rôle concret :
https://dtz.rocks/containers/admin/context-abc123
- Liez ce rôle à l’identité
alice@example.com. - Lorsque Alice appelle l’API Containers à l’intérieur de
context-abc123, l’URI de rôle correspond et l’action est autorisée. Le même rôle ne confère pas de droits dans d’autres contextes.
Authentification
DTZ prend en charge plusieurs méthodes d’auth ; utilisez celle qui convient à votre client et à votre environnement.
Clés API
- Les clés sont créées dans l’UI Identity et sont restreintes à un contexte et une identité.
- Envoyer via l’en-tête :
X-API-KEY: YOUR_API_KEY
- Certaines intégrations tierces qui ne peuvent pas définir d’en-têtes peuvent passer
apiKeyen paramètre de requête (à utiliser uniquement en dernier recours).
Jetons Bearer (connexion par mot de passe)
Obtenez un JWT en POSTant le nom d’utilisateur/mot de passe, puis envoyez Authorization: Bearer ….
Requête pour obtenir le jeton :
POST https://identity.dtz.rocks/api/2021-02-21/token/auth
Content-Type: application/json
{
"username": "user",
"password": "password"
}
Utilisation du jeton :
curl -H "Authorization: Bearer eyJhb..." \
https://identity.dtz.rocks/api/2021-02-21/me
Vous pouvez aussi utiliser le JWT comme cookie nommé dtz-auth. L’authentification basique est prise en charge pour certains endpoints (apikey:apikey-1234).
Checklist de démarrage
- Créez ou sélectionnez un Contexte pour votre application.
- Décidez des rôles abstraits dont votre application a besoin et liez-les en rôles concrets aux bonnes portées (Contexte vs. Identité).
- Assignez ces rôles concrets aux identités (utilisateurs/comptes de service) qui en ont besoin.