Wenn Sie Vermögenswerte schützen möchten (Dateien, Datenbankzeilen, Domänenentitäten, Dokumente usw.) anstelle von Anwendungs-Features oder Benutzerfähigkeiten , passt rollenbasierte Sicherheit nicht sehr gut.
Ein besseres Modell ist die Verwendung von Zugriffskontrolllisten (ACLs) wie Sie es von NTFS kennen. Sie haben es fast selbst gesagt, weil Sie jedem Benutzer oder jeder Rolle bestimmte Berechtigungen für jedes Objekt zuweisen müssen. Das macht eine ACL.
Wenn Sie Objekte schützen müssen, die letztendlich Zeilen in SQL Server sind, müssen Sie benutzerdefinierte Tabellen für Ihre ACLs definieren, da SQL Server Berechtigungen auf Zeilenebene nicht unterstützt.
Basierend auf den Daten in diesen ACLs müssen Sie die erforderlichen Sicherheitsprüfungen in Ihren Datenzugriffskomponenten implementieren.
Hier sind einige Links zu verwandten SO-Antworten:
- Zugriffskontrolle in ASP.NET MVC in Abhängigkeit von Eingabeparametern / Dienstschicht?
- Was ist der beste Mechanismus, um granulare Sicherheit (d. h. Autorisierung) in einer ASP.NET MVC-Anwendung zu implementieren?
- Wie implementiert man einen Einladungscode, um Ressourcen mit anderen Benutzern zu teilen?