Om du vill skydda tillgångar (filer, databasrader, domänenheter, dokument, etc.) istället för applikationsfunktioner eller användarförmågor , rollbaserad säkerhet passar inte särskilt bra.
En bättre modell är att använda åtkomstkontrollistor (ACL) som du känner till från NTFS. Du sa det nästan själv eftersom du måste tilldela särskilda behörigheter för varje objekt för varje användare eller roll. Det är vad en ACL gör.
Om du behöver skydda objekt som i slutändan är rader i SQL Server måste du definiera anpassade tabeller för dina ACL:er, eftersom SQL Server inte har något stöd för behörigheter på radnivå.
Baserat på data i dessa ACL:er måste du implementera nödvändiga säkerhetskontroller i dina dataåtkomstkomponenter.
Här är några länkar till relaterade SO-svar:
- Åtkomstkontroll i ASP.NET MVC beroende på ingångsparametrar/tjänstlager?
- Vilken är den bästa mekanismen för att implementera granulär säkerhet (dvs. auktorisering) i en ASP.NET MVC-applikation?
- Hur implementerar man en inbjudningskod för att dela resurs med en annan användare?