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。
我该如何阅读?是否应该保留这些“高”特权?
在您投票之前,您可以参考以下正式文档,了解这些帐户将按照您所看到的方式编写脚本的合法原因:STIG 规则 SV-53421r2_rule。这些控件是特定于 SQL Server 版本的,但在较新的版本中还有许多其他控件。如果您所在的组织受到这些控制,并且还遵守一些更严格的控制,例如撤销给予公共角色的默认拨款,那么事情很快就会变得复杂。
由于我在受这些控制的环境中拥有一些经验,我可以说您可以直接禁用/删除 和NT SERVICE\SQLWriter帐户NT SERVICE\Winmgmt,但您需要确保您的 SQL Server 服务在具有足够操作系统级别的适当服务帐户下运行权限,例如充分锁定的域服务帐户,甚至更好的独立或组托管服务帐户。同样,需要小心对待操作系统权限,因为如果您不执行足够的测试,这确实会进入纸牌屋领域。
至于该NT AUTHORITY\SYSTEM帐户,如果您要运行任何可用性组,则这不是您想要删除的帐户。事实上,STIG SV-93835r1_rule提到您应该仅保留CONNECT SQL默认授予的权限。如果您有可用性组,则此帐户还需要具有以下附加权限:
这些限制可能会让人非常痛苦,但您有合理的理由需要限制它们的使用和权限集。如果您不符合这些准则,请帮自己一个忙并注释掉这些步骤。
希望有帮助!