[ANN] Eaco - un framework di autorizzazione RBAC basato su ACL

Ciao lista!

Immaginiamo di avere un documentale i cui contenuti sono sottoposti ad
accesso discrezionale. Un utente pu possedere un documento e avere i
diritti di lettura, scrittura e cancellazione su di esso. Tale utente pu
voler consentire un accesso ad un altro utente, ma solo in lettura.

Fin qui, niente di eclatante. Immaginiamo per che laccesso ai documenti
sia determinato non solo dallidentit di un utente, ma ad esempio dalla
sua appartenenza ad un gruppo, oppure dalla presenza di uno specifico
tag sul suo account, o qualsivoglia altro meccanismo specifico della
vostra applicazione (ad esempio, nel nostro caso, lappartenenza ad un
dipartimento o il ricoprire un ruolo specifico allinterno
dellorganizzazione).

Inoltre, vogliamo avere la possibilit di ottenere rapidamente tutti i
documenti che un utente pu vedere in quel momento, e questa abilit deve
essere compatibile con altre funzionalit di filtraggio sulla base dati
(e.g. full-text search).

Enter Eaco: un framework che realizza proprio questo:

Con Eaco possibilie autorizzare le Risorse della propria applicazione
che devon esser sottoposte ad accesso RBAC (role-based). Ogni Risorsa
corredata di unACL, un hash salvato in una colonna JSONB su Postgres
9.4. possibile poi definire gli Attori del sistema, che vanno corredati
da un set di Designatori (serve un nome migliore) che ne descrivono le
varie appartenenze.

LACL va poi a contenere nelle chiavi i Designatori, e nei valori i ruoli
che un Designatore ha sulla specifica Risorsa. Lintersezione tra i
Designatori in possesso di un Attore e di quelli definiti sullACL della
Risorsa danno come risultato il ruolo che un Attore ha su di essa, e i
permessi risultanti.

Ruby 2.0, documentato certosinamente, testato alla morte su Rails 3.2
→ 4.2, in produzione da circa due anni. stato estratto da un sistema
corporate di nome Scriptoria (che qui in lista alcuni conoscono :wink: e
che speriamo possa diventare anch’esso Open Source nei prossimi tempi.

Sono graditissimi commenti, review, opinioni, flame lussurreggianti e
tapioche sbrindellanti! :smiley:

Fateci sapere,

PS. Were hiring, if interested drop me an email.

~ [email protected]
~ http://sindro.me

autoload will be dead:

https://www.ruby-forum.com/topic/3036681#1032667

vedo che lo usi qui:

Complimenti per l’impegno che si vede dalla documentazione e tutto il
resto, tutto verde smeraldo :slight_smile: che e’ un ottimo incentivo per testarlo.
Leggendo il readme di github ho notato qualche differenza con cancan ma
per esprimere qualche commento dovrei provarlo in qualche progetto.
Comunque molto interessante.

A parte quel messaggio sul forum di pi di tre anni fa non sembrano
esserci
stati sviluppi sulla deprecazione di autoload (tant’ che Rails lo usa
ancora tanto)

Maurizio De Santis

2015-03-02 12:23 GMT+01:00 Riccardo T. [email protected]:

Ciao Marco, grazie ^_^'.

La differenza principale rispetto a cancan la centralit dell’ACL, che
esprime i diritti di accesso. Mentre con cancan sai bene che specifichi
le ability e come queste poi si traducono in query SQL, Eaco invece ha
un solo metodo per esprimere le ability: le ACL. Quindi ogni risorsa
descrive chi e come ha accesso ad essa, non le rules file.

Per qualsiasi informazione, just ask :-).

Ciao,

~Marcello

~ [email protected]
~ http://sindro.me/