Si desea proteger activos (archivos, filas de bases de datos, entidades de dominio, documentos, etc.) en lugar de las características de la aplicación o capacidades del usuario , la seguridad basada en roles no encaja muy bien.
Un mejor modelo es usar Listas de Control de Acceso (ACL) como usted sabe de NTFS. Casi lo dice usted mismo porque necesita asignar permisos particulares en cada objeto para cada usuario o rol. Eso es lo que hace una ACL.
Si necesita proteger objetos que en última instancia son filas en SQL Server, deberá definir tablas personalizadas para sus ACL, ya que SQL Server no admite permisos de nivel de fila.
En función de los datos de esas ACL, debe implementar las comprobaciones de seguridad necesarias en sus componentes de acceso a datos.
Aquí hay algunos enlaces a respuestas SO relacionadas:
- ¿Control de acceso en ASP.NET MVC según los parámetros de entrada/capa de servicio?
- ¿Cuál es el mejor mecanismo para implementar seguridad granular (es decir, autorización) en una aplicación ASP.NET MVC?
- ¿Cómo implementar un código de invitación para compartir recurso con otro usuario?