Casbin
Security-as-Code
Autoryzacja jako kod — RBAC/ABAC/ACL w wielu językach.
Casbin to biblioteka autoryzacji, w której logikę dostępu opisujesz deklaratywnie: model (np. RBAC, ABAC, ACL) i polityki trzymasz w plikach lub bazie, a kod tylko pyta „czy ten podmiot może wykonać tę akcję na tym zasobie?”. Dzięki temu reguły dostępu są oddzielone od aplikacji, wersjonowane i spójne między usługami — dostępny jest w wielu językach (Go, Node, Python, PHP i inne).
Kiedy używać
- Potrzebujesz elastycznej autoryzacji (role, atrybuty) wspólnej dla wielu usług.
- Chcesz oddzielić reguły dostępu od kodu aplikacji.
- Zależy Ci na jednym modelu autoryzacji w różnych językach.
Przykład użycia
# model.conf — definicja RBAC
[request_definition]
r = sub, obj, act
[policy_definition]
p = sub, obj, act
[role_definition]
g = _, _
[matchers]
m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act
# policy.csv
p, editor, article, write
g, alice, editor
Warto wiedzieć
- Działa na poziomie aplikacji (authz), podczas gdy Open Policy Agent jest uniwersalnym silnikiem polityk.
- Polityki możesz trzymać w Gicie albo w bazie (adaptery).