sql-server - 授予对 View 的读取访问权限,但不授予对其他数据库的基础表的读取访问权限

标签 sql-server database sql-server-2008 sql-server-2012 schema

我想授予用户读取权限,以查看连接来自另一个数据库的 2 个表的 View 。 我不想想要:

  1. 授予他对表所在数据库的权限,或将他添加为该数据库的用户。
  2. 由于安全漏洞,让他成为 View /架构的所有者。
  3. 我不想先创建一个表,或者带有 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

https://dba.stackexchange.com/questions/89632/sql-server-grant-select-access-to-a-user-in-a-view-and-not-in-its-tables

谢谢

编辑: 经过一些研究,我想到的最简单的解决方案是在我放置 View 并向用户授予读取权限的数据库上激活跨数据库所有权链接选项。这可能与我试图避免的第二点相反。这是个好主意吗?

最佳答案

让他们登录到同一台服务器上的另一个数据库,并只包含您的单一 View ,该 View 指向您的安全数据库。除了包含其中的 View 的数据库之外,不要授予该登录名任何访问权限,并且只授予对该单个 View 的读取访问权限。显然,您必须完全限定表名(例如,from SourceDB.dbo.SomeSecretTable)。

关于sql-server - 授予对 View 的读取访问权限,但不授予对其他数据库的基础表的读取访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38829205/

相关文章:

php - 在 php/asp.net 应用程序中保存/加载 img/文件(word、excel 等)的最佳方法是什么?

java - 可以在android上使用jdbc驱动吗?

php - 在Mysql表中保存座位安排

sql-server-2008 - 在 SQL Server 2008 R2 上运行 50 MB 脚本时出现错误

sql-server-2005 - 如何在不声明表的情况下选择 * INTO [临时表]?

sql - SQL中的相对日期计算算法

sql - 在 SQL Server 中根据作业 ID 组合行

sql-server - Azure 中的 SSIS 跨 DB "WHERE IN"子句(或等效项)

sql-server - 在 SQL Server 中插入 XML

需要 PHP 用户登录、数据库身份验证和重定向帮助