Si vous souhaitez protéger les actifs (fichiers, lignes de base de données, entités de domaine, documents, etc.) au lieu des fonctionnalités de l'application ou capacités de l'utilisateur , la sécurité basée sur les rôles ne convient pas très bien.
Un meilleur modèle consiste à utiliser des listes de contrôle d'accès (ACL) comme vous le savez de NTFS. Vous l'avez presque dit vous-même car vous devez attribuer des autorisations particulières sur chaque objet pour chaque utilisateur ou rôle. C'est ce que fait une ACL.
Si vous devez protéger des objets qui sont finalement des lignes dans SQL Server, vous devrez définir des tables personnalisées pour vos ACL, car SQL Server ne prend pas en charge les autorisations au niveau des lignes.
Sur la base des données de ces ACL, vous devez implémenter les contrôles de sécurité nécessaires dans vos composants d'accès aux données.
Voici quelques liens vers des réponses SO connexes :
- Contrôle d'accès dans ASP.NET MVC en fonction des paramètres d'entrée / couche de service ?
- Quel est le meilleur mécanisme pour implémenter une sécurité granulaire (c'est-à-dire une autorisation) dans une application ASP.NET MVC ?
- Comment mettre en place un code d'invitation pour partager une ressource avec un autre utilisateur ?