原文出处: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. Python小代码_12_生成前 n 行杨辉三角

    def demo(t): print([1]) print([1, 1]) line = [1, 1] for i in range(2, t): r = [] for j in range(0, l ...

  2. Python小代码_7_字符串的字符次数统计

    生成包含 1000 个随机字符的字符串,并统计每个字符出现的次数. import string import random #获取字符 x = string.ascii_letters + strin ...

  3. ubuntu14.04 python2.7 安装配置OpenCV3.0

    环境:ubuntu14.04  python2.7 内容:安装并配置OpenCV3.0 今天按照OpenCV官网上的步骤装了OpenCV但是,装好之后python提示“No module named ...

  4. compress函数用法详解

    compress函数: 主要用来删除字符串中的特定字符. 1.compress函数的基本形式compress(<source><, chars><, modifiers& ...

  5. Linux系统基础优化

    一.关闭防火墙iptables:                (1)关闭                 /etc/init.d/iptables stop                (2)检查 ...

  6. Hibernate异常之命名查询节点未找到

    异常信息: java.lang.IllegalArgumentException: No query defined for that name [salaryEmps] at org.hiberna ...

  7. Nginx之(三)Nginx配置

    一个简单的配置文件如下: #定义Nginx运行的用户及用户组 user userName userGroupName; #工作进程数目,根据硬件调整,通常等于CPU数量或者2倍于CPU worker_ ...

  8. ZooKeeper之(六)应用实例

    6.1 Java API 客户端要连接 Zookeeper服务器可以通过创建 org.apache.zookeeper.ZooKeeper 的一个实例对象,然后调用这个类提供的接口来和服务器交互. Z ...

  9. 自定义view实现阻尼效果的加载动画

    效果: > 需要知识: 1. 二次贝塞尔曲线 2. 动画知识 3. 基础自定义view知识 先来解释下什么叫阻尼运动 阻尼振动是指,由于振动系统受到摩擦和介质阻力或其他能耗而使振幅随时间逐渐衰减 ...

  10. 《An Industrial-Strength Audio Search Algorithm》译文

    随着微信摇一摇逐渐被大众所广泛使用,听歌识曲功能也开始被关注.目前来看,像音乐雷达和微信摇一摇都采用了经典的shazam算法,为了使大家对shazam算法更加了解,我将其经典论文进行了翻译,希望对大家 ...