1. 程式人生 > >(4.5)授權/權限操作

(4.5)授權/權限操作

size 概述 upd 再次 grant top 移除 bject obj

轉自: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)授權/權限操作