Cílem autorizace je rozhodnout, zda ověřený subjekt má oprávnění vykonat určitou akci. Tj. například zda si uživatel Petr Novák může prohlédnout obsah určitého dokumentu s id b046c6c5-5d6c-479c-8918-ef4038cc1ac4.
Existují 4 základní modely autorizace:
- Role-Based (RBAC)
- Attribute-Based (ABAC)
- Relationship-Based (ReBAC)
- Policy-Based (PBAC)
Pojďme se na ně podrobněji podívat. Všechny tyto modely řeší kdo co může, ale každý jinak.
Role-Based (RBAC)
Oprávnění se řídí pomocí rolí. Takže Petr Novák si může prohlédnout obsah dokumentu, pokud má roli, která to umožňuje.
Attribute-Based (ABAC)
Oprávnění se řídí atributy. Takže pokud
user.id = document.creator_id
OR document.access_list contains user.id
OR (user.role == "Administrator" AND document.confidential == False)
Relationship-Based (ReBAC)
Přístup se odvozuje ze vztahu mezi uživatelem a objektem.
relation creator: user
relation viewer: user
permission view = creator + viewer
K danému dokumentu se pak definují vztahy
document:doc123#creator@user:jan.kral
document:doc123#viewer@user:petr.novak
user:jan.kral#role@role:administrator
Policy-Based (PBAC)
Přístup se řídí centrální sadou politik.
Dejme tomu, že budeme používat SpicyDB. Jak se do toho pustit z analytického pohledu? Tady je kuchařka, jak do toho:
- Začni Use Case scénáři - cílem je získat úplný přehled oprávnění z pohledu uživatele.
- Z Use-casů odvoď entity a vztahy. Cílem je vědět, jaké objekty existují a jaké vztahy mezi nimi bude SpiceDB spravovat.
- Definuj oprávnění – Permission Matrix Cílem je převést business logiku na formální pravidla.
- Namapuj existující role (RBAC → ReBAC)
- Navrhni SpiceDB schema. To už je práce pro developera.
- Ověř funkčnost – Testovací scénáře. Tady se zapojí tester.
- Popiš Governance (správa a změny).
- Připrav migrační/integrační plán.