Pokud chcete chránit majetek (soubory, databázové řádky, entity domény, dokumenty atd.) namísto funkcí aplikace nebo uživatelské schopnosti , zabezpečení založené na rolích příliš nesedí.
Lepším modelem je použití Seznamů řízení přístupu (ACL), jaké znáte z NTFS. Skoro jste to řekli sami, protože musíte každému objektu přiřadit zvláštní oprávnění pro každého uživatele nebo roli. To je to, co ACL dělá.
Pokud potřebujete chránit objekty, které jsou v SQL Serveru nakonec řádky, budete muset definovat vlastní tabulky pro vaše ACL, protože SQL Server nepodporuje oprávnění na úrovni řádků.
Na základě dat v těchto ACL musíte implementovat nezbytné bezpečnostní kontroly ve vašich komponentách pro přístup k datům.
Zde je několik odkazů na související odpovědi SO:
- Řízení přístupu v ASP.NET MVC v závislosti na vstupních parametrech / vrstvě služeb?
- Jaký je nejlepší mechanismus pro implementaci granulárního zabezpečení (tj. autorizace) v aplikaci ASP.NET MVC?
- Jak implementovat kód pozvánky ke sdílení zdroje s jiným uživatelem?