作者TeemingVoid (TeemingVoid)
看板Database
标题Re: [SQL ] 资料表开权限
时间Sat Feb 18 15:35:54 2012
※ 引述《testcrack (testcrack)》之铭言:
: 在SQL Server 2008上,若有几个资料表要开权限可供Select(不做增删修)
: 而且,也不让他看到其他资料表
: 可以直接针对这些资料表来限定这个使用者吗?
: 而不是这个资料库的所有资料表,将所有使用者全部设定授予、拒绝的设定..
当一个user存取一个物件时,有效权限的判定原则是:
1. User 及其 Roles 角色权限的累计。
2. 比对及累计过程中,遇到 deny 就是没有授权。
3. 如果比对没有结果,就是没有权限。
也就是说,采用的是先以正面表列说明可以做什麽,再以 deny 进行但书排除。
回到您的问题,仅针对那位设定他可读取哪些表即可,不必设定他不能读哪些
资料表。可是,这位使用者如果具备某些角色,他仍然可能因为那些角色而取
得权限,这时,就需要进一步针对他不能读取的表特别以 deny 进行排除。
另外,上述的设定有两个注意事项(或者该说是状况):
1. 如果 View 与 Table 的 Owner 是同一人,使用者透过 View 存取 Table
时,SQL 只会检查使用者在 View 的权限,通过了就放行了,不会进一步
比对资料表的权限。
2. 如果您有针对应用程式角色设定权限,当使用者以 sp_SetAppRole 启用
该角色後,到结束连线前,该连线的权限均只以应用程式角色进行判断。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.41.107.34