故纸堆 原文:SQL SERVER 2008安装中设置账户的问题 ,2013-7
在安装SQL Server 2008数据库服务器的时候,服务器有可能处于以下几种环境中:
①工作组环境下的服务器 (WorkGroup)
②域环境下的域控制器 (Domain Controller)
③域环境下的成员服务器 (Domain Member)
④群集环境 (cluster)
在实际应用中,开发人员或者实施人员很少有机会接触到基于域控制器的网络环境的应用,绝大多数应用都是针对工作组环境的。
比如:配置好的IIS服务器中会发布很多网站,服务器本身也会承载数据库的角色等,此时即是在工作组环境下的应用。
但对于微软平台企业级应用开发而言,则几乎都需要在域环境下进行应用和部署。
比如微软的CRM,SharePoint,uc等产品的二次开发、.NET平台为了适应企业环境和组织架构在域模式下的应用开发等,此时可能会涉及到在域控制器、域成员服务器甚至在“群集”中安装SQL Server 2008。
上面列举了SQL SERVER 2008可能的应用部署环境,但无论是哪一种环境下应用,都会碰到为每个<SQL Server服务>配置账户的问题。
为什么要给SQL SERVER 的每一个服务配置账户?
这是因为:给SQL SERVER服务配置了不同的账户之后,该SQL SERVER服务就会以该账户所属的组来运行,从而通过账户去控制该服务访问各种资源的权限。
SQL Server 2008内置了3个账户,分别是:
Local Service 本地服务帐户,
Network Service 网络服务帐户,
Local System 本地系统帐户
1.Local Service 帐户:
Local Service本地服务帐户与 Users 组的成员具有相同级别的资源和对象访问权限
(题外话:什么是Users账户组,参见《Windows六大用户组功能分析》)。
如果有个别服务或进程的安全性受到威胁,则此账户的有限访问权限有助于保护系统的安全性。
以 Local Service 帐户身份运行的服务将以一个没有凭据的 Null 会话形式访问网络资源。
请注意:SQL Server 或 SQL Server 代理服务不支持 Local Service 帐户。
该帐户的实际名称为“NT AUTHORITY\LOCAL SERVICE”。
题外话:Windows凭据(Credential)其实就是指用户帐户和口令。
Null会话,即空会话,参见《空连接》一文。
2.Network Service 帐户:
Network Service 网络服务账户比 Users 组的成员拥有更多的对资源和对象的访问权限。
以 Network Service 帐户身份运行的服务将使用计算机帐户的凭据访问网络资源。
该帐户的实际名称为“NT AUTHORITY\NETWORK SERVICE”。
3.Local System 帐户:
Local System 本地系统账户是一个具有高特权的内置帐户。
它对本地系统有许多权限并作为网络上的计算机。
该帐户的实际名称为“NT AUTHORITY\SYSTEM”。
---------------------------------------------------------------------------------------------------------------------------
在实际应用中,
1.若在工作组环境下安装SQL Server 2008,允许使用的账户包括:
①本地用户帐户(注意不是Local Service本地服务账户!)、
②内置账户(Network Service网络服务账户、Local System本地系统账户等)。
2.若在域环境上(包括成员服务器)安装 SQL Server 2008,
(注意:出于安全方面的考虑,Microsoft 建议不要将 SQL Server 2008 安装在域控制器上)
虽然SQL Server 安装程序不会阻止在作为域控制器的计算机上进行安装,但存在以下限制:
①可使用的账户受限
在域控制器上,无法在<Local Service本地服务帐户>或<Network Service网络服务帐户>下运行 SQL Server 服务。此时用的账户一般是域账户和<Local System本地系统账户>。
②将 SQL Server 安装到计算机上之后,无法将此计算机从域成员更改为域控制器。
必须先卸载 SQL Server,然后才能将主机计算机更改为域控制器。
③在群集节点用作域控制器的情况下,不支持 SQL Server 故障转移群集实例。
④SQL Server 安装程序不能在只读域控制器上创建安全组或设置 SQL Server 服务帐户。在这种情况下,安装将失败。
--------------------------
总之,通过给不同的SQL SERVER 服务配置不同的账户,就可以控制其权限,从而限制可访问的资源,并且有助于系统的安全运行。