简介

Microsoft SQL Server 2005年安装程序创建本地的 Windows 组,您安装的每个服务。 SQL Server 2005 安装程序将每个服务的服务帐户添加到其各自的组。 对于 SQL Server 故障转移群集安装,以相同的方式使用 Windows 域组。 由域管理员运行 SQL Server 2005 安装程序之前,必须创建这些域组。 所有 Windows NT 权限和所需的特定服务的权限为每个 Windows 组都添加的系统访问控制列表 (SACL)。域管理员不给予直接向的服务帐户的权限。

此外,为 SQL Server 2005、 SQL Server Agent 创建的Windows 组,和系统组被授予 SQL Server 2005 配置 SQL 服务器 2005 SYSADMIN 固定的服务器角色中的登录名。 此配置使这些组的成员可以通过使用 Windows NT 身份验证连接登录到 SQL Server 2005 的任何帐户。 由于该用户没有 SQL Server SYSADMIN 固定的服务器角色中的组成员身份,则用户作为 SQL Server 2005 系统管理员登录到 SQL Server 2005。(用户使用 sa 帐户已登录)。 然后,用户具有不受限制地访问到 SQL Server 2005 安装,并对其数据。 此外,任何知道实例的 SQL Server 2005 或 SQL Server 代理服务帐户的密码可以使用服务的用户帐户登录到计算机上。然后,用户可以生成一个 Windows NT 身份验证连接到 SQL Server 2005 作为 SQL Server 管理员。

您创建的 SQL 服务器 2005年报告服务 (SSRS) 和全文搜索服务的 Windows 组还授予 SQL Server 登录名。 但是,报告服务和全文搜索服务不是提供 SYSADMIN 固定的服务器角色。

某些 SQL Server 2005 管理员需要数据库管理员和系统管理员严格分离的功能角色。 这些管理员想要防止操作系统管理员不需要访问的 SQL Server 2005。

详细信息

如何使 SQL Server 2005 系统管理员不需要的访问更加困难

要使到 SQL Server 2005 系统管理员不需要的访问更为困难,必须删除系统组授予登录权限。然后,您必须为 SQL Server 2005 和 SQL Server 代理授予直接登录的服务帐户。 接下来,您必须配置在 SYSADMIN 固定的服务器角色的登录名。最后,您必须删除已授予他们相应的 Windows 组的登录名。若要执行此操作,请执行以下步骤:

  1. 请确保您具有 SYSADMIN 固定的服务器角色的成员的帐户。此帐户不只能通过系统组的成员授予 SQL Server 2005 的登录权限。

  2. 删除系统组授予登录权限。若要执行此操作,请执行以下步骤:

    1. 使用已更改的任何登录权限的用户帐户登录到 SQL Server 2005。

    2. 展开安全性,展开登录系统中,用鼠标右键单击,然后单击删除

    3. 删除对象对话框中,单击确定

    注意:删除已授予的系统组的登录后,将不再能够访问 SQL Server 2005 只依赖于此组,以登录到 SQL Server 2005 中的成员身份的任何帐户。

    有关 Microsoft 群集服务 (MSCS) 服务帐户的信息,请参阅"Microsoft 群集服务 (MSCS) 服务帐户"部分。

  3. 使用具有显式授予 SQL Server 2005 登录到 SQL Server 2005 和 SQL Server 代理程序使用的服务帐户直接改变任何登录权限的帐户。 若要执行此操作,请执行下面的 SQL 语句。

    CREATE LOGIN [<Domain Name>\<SQL Server Service Account>] FROM WINDOWS WITH DEFAULT_DATABASE=[master]
    CREATE LOGIN [<Domain Name >\<SQL Server Agent Service Account>] FROM WINDOWS WITH DEFAULT_DATABASE=[master]
  4. 使用的帐户是 SYSADMIN 的成员固定服务器角色 SYSADMIN 的第 2 步中所添加的登录设置固定服务器角色。

    EXEC master..sp_addsrvrolemember @loginame = N'<Domain Name>\<SQL Server Service Account> ', @rolename = N'sysadmin'
    EXEC master..sp_addsrvrolemember @loginame = N'<Domain Name>\<SQL Server Agent Service Account> ', @rolename = N'sysadmin'
  5. 使用已删除的登录到 SQL Server 2005 组和 SQL Server 代理程序 Windows 组被授予的改变任何登录权限的帐户。

    DROP LOGIN [<Computer Name>\<SQLServer2005SQLServerUser>$<Computer Name>$MSSQLSERVER]
    DROP LOGIN [<Computer Name>\<SQLServer2005AgentUser>$<Computer Name>$MSSQLSERVER]

即使您执行这些步骤后,SQL Server 2005 的服务帐户和 SQL Server 代理服务帐户的密码必须保密从操作系统的系统管理员。 如果 SYSADMIN 固定服务器角色中提供了在 MSCS 服务帐户,MSCS 服务帐户密码必须也对保密从操作系统的系统管理员。 如果操作系统管理员了解 SQL Server 2005 的服务帐户或 SQL Server 代理服务帐户的密码,系统管理员可以使用服务帐户登录到计算机上。操作系统管理员登录到计算机之后,系统管理员将可以连接到的 SQL Server 2005 实例作为 SQL Server 管理员。

若要防止操作系统管理员了解 SQL Server 2005 和 SQL Server 代理程序使用的服务帐户的密码,SQL Server 系统管理员必须能够设置服务帐户的新密码。 在大多数情况下,SQL Server 2005 系统管理员不是操作系统的系统管理员。 因此,必须编写专用的工具来提供此功能。例如,您可以创建受信任的服务的 SQL Server 2005 系统管理员可用来更改所使用的 SQL Server 2005 的服务帐户的密码。 目前,Microsoft 不提供此项服务。

Microsoft 群集服务 (MSCS) 服务帐户

在 SQL Server 2005 的故障转移群集安装 MSCS 服务帐户依赖于要登录到 SQL Server 2005 中运行 IsAlive 检查的系统组中的成员资格。 如果从故障转移群集中删除系统组,您必须显式授予 MSCS 服务帐户权限登录到 SQL Server 2005 的故障转移群集。 若要执行此操作,请 SQL Server 2005 实例中执行下面的 SQL 语句。

CREATE LOGIN [<Domain Name>\<MSCS Service Account>] FROM WINDOWS WITH DEFAULT_DATABASE=[master]

SQL 服务器 2005 Service Pack 2 添加了故障转移群集 SQL Server 2005 的新诊断功能。 群集故障转移前,诊断程序将自动捕获 SQL Server 2005 群集资源的状态。 SQL Server 2005 的资源动态链接库 (DLL) 进行收集更容易,此诊断数据,如下所示:

  • SQL Server 2005 资源启动的 MSCS 服务帐户的安全上下文下的 Sqlcmd.exe 实用程序的一个实例。 然后,SQL Server 2005 资源采集各种动态管理视图 (DMV) 专用的管理员连接 (DAC) 上运行 SQL 脚本。

  • 群集故障转移之前,SQL Server 2005 资源捕获 SQL Server 2005 过程的用户转储文件。

专用的管理员连接使用某些诊断数据收集,因为 MSCS 服务帐户必须是 SYSADMIN 固定的服务器角色中进行设置。 如果 MSCS 服务帐户,无法设置 SYSADMIN 固定服务器角色中的意思是您的组织的安全措施,则可授予 MSCS 服务帐户中系统管理员未设置 SQL Server 登录固定服务器角色。 在这种情况下,通常通过 Sqlcmd.exe 实用程序来捕获诊断程序将失败,因为 Sqlcmd.exe 实用程序都将无法登录到 SQL Server 2005。 SQL Server 2005 资源 DLL 应该能够收集用户转储文件无论是否服务帐户的 SQL Server 2005 资源 DLL 设置在 SYSADMIN 固定服务器角色。

如果需要,使用的是 SYSADMIN 固定服务器角色的成员的帐户登录到 SQL Server 2005 上。然后,执行下面的 SQL 语句,以将 MSCS 服务帐户添加到 SYSADMIN 固定的服务器角色。

EXEC master.sp_addsrvrolemember @loginame = N'<Domain Name>\<MSCS Service Account> ', @rolename = N'sysadmin'

如何更改服务帐户

虽然前面的步骤可能会使操作系统管理员连接到 SQL Server 2005 的难度,前面的步骤使得更加难以为 SQL Server 2005 和 SQL Server 代理程序更改服务帐户。要为 SQL Server 2005 和 SQL Server 代理程序更改服务帐户,请执行以下步骤:

  1. 将新服务帐户或服务帐户添加到 Windows 组或您为 SQL Server 和 SQL Server 代理程序创建的组。

  2. 使用拥有改变任何登录权限来创建 SQL Server 2005 的新服务帐户登录的帐户。 若要执行此操作,请从有改变任何登录权限的帐户执行下面的 SQL 语句。

    CREATE LOGIN [<Domain Name>\<New SQL Server Service Account>] FROM WINDOWS WITH DEFAULT_DATABASE=[master]
    CREATE LOGIN [<Domain Name>\<New SQL Server Agent Service Account>] FROM WINDOWS WITH DEFAULT_DATABASE=[master]
  3. 使用 SYSADMIN 固定的服务器角色,以执行下面的 SQL 语句中设置的帐户。

    EXEC master..sp_addsrvrolemember @loginame = N’ <Domain Name>\<New SQL Server Service Account> ', @rolename = N'sysadmin'
    EXEC master..sp_addsrvrolemember @loginame = N’ <Domain Name>\<New SQL Server Agent Service Account> ', @rolename = N'sysadmin'

    注意:此语句将 SQL Server 2005 的服务帐户和 SQL Server 代理服务帐户添加到固定服务器角色 SYSADMIN。

  4. 通过使用 SQL Server 配置管理器中更改相应服务的服务帐户。 若要执行此操作,请执行以下步骤:

    1. 在 SQL Server 配置管理器中,单击SQL Server 2005 的服务

    2. 用鼠标右键单击想要修改,该服务,然后单击属性

    3. 单击登录选项卡,然后输入您想要使用的服务的用户帐户信息。

    4. 当您完成输入的帐户信息,请单击确定

    注意:更改服务帐户时,SQL Server 配置管理器将提示您重新启动该服务。

  5. 使用已删除了 SQL Server 2005 的服务帐户和 SQL Server 代理服务帐户使用的登录名的改变任何登录权限的帐户。 若要执行此操作,请执行下面的 SQL 语句。

    DROP LOGIN [<Domain Name>\<Old SQL Server Service Account>]
    DROP LOGIN [<Domain Name>\<Old SQL Server Agent Service Account>]

注意:不需要因为与其各自的 Windows 组,在步骤 1 中添加的新服务帐户授予任何新的 Windows NT 权限或新的服务帐户的权限。

建议对流程进行审核

如果您想要防止由操作系统管理员不需要访问 SQL Server,您还应审核以下进程:

  • 审核启动和停止的基于 Windows 的服务器。

  • 审核启动和停止 SQL Server 2005 的服务和 SQL Server 代理服务。

  • 审核对在哪些 SQL Server 存储数据库文件、 数据文件、 日志文件和数据库备份文件的目录的访问。

  • 审核到的 SQL Server 2005 的服务帐户和 SQL Server 代理服务帐户的更改。

  • 审核由 SQL Server 2005 的服务帐户、 SQL Server 代理服务帐户,或 MSCS 服务帐户的网络登录和计算机登录。

NT AUTHORITY\SYSTEM 帐户

NT AUTHORITY\SYSTEM 帐户也授予 SQL Server 登录名。 NT AUTHORITY\SYSTEM 帐户是 SYSADMIN 固定的服务器角色中设置的。 不要删除此帐户或 SYSADMIN 固定的服务器角色中删除它。 通过 Microsoft 更新和 Microsoft SMS 使用 NTAUTHORITY\SYSTEM 帐户,以适用于 SQL Server 2005 安装的服务包和修补程序。 SQL 编写器服务还使用 NTAUTHORITY\SYSTEM 帐户。

同样,如果在单用户模式下启动 SQL Server 2005,则任何用户的系统组中具有成员资格可以连接到 SQL Server 2005 作为 SQL Server 管理员。 用户可以连接而不考虑是否有组已被授予 SYSADMIN 固定服务器角色中设置的服务器登录名。 此行为是设计使然。 此行为旨在用于数据恢复方案。

SQL Server 2005 的安全最佳做法的详细信息,请参阅 SQL Server 2005 联机丛书中的"安全注意事项为 SQL Server 安装"主题。

参考资料

有关 SQL Server 安装的安全注意事项的详细信息,请访问下面的 Microsoft TechNet Web 站点:

http://technet.microsoft.com/en-us/library/ms144228.aspx

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×