Account

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

  1. AccountAdmin

    • Accesso completo alle risorse a livello di account
    • Può gestire i membri del team
    • Può configurare le impostazioni dell'account
  2. Developer

    • Può gestire DevPods
    • Può gestire risorse Serverless
    • Può gestire Immagini
    • Può gestire Storage (solo Creazione/Lettura)
  3. Auditor

    • Accesso in sola lettura ai log di Audit
  4. Finance

    • Accesso completo alle funzioni di Pagamento
  5. 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

  1. 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
  2. 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
  3. 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

  1. Elaborazione della Richiesta

    • Estrazione delle informazioni dell'account
    • Identificazione della risorsa target e dell'azione
    • Verifica dei ruoli e delle policy dell'utente
  2. Controllo dei Permessi

    • I ruoli specifici dell'account vengono validati rispetto all'account target
    • Il matching delle policy considera sia corrispondenze esatte che wildcard
  3. 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

  1. Gestione dei Ruoli

    • Utilizza i ruoli predefiniti quando possibile
    • Crea ruoli personalizzati con i permessi minimi richiesti
    • Rivedi regolarmente le assegnazioni dei ruoli
  2. Considerazioni sulla Sicurezza

    • Valida sempre il contesto dell'account
    • Implementa restrizioni UI basate sui ruoli
    • Mantieni log di audit per le modifiche ai ruoli
  3. 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