我想授予用户读取权限,以查看连接来自另一个数据库的 2 个表的 View 。 我不想想要:
- 授予他对表所在数据库的权限,或将他添加为该数据库的用户。
- 由于安全漏洞,让他成为 View /架构的所有者。
- 我不想先创建一个表,或者带有
truncate
的 hack 表的变体和一个在触发器上插入数据的存储过程。
这能以某种方式完成吗?也许我错过了什么,你们可能知道。
我已经阅读了这些帖子,但它们并没有解决我的问题: Grant SELECT permission on a view, but not on underlying objects
Grant Select on a view not base table when base table is in a different database
https://msdn.microsoft.com/en-us/library/ms188676.aspx
谢谢
编辑:
经过一些研究,我想到的最简单的解决方案是在我放置 View 并向用户授予读取权限的数据库上激活跨数据库所有权链接
选项。这可能与我试图避免的第二点相反。这是个好主意吗?
最佳答案
让他们登录到同一台服务器上的另一个数据库,并只包含您的单一 View ,该 View 指向您的安全数据库。除了包含其中的 View 的数据库之外,不要授予该登录名任何访问权限,并且只授予对该单个 View 的读取访问权限。显然,您必须完全限定表名(例如,from SourceDB.dbo.SomeSecretTable
)。
关于sql-server - 授予对 View 的读取访问权限,但不授予对其他数据库的基础表的读取访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38829205/