SQL Server 2008中的Service SID 介绍
【介绍】
我们打开SQL Server 2008 Management Studio, 会发现有如下几个登录: NT SERVICE\ClusSvc, NT SERVICE\MSSQL$KATMAI和 NT SERVICE\SQLAgent$KATMAI,这几个登录在安装SQL Server的时候,就会被创建。(其中NT SERVICE\ClusSvc则只有在群集环境下被创建)。我们这里介绍一下这些登录,有什么用途,对我们系统的安全性有什么影响,我们能否把他们删除,以及删除掉的后果是什么。
【SERVICE SID的引入】
NT SERVICE\MSSQL$KATMAI, NT SERVICE\SQLAgent$KATMAI和NT SERVICE\ClusSvc 其实都是Service SID所对应的名字。Service SID的引入,是为了解决多个Service可能同用一个service帐号所带来的安全隐患。如IIS 使用Network Service帐号,可能其他服务也使用Network Service帐号。为了使得IIS能够连接到SQL Server, 我们可能会把Network Service作为SQL Server的login, 但是这是不安全的。因为其他服务如果以Network Service做为启动帐号的话,也能访问SQL Server。为了解决这个问题,在SQL Server 2008/Windows Server 2008及以后,我们有了SID这个概念,这样,不同的服务,即使服务启动帐号是相同的,它们的SID也是不同的。
所以,我们这里的一些logins,并不是Windows Users或Group的名字, 而是SID的名字。其相对应的SID值,我们可以用命令 sc showsid serviceName所得到。如下:
【SQL Server Agent的启动帐号是否需要sysadmin的权限】
如果操作系统是Windows 2003或者SQL Server 版本低于SQL Server 2008,那么SQL Server Agent的启动帐号需要sysadmin权限,否则SQL Server Agent无法启动。但是对于SQL Server 2008 在Windows 2008上面,我们发现,表面看来,似乎并不一定需要这个权限。
SID NT SERVICE\SQLAgent$KATMAI |
Service Account login CONTOSO\sqlu |
效果 |
有,并且是sysadmin |
有,并且是sysadmin |
SQL Agent能正常启动 |
有,并且是sysadmin |
有,但取消sysadmin权限 |
SQLAgent能正常启动 |
有,并且是sysadmin |
删除 |
SQLAgent能正常启动 |
有,但不是sysadmin |
有,并且是sysadmin |
SQLAgent能正常启动 |
有,但不是sysadmin |
有,但取消sysadmin权限 |
SQLAgent无法启动 |
有,但不是sysadmin |
删除 |
SQLAgent无法启动 |
删除 |
有,并且是sysadmin |
SQLAgent能正常启动 |
删除 |
有,但取消sysadmin权限 |
SQLAgent无法启动 |
删除 |
删除 |
SQLAgent无法启动 |
但是上述的结果表明,或者SID [NT SERVICE\SQLAgent$KATMAI]或者Agent Service Account (CONTOSO\sqlu) 其中之一必须要有sysadmin权限。否则SQLAgent这个服务就不能正常启动。也就是说,SQL Server Agent通过NT SERVICE\SQLAgent$KATMAI或CONTOSO\sqlu来登录SQL Server。Sysadmin的权限还是需要的。
【群集环境中,是否需要NT AUTHORITY\SYSTEM登录】
我们知道,在群集环境中,Cluster服务会对SQL Server每隔一分钟做一次ISALIVE检查。ISALIVE检查是通过群集服务帐号进行的。在Windows 2008环境下,群集服务是通过Local System也就是NT AUTHORITY\SYSTEM来连数据库的。
我们有时候会发现,把登录NT AUTHORITY\SYSTEM删除,ISALIVE检查也能够成功。这是因为在我们的登录中,有NT SERVICE\ClusSvc这个SID名,所以,群集服务的ISALIVE检查通过NT AUTHRORITY\SYSTEM或NT SERVICE\ClusSvc来登录SQL Server。
【NT SERVICE\MSSQL$KATMAI】
我们可能会有需要要更改SQL Server的服务启动帐号。更改SQL Server的服务启动帐号会涉及到一系列权限的变更。但是如果有NT SERVICE\MSSQL$KATMAI这个服务SID,那么权限的变更会变得最小,因为即使服务启动帐号有变化,但是服务的SID不会有变化。涉及到服务启动帐号的登录应用还是能够正常工作。
【小结】
NT SERVICE\MSSQL$KATMAI, NT SERVICE\SQLAgent$KATMAI和NT SERVICE\ClusSvc服务SID能够使得我们的安全管理更加便利。这几个登录在安装SQL Server的时候就会被创建。添加这几个login对安全没有什么副作用。能使得我们的安全管理更加方便。
但是我们也不能认为有这几个SID的帐号,就能随便把其他的登录如NT AUTHORITY\SYSTEM给删除。某些应用,如VSS Writer ,Windows自动更新等,还是需要用服务启动帐号来进行处理。
SQL Server 2008中的Service SID 介绍的更多相关文章
- SQL Server 2008中新增的 1.变更数据捕获(CDC) 和 2.更改跟踪
概述 1.变更数据捕获(CDC) 每一次的数据操作都会记录下来 2.更改跟踪 只会记录最新一条记录 以上两种的区别: http://blog.csdn.n ...
- SQL Server 2008中新增的变更数据捕获(CDC)和更改跟踪
来源:http://www.cnblogs.com/downmoon/archive/2012/04/10/2439462.html 本文主要介绍SQL Server中记录数据变更的四个方法:触发器 ...
- SQL点滴15—在SQL Server 2008中调用C#程序
原文:SQL点滴15-在SQL Server 2008中调用C#程序 T-SQL的在执行普通的查询的时候是很高效的,但是在执行循环,判断这样的语句的时候效率就不那么的高了.这时可以借助CLR了,我们可 ...
- 在SQL Server 2008中调用.net,dll
原文:在SQL Server 2008中调用.net,dll T-SQL的在执行普通的查询的时候是很高效的,但是在执行循环,判断这样的语句的时候效率就不那么的高了.这时可以借助CLR了,我们可以在SQ ...
- SQL Server 2008中的CDC(Change Data Capture)功能使用及释疑
SQL Server 2008中的CDC(Change Data Capture)功能使用及释疑 关键词:CDC 原文:http://www.cnblogs.com/chenxizhang/arc ...
- SQL SERVER 2008中使用VARBINARY(MAX)进行图像存取的实现方法
在数据库应用项目开发中,经常会使用一些二进制的图像数据,存储和读取显示图像数据主要采用的是路径链接法和内存流法.路径链接法是将图像文件保存在固定的路径下,数据库中只存储图像文件的路径和名称 ...
- SQL Server 2008中的数据压缩
SQL Server 2008中引入了数据压缩的功能,允许在表.索引和分区中执行数据压缩.这样不仅可以大大节省磁盘的占用空间,还允许将更多数据页装入内存中,从而降低磁 盘IO,提升查询的性能.当然,凡 ...
- SQL Server 2008中增强的"汇总"技巧
本文转载:http://www.cnblogs.com/downmoon/archive/2012/04/06/2433988.html SQL Server 2008中的Pivot和UnPivot: ...
- SQL Server 2008中数据压缩
SQL Server 2008中引入了数据压缩的功能,允许在表.索引和分区中执行数据压缩.这样不仅可以大大节省磁盘的占用空间,还允许将更多数据页装入内存中,从而降低磁盘IO,提升查询的性能.当然,凡事 ...
随机推荐
- MySQL 数据库性能优化之SQL优化
前言 有人反馈之前几篇文章过于理论缺少实际操作细节,这篇文章就多一些可操作性的内容吧. 注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础. 优化目标 ...
- empty($w)
<?php $w = ''; var_dump(empty($w)); $w = ' '; var_dump(empty($w)); $w = 0; var_dump(empty($w)); v ...
- Delphi dbf文件如何定位记录(即设置Table的RecNum属性来移动到该记录号)
Delphi的table的RecNum属性,可以用来定位记录,如:self.Table1.RecNum:=23;即可以让数据库记录移动到23号记录上,但这种作用仅限于Paradox数据库,而不是dBA ...
- js 定时跳转, 格式化字符串时间
效果 1.js中将一字符串表示的系统时间转换为Date时间对象 //js中将一串字符串转换为date类型,主要是先过滤字符,然后分割开 function parseToDate(strTime) { ...
- mysql参数,蛮全的
网上有很多的文章教怎么配置MySQL服务器,但考虑到服务器硬件配置的不同,具体应用的差别,那些文章的做法只能作为初步设置参考,我们需要根据自己的情况进行配置优化,好的做法是MySQL服务器稳定运行了一 ...
- iOS视图控制对象生命周期
iOS视图控制对象生命周期-init.viewDidLoad.viewWillAppear.viewDidAppear.viewWillDisappear.viewDidDisappear的区别及用途 ...
- 1058 N的阶乘的长度
1058 N的阶乘的长度 基准时间限制:1 秒 空间限制:131072 KB 输入N求N的阶乘的10进制表示的长度.例如6! = 720,长度为3. Input 输入N(1 <= N <= ...
- get 与 post
<form action="Default.aspx" method="get"> get 服务器端 用request.querystring来获 ...
- SqlServer2008R2 如何插入多条数据
列id 为自增列 insert into Websites2values('Google','https://www.google.cm/','USA',1),('淘宝','https://www.t ...
- .Net 文件名补位
文件以name-1.pdf.name-2.pdf.name-3.pdf......name-80.pdf命名,传到数据库中排序混乱:1之后为10,2之后是20,所以要把文件名中的数字补位变成相同位数, ...