Dar*_*ous 4 database sql-server schema view access-rights
我目前使用的是 SQL Server 2012,我有一个关于具有不同访问权限的跨架构访问的问题:
假设我有两个模式:UserSchema和TableSchema。
TableSchema 包含 2 个表,并且此架构只能由管理员用户访问,用于阅读、更新等。
UserSchema 可供具有 SELECT 权限(或您称之为阅读权限的任何内容)的用户访问。此架构包含一个视图,该视图应该从 TableSchema 中的两个表中选择数据。
我的想法是 UserSchema 的用户应该只能访问 UserSchema,但不能访问 TableSchema。这会起作用吗?还是因为没有直接从表中读取数据的权限而无法查询视图?是否有一个很好的解决方案来解决这个问题,或者我是否必须忘记这个想法并让用户阅读 TableSchema ?
主要问题的答案可能很明显,但我在尝试 google 时似乎发现了一些不同的答案,所以这或多或少是一个确认或反驳这个想法的“是或否”问题。
只要每个模式的所有者都相同,这种方法就可以正常工作,因为所有权链是不间断的。
有关更多详细信息,请参阅以下链接:
例如,这将起作用:
用户架构所有者 dbo
TableSchema 所有者 dbo
User1 授予对 UsersSchema 的选择权限,拒绝对 TableSchema 的选择权限
view1 位于 UsersSchema 中(从表 1 中选择)
table1 位于 TableSchema 中
user1 执行 select * from UsersSchema.view1 - SQL 服务器检查 user1 是否有权从视图中进行选择,他所做的一切都很好
SQL server 然后检查谁拥有视图,dbo SQL server 然后检查谁拥有视图想要从中获取数据的表,还有 dbo(因为 dbo 拥有两个架构)由于所有权链是完整的,SQL server 现在不会费心检查什么user1 对 table1 具有的权限并返回数据,即使您拒绝对 table1 或 TableSchema 上的 user1 进行选择。
如果他试图直接访问 table1,用户 1 仍然会被拒绝访问 table1。
| 归档时间: |
|
| 查看次数: |
5044 次 |
| 最近记录: |