删除自动创建的 NT AUTHORITY 和 NT SERVICE 帐户

Geo*_*ios 9 security sql-server sql-server-2016

所以我最近转移了工作——我在我们的新 SQL Server 安装的构建脚本中发现的一段代码如下。

IF EXISTS ( SELECT  *
            FROM    [sys].[syslogins]
            WHERE   [name] = N'NT AUTHORITY\SYSTEM' )
    BEGIN
        DROP LOGIN [NT AUTHORITY\SYSTEM];
    END

IF EXISTS ( SELECT  *
            FROM    [sys].[syslogins]
            WHERE   [name] = N'NT SERVICE\SQLWriter' )
    BEGIN
        DROP LOGIN [NT SERVICE\SQLWriter];
    END

IF EXISTS ( SELECT  *
            FROM    [sys].[syslogins]
            WHERE   [name] = N'NT SERVICE\Winmgmt' )
    BEGIN
        DROP LOGIN [NT SERVICE\Winmgmt];
    END
GO
Run Code Online (Sandbox Code Playgroud)

默认情况下,这些帐户是在 SQL Server 安装过程中创建的。

是否建议删除上述登录?这会导致任何副作用吗?这些登录有什么用?

我阅读了能否删除 NT SERVICE\SQLWriter 和 NT SERVICE\Winmgmt 登录名?但这还不够具体-我可以看到它们的用途,但除此之外很少见。他们需要系统管理员访问权限吗?等等。

例如(取自配置 Windows 服务帐户和权限):

本地系统是一个特权非常高的内置帐户。它在本地系统上拥有广泛的特权,并充当网络上的计算机。帐户的实际名称是NT AUTHORITY\SYSTEM

我该如何阅读?是否应该保留这些“高”特权?

Joh*_*ner 4

在您投票之前,您可以参考以下正式文档,了解这些帐户将按照您所看到的方式编写脚本的合法原因:STIG 规则 SV-53421r2_rule。这些控件是特定于 SQL Server 版本的,但在较新的版本中还有许多其他控件。如果您所在的组织受到这些控制,并且还遵守一些更严格的控制,例如撤销给予公共角色的默认拨款,那么事情很快就会变得复杂。

由于我在受这些控制的环境中拥有一些经验,我可以说您可以直接禁用/删除 和NT SERVICE\SQLWriter帐户NT SERVICE\Winmgmt,但您需要确保您的 SQL Server 服务在具有足够操作系统级别的适当服务帐户下运行权限,例如充分锁定的域服务帐户,甚至更好的独立或组托管服务帐户。同样,需要小心对待操作系统权限,因为如果您不执行足够的测试,这确实会进入纸牌屋领域。

至于该NT AUTHORITY\SYSTEM帐户,如果您要运行任何可用性组,则这不是您想要删除的帐户。事实上,STIG SV-93835r1_rule提到您应该仅保留CONNECT SQL默认授予的权限。如果您有可用性组,则此帐户还需要具有以下附加权限:

  • 更改任何可用性组
  • 查看服务器状态
  • 在 [sys].[sp_server_diagnostics] 上执行
  • 在 [sys].[sp_availability_group_command_internal] 上执行

这些限制可能会让人非常痛苦,但您有合理的理由需要限制它们的使用和权限集。如果您不符合这些准则,请帮自己一个忙并注释掉这些步骤。

希望有帮助!