我有一个稍微不寻常的安全要求,我正在寻找有关最佳实践或至少非脆弱方法的建议。
场景:内联网系统。有关多个相关实体的数据将被视为私有(private)数据。这被称为系统的未发布部分。只有某些用户可以访问此数据。在某个阶段,用户从这些数据中进行选择,标记一些记录并将它们发布到“发布”端。发布到已发布端的数据将从未发布端移除。然后,大部分系统用户就可以在发布端处理记录。
我知道这听起来像是父记录上的 bool 字段,标记为已发布或未发布,但让我解释一下我们要替换的系统如何解决该问题 - 这是我们需要模拟的安全级别。它是一个平面文件数据库 (Dataflex),未发布和已发布的数据位于单独的表、单独的服务器驱动器上、备份到单独的磁带、位于不同的房间、由不同的人进行物理访问。网络权限确保已发布的用户无法获取未发布的数据。该软件还管理权限,但如果出现问题,或者程序员犯了错误,他们仍然无法访问错误的数据。可能会获取这些数据的系统管理员都经过了积极的安全审查。
因此,我正在寻找有关如何使用 MVC、EF4、SQL 实现实现此目的的架构的建议。在一种极端情况下,我使用两个 sql 数据库构建两个系统,具有不同的权限:可能存在 web.config 中包含的差异,因此它实际上是相同的代码库。在天平的另一端,它是表中的标志,其中 Controller 方法标记为拒绝访问。 (这不好,因为如果一个程序员弄乱了一个搜索查询,它从错误的类别返回数据,并且它在不被注意的情况下离开了建筑物,它可能会导致人类牺牲,狗和猫生活在一起......质量歇斯底里)
抱歉,描述太长了。关于如何访问此寻求的最佳实践或其他建议。
最佳答案
不是 MVC/EF 特定的答案,但有一篇较旧的 Technet 论文(针对 SQL Server 2005)回答了很多问题并且可能有用:
“使用 SQL Server 2005 在分类数据库中实现行级和单元级安全性”
Available on Technet 。同一篇论文还可以downloaded as a Word document .
关于sql - ASp.NET MVC EF4 SQL 表或字段级别安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4896401/