Chapter 2 User Authentication, Authorization, and Security(7):创建和使用用户自定义服务器角色
未经作者同意,任何人不得以“原创”形式发布,也不得已用于商业用途,本人不负责任何法律责任。
前一篇: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):创建和使用用户自定义服务器角色的更多相关文章
- Chapter 2 User Authentication, Authorization, and Security(3):保护服务器避免暴力攻击
原文出处:http://blog.csdn.net/dba_huangzj/article/details/38756693,专题目录:http://blog.csdn.net/dba_huangzj ...
- Chapter 2 User Authentication, Authorization, and Security(9):防止登录名和用户查看元数据
原文出处:http://blog.csdn.net/dba_huangzj/article/details/39003679,专题目录:http://blog.csdn.net/dba_huangzj ...
- Chapter 2 User Authentication, Authorization, and Security(8):创建映射到登录名的数据库用户
原文出处:http://blog.csdn.net/dba_huangzj/article/details/38944121,专题目录:http://blog.csdn.net/dba_huangzj ...
- Chapter 2 User Authentication, Authorization, and Security(11):在已还原的数据库中修正登录映射错误
原文出处:http://blog.csdn.net/dba_huangzj/article/details/39496517,专题目录:http://blog.csdn.net/dba_huangzj ...
- Chapter 2 User Authentication, Authorization, and Security(10):创建包含数据库
原文出处:http://blog.csdn.net/dba_huangzj/article/details/39473895,专题目录:http://blog.csdn.net/dba_huangzj ...
- Chapter 2 User Authentication, Authorization, and Security(4):限制SA帐户管理权限
原版的:http://blog.csdn.net/dba_huangzj/article/details/38817915,专题文件夹:http://blog.csdn.net/dba_huangzj ...
- Chapter 2 User Authentication, Authorization, and Security(3):保server避免暴力袭击
原版的:http://blog.csdn.net/dba_huangzj/article/details/38756693,专题文件夹:http://blog.csdn.net/dba_huangzj ...
- Chapter 2 User Authentication, Authorization, and Security(6):服务器权限授予粒度
原文出处:http://blog.csdn.net/dba_huangzj/article/details/38867489,专题目录:http://blog.csdn.net/dba_huangzj ...
- Chapter 2 User Authentication, Authorization, and Security(5):使用固定服务器角色
原文出处:http://blog.csdn.net/dba_huangzj/article/details/38844999,专题目录:http://blog.csdn.net/dba_huangzj ...
随机推荐
- pupeteer初体验
官方文档: https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pagescreenshotoptions puppet ...
- Java网络爬虫Hello world实现——Httpclient爬取百度首页
1.创建Maven项目 2.Httpclient Maven地址 <dependency> <groupId>org.apache.httpcomponents</gro ...
- ASP.NET Core 添加统一模型验证处理机制
一.前言 模型验证自ASP.NET MVC便有提供,我们可以在Model(DTO)的属性上加上数据注解(Data Annotations)特性,在进入Action之前便会根据数据注解,来验证输入的数据 ...
- bootstrap table 和 x-editable 使用方法
最近需要做一些数据表格,有同事推荐EasyUI,但经过比较还是选择了Bootstrap,一款极为强大的表格组件,基于Bootstrap 的 jQuery .本文还将介绍Bootstrap-editab ...
- 关于bedtools merge 功能中sort 命令的解释
Bedtools 是一个很好的用来处理区间的工具,很多时候用这个底层语言编写的小工具比自己写的脚本运行快很多,但是这个工具中的某些功能对输入文件有一定的要求,比如说里面的一个merge函数,这是里面的 ...
- admin的配置
当我们访问http://127.0.0.1:8080/admin/时,会出现: 执行命令: 生成同步数据库的脚本:python manage.py makemigrations ...
- Python3 数据结构
列表 Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能. 以下是 Python 中列表的方法: 方法 描述 list.append(x ...
- Window下通过CuteFTP与Linux虚拟机连接失败的原因总结及解决方法
环境:虚拟机类型Redhat Enterprise 6 (1) 虚拟机是否安装了ftp服务器? 若未安装,则yum install vsftpd,并启动ftp服务 (2) 虚拟机防火墙是否已关闭? 若 ...
- Azure AI 服务之语音识别
笔者在前文<Azure AI 服务之文本翻译>中简单介绍了 Azure 认知服务中的文本翻译 API,通过这些简单的 REST API 调用就可以轻松地进行机器翻译.如果能在程序中简单的集 ...
- 实验与作业(Python)-02 Python函数入门与温度转换程序
截止日期 实验目标 学会定义函数,使用函数.学会导入在某个文件中定义的函数. input获得值,然后通过eval或者int.float将其转换为相应的类型. 学会使用列表:访问列表.append.遍历 ...