我是SQL Server数据库的新手,我正在努力找出特定视图上某个用户的访问问题。我不想暴露任何基表。
场景是:我有3个数据库,数据库一,二和三
数据库三是我们的数据仓库。所以,我想知道如果我只对数据库3的视图给予选择权限,那还能够吗?
问题是,我不想在数据库中暴露任何基表
如果我在数据仓库视图上授予user1
的选择权限(在数据库3中查看)并拒绝基表的所有权限(在数据库1中),那么可能吗?
谢谢
答案 0 :(得分:1)
所有权链接允许通过视图访问数据,而无需基础表的权限,只要所有对象都由同一安全主体拥有即可。由于仅在直接访问视图上检查权限,因此不需要对具有完整所有权链的间接使用的对象进行显式GRANT或DENY。对象所有者通常从架构所有者继承。
允许所有权链接扩展到多个数据库:
所涉及的数据库的DB_CHAINING
数据库选项必须为ON。
用户必须能够使用数据库(每个数据库中的用户帐户具有CONNECT权限),但只需要对直接访问的对象的权限。
对于dbo拥有的对象,数据库必须由同一登录(AUTHORIZATION)拥有,因为dbo架构所有者是数据库所有者。对于其他架构,架构所有者必须映射到相同的登录名。
DB_CHAINING
。