本篇文章是SQL Server代理系列的第九篇,详细内容请参考原文


在这一系列的上一篇,学习了如何在SQL Server代理作业步骤启动外部程序。你可以使用过时的ActiveX系统,运行批处理命令脚本,甚至自己的程序。你最好的选择是使用PowerShell的子系统运行PowerShell脚本。PowerShell脚本将允许你处理几乎所有方面的Windows和SQL Server问题。在这一篇,你会深入到SQL Server代理安全。
安全是个令人困惑的话题,它值得一些明确的考虑。这系列有两个不同方面的安全:安全运行SQL Server代理作业;安全帐户用作代理帐户来运行作业步骤。在本系列的下一篇将讨论代理帐户,本篇的重点是运行SQL Server代理和SQL Server代理作业的安全权限。
SQL Server代理服务帐户的安全要求
第一篇讲述过选择SQL Server代理服务帐户,但你将会重新回顾这部分内容基于你深入理解SQL Server代理如何操作。如果你计划把作业只连接到本地SQL Server实例,SQL Server代理服务帐户只需要最小的权限。在这种情况下,NetworkService是一个很好的选择。在Windows Server 2008 R2和SQL Server 2008 R2,提供一个非常安全的帐户,可以很容易地被授予SQL Server权利。
如果你打算使用SQL Server代理的一些更先进的功能,如使用CmdExec子系统或PowerShell子系统,或者你想连接到远程SQL Server实例或网络共享,你可能会想要一个定制的服务帐户(Windows域用户帐户)。你可以创建专门为SQL Server代理的帐户,给所有SQL Server代理使用一个共同的帐户,或每个实例下的SQL Server代理使用一个独特的帐户。
当为SQL Server代理服务选择一个账户时,你的帐户需要以下安全权限:
->在所有的Windows版本,作为服务登录权限(SeServiceLogonRight)
->在Windows服务器,SQL Server代理服务代理帐户需要下面权限:
  绕过遍历检查(SeChangeNotifyPrivilege)
  替换进程级令牌(SeAssignPrimaryTokenPrivilege)
  为进程调整内存配额(SeIncreaseQuotaPrivilege)
  作为批处理作业登录(SeBatchLogonRight)
这个列表来自SQL Server联机丛书http://msdn.microsoft.com/en-us/library/ms191543.aspx。此外,任何你选择的帐户必须是相关数据库实例中sysadmin服务器角色的成员。下一篇你将使用代理帐户,所以这些特权是必不可少的。
更改服务帐户
如果你要更改服务帐户,你可以使用安装程序或SQL Server配置管理器来修改。这些程序将正确授予所有需要的权限和安全权利来启用新的服务帐户。你不应该直接用Windows更改服务帐户。图9.1显示使用SQL Server配置管理器更改服务帐户。请注意,你需要Windows管理员权限来使用这个程序。

图9.1 更改SQL Server代理服务帐户
SQL Server代理安全角色
SQL Server代理有三个安全角色用于控制安全。这些角色是在SQL Server 2005引入的,这些角色有:
->SQLAgentUserRole
->SQLAgentReaderRole
->SQLAgentOperatorRole
Sysadmin服务器角色的成员自动拥有SQL Server代理所有控制权限,正如他们对SQL Server的完全控制。这些角色让非管理员用户有访问和/或控制SQL Server代理的权利。这些是msdb数据库(SQL Server中保存所有SQL Server代理元数据)中的一个角色。
这些角色如何工作:SQLAgentUserRole具有最少的权限。然而,SQLAgentReaderRole和SQLAgentOperatorRole是SQLAgentUserRole的成员,所以你授予给UserRole的权限将自动被其他两个角色继承。此外,SQLAgentOperatorRole是SQLAgentReaderRole的成员,所以同样——任何授予给ReaderRoler的权限自动扩展给OperatorRole。现在你可以详细研究每个子系统。
SQLAgentUserRole
SQLAgentUserRole成员具有非常有限的权限。他们可以查看他们拥有的操作员、本地作业、作业调度。他们还可以创建作业。
当你是msdb中的SQLAgentUserRole数据库角色的成员时,你有查看SQL Server代理某些部分的能力(图9.2)。你只可以查看你自己创建的作业,以及查看和使用作业活动监视器(仅限你创建的作业)。

图9.2 SQLAgentUserRole成员连接对象资源管理器
SQLAgentReaderRole
msdb的SQLAgentReaderRole数据库角色的成员继承SQLAgentUserRole的权限,同时还有使用多服务器作业的能力(第十二篇会讲)。你还可以查看服务器上所有的作业,而不只是你自己的作业。然而,你只能查看那些不是你创建的作业(你可以控制你创建的作业)。
图9.3,作为SQLAgentReaderRole的成员,你依然可以看到作业节点,作业活动监视器,但是现在你可以看到系统上的所有作业,而不仅仅是你创建的。

图9.3 SQLAgentReaderRole成员连接对象资源管理器
SQLAgentOperatorRole
msdb中的SQLAgentOperatorRole数据库角色赋予用户在SQL Server代理特权。它包括另两个SQLAgent数据库角色的所有权限,再加上查看操作员和代理的属性,并允许你查看和SQL Server代理相关的所有警告。
SQLAgentOperatorRole角色成员可以停止、启动、或运行本地作业,并可以删除本地作业的历史记录。角色成员可以启用/禁用作业,以及启用/禁用作业调度。但是有一个注意,他们不能使用GUI来启用/禁用工作或计划,他们必须使用系统存储过程(或直接sp_update_job或sp_update_schedule)。
SQLAgentOperatorRole角色成员看到的图形界面与图9.4类似,几乎完全访问SQL Server代理。

图9.4 SQLAgentOperatorRole成员连接对象资源管理器
下一篇
SQL Server代理需要特定的Windows和SQL Server权限用于SQL Server代理服务帐户。msdb数据库有三种数据库角色,允许非sysadmin服务器角色成员的用户有访问SQL Server代理的权限,根据他们的访问级别的需求。你可以使用这些角色,而不是被迫提升为sysadmin服务器角色的成员使用或管理SQL Server代理作业。
在我们的下一篇,我们将开始在作业步骤中使用SQL Server代理服务帐户控制安全权权。每一个作业子系统具有不同的安全考虑,代理账户正是针对这种安全。

第九篇 SQL Server代理了解作业和安全的更多相关文章

  1. 【译】第九篇 SQL Server代理了解作业和安全

    本篇文章是SQL Server代理系列的第九篇,详细内容请参考原文 在这一系列的上一篇,学习了如何在SQL Server代理作业步骤启动外部程序.你可以使用过时的ActiveX系统,运行批处理命令脚本 ...

  2. 第六篇 SQL Server代理深入作业步骤工作流

    本篇文章是SQL Server代理系列的第六篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.每个作业步骤在技术 ...

  3. 【译】第六篇 SQL Server代理深入作业步骤工作流

    本篇文章是SQL Server代理系列的第六篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.每个作业步骤在技术 ...

  4. 第二篇 SQL Server代理作业步骤和子系统

    本篇文章是SQL Server代理系列的第二篇,详细内容请参考原文. SQL Server代理作业由一系列的一个或多个作业步骤组成.一个作业步骤分配给一个特定的作业子系统(确定作业步骤去完成的工作). ...

  5. 【译】第二篇 SQL Server代理作业步骤和子系统

    本篇文章是SQL Server代理系列的第二篇,详细内容请参考原文. SQL Server代理作业由一系列的一个或多个作业步骤组成.一个作业步骤分配给一个特定的作业子系统(确定作业步骤去完成的工作). ...

  6. 第十篇 SQL Server代理使用代理帐户

    本篇文章是SQL Server代理系列的第十篇,详细内容请参考原文 在这一系列的上一篇,你查看了msdb库下用于授权访问SQL Server代理的安全角色.这些角色包括SQLAgentUserRole ...

  7. 第八篇 SQL Server代理使用外部程序

    本篇文章是SQL Server代理系列的第八篇,详细内容请参考原文 在这一系列的上一篇,学习了如何用SQL Server代理作业活动监视器监控作业活动和查看作业历史记录.在实时监控和管理SQL Ser ...

  8. 第五篇 SQL Server代理理解代理错误日志

    本篇文章是SQL Server代理系列的第五篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.在第四篇中我们看到 ...

  9. 【译】第十篇 SQL Server代理使用代理帐户

    本篇文章是SQL Server代理系列的第十篇,详细内容请参考原文 在这一系列的上一篇,你查看了msdb库下用于授权访问SQL Server代理的安全角色.这些角色包括SQLAgentUserRole ...

随机推荐

  1. Cocos2dx.3x入门三部曲-Hello Game项目创建(二)

    一.前提: 完成cocos2d-x-3.x开发环境的安装配置. 具体参考:Cocos2d-x.3x_软件配置篇 二.本篇目标: l  创建一个名为hello game的cocos2dx 3.3的项目 ...

  2. Selenium 3 -how to locate the chromedriver and geckodriver place?

    Maybe you met these exceptions sometimes: 1. Chrome Driver The path to the driver executable must be ...

  3. Python 目录操作

    知道两个文件的绝对目录,怎样计算出两个文件的相对目录,例如:知道 a = '/usr/share/pyshared/test/a.py' b = '/usr/lib/dist/test/a.py' 可 ...

  4. SAP 系统管理内容

    SAP 系统管理内容包含非常广泛,从底层硬件起到各种操作系统及各种系统软件及SAP软件组件等都会涉及到.SAP系统支持主流的IBM AIX.HP UNIX.Windows.Linux平台及Oracle ...

  5. js实现hash

    由于项目中用到了hash,自己实现了一个. Hash = function () { } Hash.prototype = { constructor: Hash, add: function (k, ...

  6. 送给大家一个安卓版的easyradius短信提示客户端

    好像木有写博客了,送大家小软件,后期会适当更新 主要是方便一些用手机给用户发送到期短信的用户 下载地址: http://www.yss58.com/yss58

  7. iOS WKWebView详解

    UIWebView就不用说了,这个过时了,现在iOS8以后建议都使用WKWebView. WKWebView 是现代 WebKit API 在 iOS 8 和 OS X Yosemite 应用中的核心 ...

  8. winform C#获得Mac地址,IP地址,子网掩码,默认网关

    1.添加程序集 2.引入命名空间 using System.Management; 3.方法 ManagementClass mc = new ManagementClass("Win32_ ...

  9. Oracle导入dmp备份文件到不同的表空间中

    原文链接:http://www.2cto.com/database/201211/171081.html 将DMP导入到不同的表空间中 1,用imp导出数据    cmd进入orcle安装目录bin下 ...

  10. CSS技巧(二):CSS hack

    什么是CSS hack CSS hack由于不同的浏览器,比如IE6,IE7,Firefox等,对CSS的解析认识不一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果. 这个时候我们就需 ...