【发布时间】:2017-09-15 07:35:09
【问题描述】:
我确实想使用 SQL Server 2016 的行级安全功能。在文档的最佳实践部分中它说:
强烈建议为 RLS 对象(谓词函数和安全策略)创建单独的架构。
这种说法背后的原因是什么?又有什么好处呢?
【问题讨论】:
-
模式对于数据库对象的逻辑分离来说非常棒。例如,您可能有一堆核心表位于 dbo 中,负责处理您的核心业务功能(制造小部件)。现在你去创建一堆与你的核心业务功能无关的表、视图和过程——它们只负责行级别的安全性。如果您在它们自己的单独模式中创建它们,它们在对象浏览器中与您的其他对象在视觉上是分开的。在模式之前,这可能是通过在每个对象前面加上一个特殊的代码来实现的。
-
您可以创建一个名为
admin的架构来保存这些 RLS 对象以及任何其他管理功能,例如日志记录、实用程序函数、sp_whoisactive 等,或者您可以创建一个名为rls的架构,其中包含只有 rls 对象。 使用模式!!! - 它们阻止您的数据库变成一大堆功能未明确界定的对象。这也是一种让您停下来思考对象的用途以及它们在大局中的位置的方式 -
根据链接书的作者的说法,“这是因为任何用户都应该能够访问这些功能,并且将 RLS 对象放在单独的架构中可以轻松管理这些权限”。链接:books.google.fr/…
标签: sql-server sql-server-2016 row-level-security