SQL Server 2012 显式授权示例

一、概述

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



你可能感兴趣的:(grant,revoke,deny)