SQL Server Express 2008 设置允许您为每个服务分配不同的用户帐户。

对于开发环境,您会使用域用户、本地用户、NT Authority ETWORK SERVICE、NT Authority\Local System 或其他帐户,为什么?

有帮助吗?

解决方案

本地系统 不推荐,它是一个相当于管理员的帐户,因此可能会导致有问题的编码,利用管理员权限,而这在生产系统中是不允许的,因为具有安全意识的管理员/DBA确实不喜欢以管理员身份运行服务。

根据服务器实例是否需要访问其他域资源,应确定它应在哪种类型的低权限帐户下运行。

如果它不需要访问任何(非匿名)域资源,那么我通常会创建一个唯一的本地低权限帐户供其运行,以获得不在同一身份上下文中运行多个服务的额外安全优势。 请注意,SQL Server 或 SQL Server 代理服务不支持本地服务帐户。

如果确实需要访问非匿名域资源,那么您有以下三种选择:

  1. 运行为 网络服务 这也是一个低权限帐户,但保留计算机网络凭据。
  2. 在本地服务帐户下运行
  3. 在具有较低本地权限的自定义域帐户下运行。在开发人员帐户下运行的一个优点是,可以更轻松地将调试器附加到您自己身份的进程,而不会影响安全性,因此调试更容易(因为非管理员帐户默认无权将调试器附加到另一个身份进程)。使用另一个域帐户的缺点是管理这些帐户的开销,特别是因为每个开发人员的每项服务理想情况下都应该具有唯一的凭据,这样如果开发人员离开,您就不会出现任何泄漏。

我倾向于做的大部分事情不需要服务来访问域资源,因此我倾向于使用我管理的独特的本地低权限帐户。我还专门以非管理员用户身份运行(并且在 XP SP2、Server 2003、Vista 和 Server 2008 下这样做,没有出现重大问题),因此当我遇到需要该服务访问域资源的情况时,我不用担心关于使用我自己的域凭据(这样我就不必担心网络管理员创建/维护一堆非生产域身份)。

其他提示

这取决于。

  • 本地系统 - 从不,它的特权太高。
  • 网络服务 - 也许,如果您需要连接到网络资源,但这令人怀疑。
  • 本地服务 - 可能是最佳选择,有限的特权,没有解锁网络连接
  • 本地交互用户?它是否确实需要拥有登录权或充当用户?
  • 域用户?善良,除非您从其中访问网络驱动器,否则不是;如果SQL运行AMOK,则针对域进行了攻击者的身份验证。

MS 现在有一篇关于此的好文章:http://msdn.microsoft.com/en-us/library/ms143504(v=sql.105).aspx

他们指出 SQL Server Engine 不允许使用本地服务。就我个人而言,我使用本地系统只是为了避免开发过程中出现问题,但在生产中,最佳实践是创建一个域级服务帐户,仅具有完成工作所需的权限。

无论它想使用什么作为默认值。改变这一点只会给以后带来麻烦。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top