(4.5)授权/权限操作

Posted gered

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(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)授权/权限操作的主要内容,如果未能解决你的问题,请参考以下文章

授权:添加操作员并设置其授予权限和撤销权限。

MySQL创建用户和授权

MySQL创建用户+授权+备份

MySQL创建用户+授权+备份

MySQl创建用户和授权

MySQL创建用户和授权