SQL Server代理是所有实时数据库的核心。代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的。这系列文章会通俗介绍它的很多用法。


在这个系列的前一篇文章里,你学习了如何在SQL Server代理作业步骤里启动外部程序。你可以使用过时的ActiveX系统,从虚拟命令提示符里运行批处理命令,或甚至启动你自己的程序。你的最佳选项是使用PowerShell子系统来运行PowerShell脚本。PowerShell脚本会允许你操纵系统或SQL Server角度的一切。在这篇文章里,你会收入SQL Server代理安全。对大多数人来说,安全是个令人迷惑的话题,值得一些明确的考虑。在这个系列里有2个不同角度的安全会涉及:运行SQL Server代理作业的安全,可以用来作为代理作业运行作业步骤的模拟安全账号。这个系列的下篇文章会谈下代理账号,这篇会集中讨论运行SQL Sever代理和SQL Server代理作业的安全权限。

SQL Server代理服务账号需要的安全

在这个系列的第一篇文章已经谈了选择SQL Server代理服务账号,为了进一步理解SQL Server代理如何运作的话,现在你要重新审视下你的决定。如果你只想连接到本地SQL Server实例的作业,对于SQL Server服务账号需要最小的权限。在这个情况下,NetworkService是用作服务账号的最好选择。使用Windows Server 2008R2和SQL Server 2008 R2,这会提供一个非常安全的账号,可以轻松授权SQL Server的工作。

如果你想使用SQL Server代理的更多的一些高级功能,例如使用CmdExec子系统或PowerShell子系统,或者你想连接到SQL Server实例或网络共享,你会使用系统域用户账号作为自定义服务账号。你可以为SQL Server代理创建一个特定账号,在你的组织里为所有的SQL Server代理安装使用统一账号,或为每个SQL Server代理实例使用不同的账号。

当为SQL Server服务选择了一个账号时,你的账号需要下列权限:

  • 在所有Windows版本里,作为服务登陆的权限(SeServiceLogonRight
  • 在Windows服务器,SQL Server代理服务代理帐户需要下面权限:
    • 绕过遍历检查(SeChangeNotifyPrivilege)
    • 替换进程级令牌(SeAssignPrimaryTokenPrivilege)
    • 为进程调整内存配额(SeIncreaseQuotaPrivilege)
    • 作为批处理作业登录(SeBatchLogonRight)

这个列表来自SQL Server联机丛书https://msdn.microsoft.com/zh-cn/library/ms191543.aspx。此外,任何你选择的帐户必须是相关数据库实例中sysadmin服务器角色的成员。下一篇你将使用代理帐户,所以这些特权是必不可少的。

修改服务账号

如果你要更改服务帐户,你可以使用安装程序或SQL Server配置管理器来修改。这些程序将正确授予所有需要的权限和安全权利来启用新的服务帐户。你不应该直接用Windows更改服务帐户。插图1显示使用SQL Server配置管理器更改服务帐户。请注意,你需要Windows管理员权限来使用这个程序。

插图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代理某些部分的能力(插图2)。你只可以查看你自己创建的作业,以及查看和使用作业活动监视器(仅限你创建的作业)。

插图2:SQLAgentUserRole成员连接对象资源管理器

SQLAgentReaderRole

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

插图3:SQLAgentReaderRole成员连接对象资源管理器

SQLAgentOperatorRole

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

下篇预告

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

原文链接:http://www.sqlservercentral.com/articles/Stairway+Series/72460/

参考文章:http://www.cnblogs.com/Uest/p/4547568.html

SQL Server代理(9/12):理解作业和安全的更多相关文章

  1. SQL Server代理(6/12):作业里的工作流——深入作业步骤

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 如我们在这里系列的前几篇文章所见,SQL ...

  2. SQL Server代理(7/12):作业活动监视器

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在这个系列的前几篇文章里,你创建配置了SQ ...

  3. SQL Server代理(2/12):作业步骤和子系统

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. SQL Server代理作业有一系列的一个 ...

  4. SQL Server代理(11/12):维护计划作业

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在这一系列的上一篇,我们看了使用代理帐户模 ...

  5. SQL Server代理(1/12):配置和概况

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. SQL Server代理是SQL Serv ...

  6. SQL Server代理(4/12):配置数据库邮件

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在以前的文章里我们看到,SQL Serve ...

  7. SQL Server代理(5/12):理解SQL代理错误日志

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 如我们在这个系列的前几篇文章所见,SQL ...

  8. SQL Server代理(10/12):使用代理账号运行作业

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在这一系列的上一篇,你查看了msdb库下用 ...

  9. SQL Server代理(3/12):代理警报和操作员

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 如我们在这个系列的文章里所见,SQL Se ...

随机推荐

  1. 排序 via F#

    冒泡排序: let rec bsort_asc s = let rec _bsort_asc = function |x1::x2::xs when x1 > x2 -> match _b ...

  2. Vmware配置

    1.网络 四种连接模式的区别:http://www.cnblogs.com/awpatp/archive/2009/07/24/1530471.html 如果网卡使用Nat模式,则需要启动服务: VM ...

  3. 团队项目——站立会议 DAY8

    第八次站立会议记录: 参会人员:张靖颜,钟灵毓秀,何玥,赵莹,王梓萱 项目进展: 1.张靖颜:在反复修改和审查后,处理功能模块代码出错处,完善并运行. 2.钟灵毓秀:再次检查代码,运行报错处的代码修改 ...

  4. 5天玩转C#并行和多线程编程 —— 第一天 认识Parallel

    5天玩转C#并行和多线程编程系列文章目录 5天玩转C#并行和多线程编程 —— 第一天 认识Parallel 5天玩转C#并行和多线程编程 —— 第二天 并行集合和PLinq 5天玩转C#并行和多线程编 ...

  5. 我所了解的CSS

    我真的了解css吗? 我这样问自己. 我的思考和这几天的学习来自于看了寒冬winter大神的这篇blog:谈谈面试与面试题 .说实话, 我边看,脑袋里面边翻篇一样的过着我的那点css知识,看完了,整个 ...

  6. [硬件项目] 1、汽车倒车雷达设计——基于API8108A芯片简易智能语音模块的设计与实现

    前言 汽车倒车防碰撞系统是一种辅助汽车泊车装置.低配的由超声波收发电路.回波放大电路.语音提示电路.数码显示.报警及温度补偿电路组成,高配的有时会带有后视视频系统.[1]      一.工作原理 如下 ...

  7. Google 新推出Background sync API

    Background sync是Google新推出的Web API,可延迟用户行为,直到用户网络连接稳定.这样有助于保证用户想要发送的数据就是实际发送的数据. 目前存在的问题 网络是消磨用户时间最多的 ...

  8. Tomcat-MAC下添加Tomcat环境并运行

    MAC下添加Tomcat环境运行 1. 首先,下载tomcat.http://tomcat.apache.org/index.html 2. 然后解压.用终端进入到解压文件夹下的bin目录.  ...

  9. Atitit j2ee5 jee5 j2ee6 j2ee7 jee6 jee7 新特性

    Atitit j2ee5 jee5 j2ee6 j2ee7 jee6 jee7 新特性 Keyword Java ee5 ,Java ee6,Java ee7  j2ee5 jee5 j2ee6 j2 ...

  10. salesforce 零基础学习(三十)工具篇:Debug Log小工具

    开发中查看log日志是必不可少的,salesforce自带的效果显示效果不佳,大概显示效果如下所示: chrome商城提供了apex debug log良好的插件,使debug log信息更好显示.假 ...