Ho bisogno di progettare e implementare una libreria RBAC (controllo di accesso basato sui ruoli) per proteggere le chiamate RPC. Un ruolo è un elenco di verbi (metodi RPC). Uno dovrebbe essere in grado di associare un utente (o un gruppo di utenti) a un ruolo su una risorsa (o un gruppo di risorse). L'architettura deve essere ridimensionata a 10 ^ 8 utenti e 10 ^ 8 risorse.
Ho pensato di avere identificatori univoci int64 per utenti e risorse. Conserverei la gerarchia di gruppo, il binding dei ruoli e gli utenti e le risorse in un database SQL o NoSQL. Quindi userei Apache Spark per appiattire le tuple (utente, ruolo, risorsa) che conserverei in qualche posto in cui interrogherò velocemente, come ElasticSearch.
Sono abbastanza sicuro che questo design si riduca. Tuttavia, non è chiaro come gestirò le modifiche all'appartenenza al gruppo e il ruolo di unbinding.
Qualche suggerimento su come assicurarsi che le modifiche precedenti non lascino delle tuple persistenti (utente, ruolo, risorsa)?