安装 SQL Server 时,您可以指定 SQL Server 管理员,即最初具有 sysadmin 角色的用户列表。默认情况下,此列表包含当前用户。
(图片引自https://msdn.microsoft.com/en-us/library/dd578652.aspx。)
这个默认值让我觉得很奇怪。不是BUILTIN\Administrators
比当前用户更明智的选择吗?毕竟,Windows 身份验证的重点不是不必管理两个单独的用户/组目录吗?并且本地管理员无论如何都可以获得系统管理员权限,如果他们愿意的话,所以它也不是一个真正的安全功能。
另一方面,SQL Server 是由比我聪明得多的人编写的,所以这个默认值实际上可能有一个很好的理由。它是什么?
您是对的:系统管理员可以获得系统管理员访问权限,但您会在该操作的默认跟踪中找到条目。此外,它需要至少重新启动服务两次,这几乎不会被忽视。
不授予 BUILTIN\Administrators 系统管理员权限是 SQL Server 2008 中引入的一项更改。在我看来,这是一个好主意:它允许服务器管理员和 SQL Server 管理员之间的职责分离。
让 BUILTIN\Administrators 成为您的系统管理员角色的主要不良影响是失去控制,这可能表现为以下一项或多项烦人的事情:
长话短说,Windows 管理员拥有不同的技能组合和不同的心态,更不用说不同的职责:让他们管理您的 SQL Server 实例并不是一个好主意。
我的建议是为您的 DBA 创建一个 windows 组,并在每次安装新的 SQL Server 时将该组添加到 sysadmin 角色。
长期以来,使用本地管理员组一直是默认设置。但主要是在大型企业环境中,您有一个 Windows 操作团队和一个单独的 SQL Server 操作团队。允许所有人轻松(!)获得访问权限可以被视为安全问题。只允许当前用户可以用“默认安全”来解释。
正如您所说,本地管理员可以获得系统管理员权限。但在大多数情况下,他们会留下这样做的痕迹。
补充一点,删除默认系统管理员
BUILTIN\Administrators
和取消NT AUTHORITY\SYSTEM
默认系统管理员是为了改变 Microsoft 产品的安全性;去secure by default
方法论。我确信合规性的某些部分影响了 Microsoft 和 SQL Server 团队也选择这样做。实际上,允许后门进入您的实例的主要方法是将
SYSTEM
帐户用作服务帐户。这个后门在不重新启动 SQL Server 服务的情况下是可能的,并且除非在服务器上涉及监控,否则不会被注意到。如果您从角色中删除此帐户,则在SQL Server 2005 中不支持。sysadmin
现在快进到 Window Server 2012,另外一个安全步骤也删除了后门,默认情况下每个服务都使用虚拟帐户,或配置托管服务帐户。
psexec
使用我现在知道的“冒充”虚拟或 MSA 帐户,即使不是不可能,也很困难。