服务应在哪个 Windows 帐户下运行以访问网络 sql 服务器

Posted

技术标签:

【中文标题】服务应在哪个 Windows 帐户下运行以访问网络 sql 服务器【英文标题】:what Windows account should a service run under to access network sql servers 【发布时间】:2010-07-26 20:36:37 【问题描述】:

我正在考虑创建一个 Windows 服务,该服务将定期运行并查询网络数据库并将信息存储在本地计算机上(请不要问为什么!)。 我希望在没有人在本地登录计算机时运行此服务。服务应该在 Localservice、Localsystem 或 Network 下运行什么帐户。 将向包括本地在内的所有联网数据库提供用户名和密码。

【问题讨论】:

【参考方案1】:

我可能会创建一个特定的域帐户并将该权限授予 SQL 服务器和您将使用的任何本地存储。如果您想使用 SQL 凭据连接到数据库,那么它可以是本地帐户(可以访问本地资源)或更高权限的用户(如 LocalSystem)。

【讨论】:

我同意特定域帐户。【参考方案2】:

为了保证您可以真正连接到数据库,我建议您创建一个服务帐户(类似于 /User - 并应用一个不会过期的密码)。

这样您可以在 SQL Server 中设置用户并在连接时使用集成安全性。

例如:

领域:*** 服务:SearchDB

我会创建一个用户 ***\SearchDBUser

基本上你在设置windows服务时不必拘泥于预定义的用户。

我希望这会有所帮助。

瓦格纳。

【讨论】:

集成安全 = 糟糕。在 .config 某处拥有单独的凭据要好得多。如果/当他们确实设法进入您的服务器时,对坏人来说只是一个障碍。 @AllenG -- 我假设他说的是对从未实际用于访问系统的服务帐户使用集成身份验证,只是为了运行服务。实际上,您必须破解该帐户的凭据(而且它们的密码通常比普通密码长得多)才能真正为您带来任何好处。 您通常也不允许登录和大多数其他权限访问 服务 帐户,这会降低密码的用处,即使成功获得密码也是如此。 “这样您就可以在 SQL Server 中设置用户并在连接时使用集成安全性”:来自答案。至少对我来说,这听起来像是他在说您可以在机器和数据库上设置一个特殊的用户帐户,以便机器上的服务可以使用集成安全性连接到数据库。 @AllenG:您在域上设置了帐户,而不是在两台机器上。然后配置 SQL Server 以向该帐户授予最低限度的必要权限。【参考方案3】:

这实际上可能最好在 ServerFault 上询问,但我一直将其视为“网络”或“本地系统”,具体取决于具体用途。

【讨论】:

以上是关于服务应在哪个 Windows 帐户下运行以访问网络 sql 服务器的主要内容,如果未能解决你的问题,请参考以下文章

作为域帐户运行 Windows 服务所需的最低权限 [关闭]

如何从Windows服务启动进程到当前登录的用户会话

以特权用户身份运行 Windows 服务

为用户 (S4U) 令牌创建服务

IIS 网络用户帐户可以调用在不同帐户下运行的 WCF 服务吗?

“本地系统”帐户和“网络服务”帐户之间的区别?