了解数据库链接时的访问

时间:2017-12-14 23:48:54

标签: sql-server sql-server-2008

我是SQL Server数据库的新手,我正在努力找出特定视图上某个用户的访问问题。我不想暴露任何基表。

场景是:我有3个数据库,数据库一,二和三

  • 数据库一有2个基表
  • 数据库2在这些表之上有一个视图(数据库一中的表)
  • 数据库三有一个视图,它位于数据库二的视图之上

数据库三是我们的数据仓库。所以,我想知道如果我只对数据库3的视图给予选择权限,那还能够吗?

问题是,我不想在数据库中暴露任何基表

如果我在数据仓库视图上授予user1的选择权限(在数据库3中查看)并拒绝基表的所有权限(在数据库1中),那么可能吗?

谢谢

1 个答案:

答案 0 :(得分:1)

所有权链接允许通过视图访问数据,而无需基础表的权限,只要所有对象都由同一安全主体拥有即可。由于仅在直接访问视图上检查权限,因此不需要对具有完整所有权链的间接使用的对象进行显式GRANT或DENY。对象所有者通常从架构所有者继承。

允许所有权链接扩展到多个数据库:

  • 所涉及的数据库的DB_CHAINING数据库选项必须为ON。

  • 用户必须能够使用数据库(每个数据库中的用户帐户具有CONNECT权限),但只需要对直接访问的对象的权限。

  • 对于dbo拥有的对象,数据库必须由同一登录(AUTHORIZATION)拥有,因为dbo架构所有者是数据库所有者。对于其他架构,架构所有者必须映射到相同的登录名。

仅当您完全信任具有创建数据库对象权限的高权限用户时,才应启用

DB_CHAINING