Panoramica
DTZ Identity gestisce tre elementi: Ruoli, Identità e Autenticazioni per ogni risorsa che risiede all’interno di un Contesto. I contesti sono le unità organizzative in DTZ; ogni entità appartiene a uno di essi e il controllo degli accessi fluisce attraverso di essi.

Concetti principali
Contesto
Un Contesto (context-…) è il contenitore per le tue applicazioni, servizi e la fatturazione. Il creatore viene assegnato automaticamente come Context Admin, e viene fornita un’identità di servizio come admin@{context_id}.dtz.rocks per l’automazione.
Identità
Un’Identità è un principale (utente umano o account di servizio). Le assegnazioni di ruolo vengono associate alle identità.
Ruoli (Astratti vs. Concreti)
- I ruoli astratti sono insiemi di permessi riutilizzabili definiti da ciascun servizio DTZ (ad es., “containers admin”, “objectstore admin”, “billing admin”).
- I ruoli concreti sono ruoli astratti vincolati a uno scope (o a un Contesto o a un’Identità) ed espressi come una URI di ruolo. Questi sono quelli che assegni effettivamente.
Esempi di URI di ruolo concreti:
- Context-scoped:
https://dtz.rocks/containers/admin/{context_id} - Identity-scoped:
https://dtz.rocks/identity/admin/{identity_id}
Questa separazione mantiene la logica dei permessi coerente rendendo le assegnazioni consapevoli del contesto.
Ambiti dei ruoli
Ruoli con ambito identità
Influenzano azioni sull’identità stessa (ad es., chi può impostare una password o creare chiavi API per un’identità).
Esempi comuni:
https://dtz.rocks/identity/admin/{identity_id}https://dtz.rocks/billing/admin/{identity_id}https://dtz.rocks/identity/assume/{identity_id}
Ruoli con ambito contesto
Influenzano azioni all’interno di un contesto (distribuzioni, log, object store, ecc.).
Esempi comuni:
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}
Ogni servizio DTZ può definire i propri nomi di ruolo e ambiti; gli URI sopra sono rappresentativi.
Come vengono valutati i permessi
- Autenticazione (chi sei).
- Risolvi i ruoli concreti per il chiamante (URI di ruolo sull’identità).
- Autorizza basandosi sul fatto che un URI di ruolo richiesto corrisponda allo scope di destinazione (contesto o identità) e all’azione.
Esempio: assegnare e usare un ruolo
- Assegna il ruolo astratto “containers admin” a uno specifico contesto → ottieni un ruolo concreto:
https://dtz.rocks/containers/admin/context-abc123
- Associa quel ruolo all’identità
alice@example.com. - Quando Alice invoca le API dei Containers all’interno di
context-abc123, l’URI del ruolo corrisponde e l’azione è autorizzata. Lo stesso ruolo non concede diritti in altri contesti.
Autenticazione
DTZ supporta più metodi di autenticazione; usa quello che si adatta al tuo client e all’ambiente.
Chiavi API
- Le chiavi vengono create nell’interfaccia Identity e sono vincolate a un contesto e a un’identità.
- Inviare tramite header:
X-API-KEY: YOUR_API_KEY
- Alcune integrazioni di terze parti che non possono impostare header possono passare
apiKeycome parametro di query (usare solo quando inevitabile).
Token Bearer (accesso con password)
Ottieni un JWT facendo POST di username/password, poi invia 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
Puoi anche usare il JWT come cookie chiamato dtz-auth. L’autenticazione Basic è supportata per alcuni endpoint (apikey:apikey-1234).
Checklist per iniziare
- Crea o seleziona un Contesto per la tua app.
- Decidi quali ruoli astratti servono alla tua app e vincolali in ruoli concreti agli ambiti giusti (Contesto vs. Identità).
- Assegna quei ruoli concreti alle identità (utenti/account di servizio) che ne hanno bisogno.