码迷,mamicode.com
首页 > 其他好文 > 详细

(4.5)授权/权限操作

时间:2018-07-27 19:19:41      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:ast   option   with   角色   deny   其他   blog   size   mail   

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

标签:ast   option   with   角色   deny   其他   blog   size   mail   

原文地址:https://www.cnblogs.com/gered/p/9378937.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!