原文出处: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中,选择【安全性】节点,右键【服务器角色】节点,选择【新建服务器角色】:

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

Chapter 2 User Authentication, Authorization, and Security(7):创建和使用用户自定义服务器角色的更多相关文章

  1. Chapter 2 User Authentication, Authorization, and Security(3):保护服务器避免暴力攻击

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/38756693,专题目录:http://blog.csdn.net/dba_huangzj ...

  2. Chapter 2 User Authentication, Authorization, and Security(9):防止登录名和用户查看元数据

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/39003679,专题目录:http://blog.csdn.net/dba_huangzj ...

  3. Chapter 2 User Authentication, Authorization, and Security(8):创建映射到登录名的数据库用户

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/38944121,专题目录:http://blog.csdn.net/dba_huangzj ...

  4. Chapter 2 User Authentication, Authorization, and Security(11):在已还原的数据库中修正登录映射错误

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/39496517,专题目录:http://blog.csdn.net/dba_huangzj ...

  5. Chapter 2 User Authentication, Authorization, and Security(10):创建包含数据库

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/39473895,专题目录:http://blog.csdn.net/dba_huangzj ...

  6. Chapter 2 User Authentication, Authorization, and Security(4):限制SA帐户管理权限

    原版的:http://blog.csdn.net/dba_huangzj/article/details/38817915,专题文件夹:http://blog.csdn.net/dba_huangzj ...

  7. Chapter 2 User Authentication, Authorization, and Security(3):保server避免暴力袭击

    原版的:http://blog.csdn.net/dba_huangzj/article/details/38756693,专题文件夹:http://blog.csdn.net/dba_huangzj ...

  8. Chapter 2 User Authentication, Authorization, and Security(6):服务器权限授予粒度

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/38867489,专题目录:http://blog.csdn.net/dba_huangzj ...

  9. Chapter 2 User Authentication, Authorization, and Security(5):使用固定服务器角色

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/38844999,专题目录:http://blog.csdn.net/dba_huangzj ...

随机推荐

  1. requestAnimationFrame之缓动的应用

    之前需要使用的定时器的时,立马想到的是setInterval(),用着用着就成为习惯,并没有遇到什么不妥之处.习惯性的操作往往容易让一个人拒绝尝试一些其他的方法.现在的方法用得好好的,没事干啥找其他法 ...

  2. 实验-使用VisualVM或JConsole进行对程序进行性能分析

    参考资料: 性能分析神器VisualVM java可视化监控工具 完成下列任务: 1.分析内存堆 使用+进行频繁的字符串拼接 2.CPU性能分析 3.线程分析 编程比较以下几个方法所创建的线程 Exe ...

  3. Mybatis 批量插入、批量更新

            合理的使用批量插入.更新对性能优化有很大的作用,速度明显快了N倍.         要注意数据库连接串后面要新增:&allowMultiQueries=true,表示一个sql ...

  4. Goaccess解析nginx日志备忘

    参考 http://nginx.org/en/docs/http/ngx_http_log_module.html?&_ga=1.92028562.949762386.1481787781#l ...

  5. Android6.0 init 深入分析

    之前写过一篇关于android5.0 init的介绍,这篇博客是介绍android6.0init,之前有的代码介绍不详细.而且分析 解析init.rc那块代码也没有结合init.rc介绍. 一. ma ...

  6. Android艺术开发探索——第二章:IPC机制(下)

    Android艺术开发探索--第二章:IPC机制(下) 我们继续来讲IPC机制,在本篇中你将会学习到 ContentProvider Socket Binder连接池 一.使用ContentProvi ...

  7. Linux命令—文件目录

     (1) shell的使用 <1>检查系统当前运行的shell版本: [root@lab root]# echo $SHELL <2>从当前shell下切换到csh: [r ...

  8. T-SQL 中的CROSS JOIN用法(半翻译)

    突然发现个很吊的链接,我们来看看学习数据库要做些什么,胆小慎点:DBA工作内容!!!! 今天来翻译一篇关于T-SQL的文章,本文可供微软认证70-461:QueryingMicrosoft SQL S ...

  9. 17 一个ContentProvider的例子

    服务端(ContentProvider) 目录结构图: MainActivity.java: package com.qf.day17_contentprovider_words_demo2; imp ...

  10. leetcode 3 Longest Substring Without Repeating Characters最长无重复子串

    Given a string, find the length of the longest substring without repeating characters. For example, ...