hujh20 发表于 2018-6-16 08:31:20

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
页: [1]
查看完整版本: SQL Server 2012 显式授权示例