Controllo Accessi Basato sui Ruoli
Documentazione RBAC (Role-Based Access Control)
Panoramica
Il sistema implementa un modello RBAC completo per gestire il controllo degli accessi su diverse risorse e azioni. È costituito da ruoli, policy e assegnazioni utente-ruolo.
Componenti Principali
Risorse
Il sistema definisce le seguenti risorse protette:
- Audit
- DevPod
- Image
- Payment
- Pubkey
- Registry
- Region
- Resource
- Serverless
- Storage
- Team
- Role
- UserRole
Azioni
Azioni disponibili sulle risorse:
- List
- Get
- Create
- Update
- Delete
Sistema di Ruoli
Un ruolo è una raccolta di permessi che definisce quali azioni un utente può eseguire su risorse specifiche. I ruoli aiutano a organizzare e gestire i diritti di accesso in modo efficiente raggruppando i permessi correlati.
Ruoli Predefiniti
-
AccountAdmin
- Accesso completo alle risorse a livello di account
- Può gestire i membri del team
- Può configurare le impostazioni dell'account
-
Developer
- Può gestire DevPods
- Può gestire risorse Serverless
- Può gestire Immagini
- Può gestire Storage (solo Creazione/Lettura)
-
Auditor
- Accesso in sola lettura ai log di Audit
-
Finance
- Accesso completo alle funzioni di Pagamento
-
Ops
- Accesso in lettura a DevPods e Serverless
- Accesso completo a Immagini, Storage, Pubkey e Risorse
Policy
Le policy sono i blocchi di costruzione fondamentali del controllo degli accessi che definiscono permessi specifici. Ogni policy rappresenta una regola che concede il permesso di eseguire determinate azioni su risorse specifiche.
Struttura delle Policy
- Resource: Risorsa target
- Action: Azione permessa
Assegnazione delle Policy
- Le policy sono assegnate ai ruoli attraverso il mapping RolePolicy
- Più policy possono essere assegnate a un singolo ruolo
- Le assegnazioni delle policy sono uniche per ruolo
Controllo dei Permessi Utente
Il sistema implementa il controllo dei permessi attraverso un modello a tre livelli: Utenti, Ruoli e Policy. I ruoli fungono da ponte tra utenti e policy, fornendo un modo flessibile e gestibile per controllare i diritti di accesso.
Flusso di Controllo
-
Assegnazione Utente
- Gli utenti vengono assegnati a uno o più ruoli
- Le assegnazioni di ruoli sono specifiche per ogni account
- Un utente può avere ruoli diversi in account diversi
-
Ruolo come Ponte
- I ruoli fungono da contenitori per raccolte di policy
- Ogni ruolo definisce un insieme specifico di responsabilità
- I ruoli rendono la gestione dei permessi più manutenibile
-
Applicazione delle Policy
- Le policy definiscono i permessi effettivi
- Ogni richiesta viene validata rispetto alle policy dei ruoli dell'utente
- L'accesso è concesso solo se esiste una policy corrispondente
Processo di Autorizzazione
-
Elaborazione della Richiesta
- Estrazione delle informazioni dell'account
- Identificazione della risorsa target e dell'azione
- Verifica dei ruoli e delle policy dell'utente
-
Controllo dei Permessi
- I ruoli specifici dell'account vengono validati rispetto all'account target
- Il matching delle policy considera sia corrispondenze esatte che wildcard
-
Controllo degli Accessi
- Accesso concesso se un ruolo assegnato ha una policy corrispondente
- Le richieste negate restituiscono risultati vuoti piuttosto che errori
- La registrazione di audit avviene dopo la validazione RBAC
Best Practice
-
Gestione dei Ruoli
- Utilizza i ruoli predefiniti quando possibile
- Crea ruoli personalizzati con i permessi minimi richiesti
- Rivedi regolarmente le assegnazioni dei ruoli
-
Considerazioni sulla Sicurezza
- Valida sempre il contesto dell'account
- Implementa restrizioni UI basate sui ruoli
- Mantieni log di audit per le modifiche ai ruoli
-
Prestazioni
- Le assegnazioni di ruoli e policy sono memorizzate in cache
- Operazioni batch disponibili per assegnazioni in blocco
- Query di database ottimizzate per i controlli dei permessi