Jeśli chcesz chronić aktywa (pliki, wiersze bazy danych, jednostki domeny, dokumenty itp.) zamiast funkcji aplikacji lub umiejętności użytkownika , zabezpieczenia oparte na rolach nie pasują zbyt dobrze.
Lepszym modelem jest użycie List kontroli dostępu (ACL) jak wiesz z NTFS. Prawie sam to powiedziałeś, ponieważ musisz przypisać określone uprawnienia do każdego obiektu dla każdego użytkownika lub roli. To właśnie robi lista ACL.
Jeśli chcesz chronić obiekty, które ostatecznie są wierszami w SQL Server, musisz zdefiniować niestandardowe tabele dla swoich list ACL, ponieważ SQL Server nie obsługuje uprawnień na poziomie wiersza.
W oparciu o dane w tych listach ACL musisz wdrożyć niezbędne kontrole bezpieczeństwa w swoich komponentach dostępu do danych.
Oto kilka linków do powiązanych odpowiedzi na SO:
- Kontrola dostępu w ASP.NET MVC w zależności od parametrów wejściowych / warstwy usług?
- Jaki jest najlepszy mechanizm implementacji bezpieczeństwa granularnego (tj. autoryzacji) w aplikacji ASP.NET MVC?
- Jak zaimplementować kod zaproszenia do udostępniania zasobu innemu użytkownikowi?