WEB开发网
开发学院数据库MSSQL Server 对组成链对象的用户权限控制不同于单独访 阅读

对组成链对象的用户权限控制不同于单独访

 2008-12-31 10:17:05 来源:WEB开发网   
核心提示: 第二步:材料成本引用视图“物料清单”,由于视图“材料成本”此时还需要用到基础表“物料清单”中的内容,对组成链对象的用户权限控制不同于单独访(2),此时,数据库就会先去查询“物料清单”的所有者,如

第二步:材料成本引用视图“物料清单”。

由于视图“材料成本”此时还需要用到基础表“物料清单”中的内容,此时,数据库就会先去查询“物料清单”的所有者。由于此时所有者跟其调用者“材料成本”不是同一个所有者,故数据库会继续去查询“物料清单”这个视图的相关访问权限。若用户Lance有这张表的访问权限,则数据库就会返回相关的内容。相反,若用户没有这张表的查询权限的话,则数据库就会拒绝用户的请求。虽然其有前面两个数据库对象的访问权限。在数据库的“链”中,当调用对象的所有者不同的话,我们就叫做“所有权链条断裂”。

第三步:跨数据库的连接。

SQL Server数据库服务器允许在同一台服务器中部署多个数据库。故从事软件租赁的企业,往往一个数据库管理员需要同时管理多个公司的数据库。此时,为了管理方便,他们往往会启用“跨数据库的链接”。若启用了这个功能,则这个所有权链的权利寻租问题也会发生在不同的数据库之间。

如上图,现在A公司的数据库有张视图“产品成本”,所有者是Landy。而在B公司的数据库中也有张视图“产品成本”,所有者也是Landy 。如果现在用户Landy把A公司数据库中的视图“产品成本”访问权限赋予给了用户Lance,由于两张视图的所有者相同,若A公司数据库中的“产品成本”根B公司数据库中的“ 产品成本”存在调用关系的话,则因为两者的所有者一样,所以A公司用户Lance同时具有B公司数据库中“产品成本”的访问权限。

二、权利寻租中的安全隐患。

所有权链确实给数据库管理员带来了很大的方便。如果“链条”中的各个数据库对象其所有者相同,则用户就可以在单个对象上进行相关的权限设置,就可以实现对多个对象的访问权限控制。

Tags:组成 对象 用户

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接