本周发生了一起事件,我们的一个 SQL Server 实例意外离线。我发现运行该实例的 Windows 服务已停止,并且由于服务使用的帐户被禁用而无法重新启动它们。据称这些帐户大约在三周前被禁用。
承载这些服务的 Windows 服务器在凌晨重新启动时被发现已关闭。我最后一次访问该实例是在重新启动前几个小时,没有任何问题。这让我相信,在持续运行的服务上,凭据不会重新进行身份验证。这是真的吗?如果不是,控制该行为的策略或默认值是什么?
到目前为止,我在网上搜索到的所有信息都是关于当设备不在域网络上时对已禁用帐户进行本地身份验证。除了服务无法启动时的标准故障排除步骤外,我似乎找不到任何关于在服务上使用已禁用 AD 帐户的信息。
答案1
这取决于您的服务。
服务启动时使用的帐户将从域控制器获取 kerberos 票证。服务使用该票证之后执行的操作会影响帐户错误发生的时间。
对于 SQL 实例,问题在于当 SQL 实例启动并且身份验证方法由 SQL 完成时,您可能稍后才会看到该问题,就像您的情况一样。问题是如果服务不需要与其他网络资源交互,它将在本地执行自己的工作而不会出现任何问题,直到您重新启动或尝试重新启动服务。(或者如果您的 SQL 执行 Windows 身份验证)
另一个产品的示例;例如 Microsoft Exchange Topologie Active Directory 服务,该服务会触发域控制器。这是它的工作。因此,在这种情况下,关闭该服务运行的帐户将立即产生影响。
使用服务帐户是最佳做法,但记录它们确实很重要。如果服务仍在运行,则不应禁用此类帐户。