(4.5)授權/權限操作
轉自:http://blog.51cto.com/jimshu/1176573
一、概述
1、GRANT
將安全對象的權限授予主體。
2、DENY
拒絕授予主體權限。防止主體通過其組或角色成員身份繼承權限。
3、REVOKE
取消以前授予或拒絕了的權限。
二、示例
SQL Server 2012的實例中有一個名為SalesDB的數據庫。SalesDB包含一個名為Customers的架構,此架構中有一個名為Regions的表。
數據庫有一個名為Sales的角色,此角色中有一個名為UserA的用戶。
用戶UserA被授予對SalesDB.Customers.Regions的Select權限。
角色Sales被授予對架構Customers的Select權限。
1、不允許角色Sales(包括用戶UserA)在架構Customers中Select任何表。
DENY SELECT ON Schema::Customers FROM Sales
2、不允許用戶UserA在架構Customers中Select任何表。
DENY SELECT ON Schema::Customers FROM UserA
3、移除用戶UserA對SalesDB.Customers.Regions的Select權限,同時讓用戶UserA通過角色Sales的權限仍然可以訪問架構Customers中的所有表。
REVOKE SELECT ON Object::Regions FROM UserA
4、不允許角色Sales(包括用戶UserA)對SalesDB.Customers.Regions的Select權限。
DENY SELECT ON Object::Regions FROM sales
5、不允許用戶UserA對SalesDB.Customers.Regions的Select權限。
DENY SELECT ON Object::Regions FROM UserA
6、移除角色Sales在架構Customers中的Select權限,但用戶UserA有SalesDB.Customers.Regions的Select權限。
REVOKE SELECT ON Schema::Customers FROM Sales
三、列級的安全
權限可以在列一級進行分配
可以一個語句中對多個列分配權限
一個列級的 GRANT 將覆蓋一個表級的 DENY
GRANT SELECT ON Marketing.Salesperson ( SalespersonID, EmailAlias) TO James; GO DENY SELECT ON Marketing.Salesperson TO Holly; GO GRANT SELECT ON Marketing.Salesperson ( SalespersonID, FirstName, LastName) TO Holly; GO |
四、再次授權(re-grant)
使用 WITH GRANT OPTION 可以使受讓者將其得到的授權再次 GRANT 給其他主體
CASCADE 選項同時 REVOKE(或DENY)從受讓者發出的授權
GRANT UPDATE ON Marketing.Salesperson TO James WITH GRANT OPTION; GO
REVOKE UPDATE ON Marketing.Salesperson FROM James CASCADE; GO |
(4.5)授權/權限操作