Chapter 2 User Authentication, Authorization, and Security(7):创建和使用用户自定义服务器角色

186 篇文章 6 订阅
65 篇文章 0 订阅
原文出处:http://blog.csdn.net/dba_huangzj/article/details/38895357,专题目录:http://blog.csdn.net/dba_huangzj/article/details/37906349

未经作者同意,任何人不得以“原创”形式发布,也不得已用于商业用途,本人不负责任何法律责任。

        前一篇:http://blog.csdn.net/dba_huangzj/article/details/38867489

 

前言:

 

从SQL Server 2012开始,不再限制于使用固定服务器角色,可以创建自定义的角色,允许你预设特殊权限。

 

实现:

 

1. 在SSMS中,选择【安全性】节点,右键【服务器角色】节点,选择【新建服务器角色】:

 

image

 

2. 输入新角色名

3. 可以对下面对象类型授权:

安全对象描述
Endpoints(端点)查看定义、更改、接管所有权、控制、连接
Logins(登录名)查看定义、更改、控制、模拟
Servers(服务器)服务器级别权限
Availability Groups(可用性组)可用性组的管理权
Server Roles(服务器角色)允许管理其他用户自定义的服务器角色

比如创建一个服务器角色允许咨询人员进行性能调教,可以使用下面代码实现:

CREATE SERVER ROLE PerformanceTuning; 
GRANT VIEW SERVER STATE TO PerformanceTuning; 
GRANT ALTER TRACE TO PerformanceTuning; 
GRANT ALTER ANY EVENT SESSION TO PerformanceTuning; 
GRANT VIEW ANY DEFINITION TO PerformanceTuning; 
GRANT VIEW ANY DATABASE TO PerformanceTuning; 
GO 
ALTER SERVER ROLE PerformanceTuning ADD MEMBER Fred;


 

属于这个角色的登录名比如Fred,具有运行SQL Trace(Profiler)、查询DMV、扩展事件和查看数据和代码定义的权限。

 

 

原理:

 

用户自定义服务器角色通过预设的权限,为属于这个角色下的所有登录名授予特定的权限。对登录帐号的CONTROL权限不允许不使用OLD_PASSWORD子句来修改密码,仅CONTROL SERVER权限是被允许的。

可以用下面语句查看你可以添加的到角色的服务器权限:

SELECT * 
FROM sys.fn_builtin_permissions('SERVER') 
ORDER BY permission_name;


 

如果需要查看一个登录名是否属于某个服务器角色的成员,可以使用下面语句实现:

-- 当前登录名是否属于processadmin的成员? 
SELECT IS_SRVROLEMEMBER('processadmin'); 
-- 登录名Fred是否是 'endpoints_admin' 用户自定义服务器角色的成员? 
SELECT IS_SRVROLEMEMBER('endpoints_admin', 'Fred');


 

更多:

 

 

DDL触发器事件允许监控服务器角色成员的更改,下面是一个例子,把服务器角色修改记录存储在一个名为dbo.auditServerRole的表中,并且这个表在AuditDB下(预先创建),在第七章会详细介绍,这里仅演示:

CREATE TRIGGER serverRoleMembershipChange 
ON ALL SERVER 
FOR ADD_SERVER_ROLE_MEMBER, DROP_SERVER_ROLE_MEMBER 
AS BEGIN 
    INSERT INTO auditdb.dbo.auditServerRole (when, who, what) 
    SELECT CURRENT_TIMESTAMP, SYSTEM_USER, 
    EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand/CommandText) 
[1]','nvarchar(max)') ; 
END;


下一篇:http://blog.csdn.net/dba_huangzj/article/details/38944121

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值