Windows身份验证和网络服务帐户作为的db_owner

问题描述:

有一些商业产品的在那里,这给你一个窗口配置您的应用程序和后端SQL Server数据库基础安装。通常,它会询问您是否要使用Windows或SQL Server身份验证连接到数据库。他们中的大多数提出建议使用Windows身份验证,然后用分配到db_owner数据库角色的网络服务帐户配置数据库。 据我所知,Windows身份验证更安全,因为你不必存储凭证在web.config中,并将它们发送线时验证到SQL Server,但对于生产环境中,网络服务帐户是一种安全的配置一个db_owner?我们应该注意哪些具体的风险?Windows身份验证和网络服务帐户作为的db_owner


感谢StingyJack,

我听到你说的话,他们将不得不登录到数据库作为网络服务用户至上虽然。有没有简单的方法来做到这一点?

我真正想弄明白的是,是否有任何固有的风险与默认分配了db_owner角色的网络服务帐户有关。

是,应用程序(和它的任何用户)可以可能执行任何DBO可以对数据库执行。 DROP TABLE,SELECT * FROM PASSWORDS等。

如果您设置了针对SQL注入的预防性措施,并且已经用适当的应用程序层安全性编写了您的应用程序,那么使用Windows Auth和dbo可能会没问题。

如果您正在使用非常敏感的数据的工作,不信任的应用程序(还),还是希望尽可能的安全,那么你将不得不在数据库层实现安全。

例如,用户X可以访问表的视图a和b和图c和用户Y仅有权访问视图C。您的应用程序必须以适当的用户身份连接才能访问正确的对象。

登录到数据库作为网络服务(域\机器$)将是非常困难的(我不知道,但一些的l33t haxor大概可以),除非你是在网络上盒的服务。

没有密码,它不是互动,它有非常有限的权利(除非“本地系统”)。

的主要问题是SQL注入攻击。 这些适用于通过数据库服务器的任何连接。

具有的db_owner额外的风险是DROP TABLE,甚至删除数据库类型的攻击。 没有的db_owner,它仍然是危险的,例如 “SELECT * FROM用户表WHERE 1 = 1” 的攻击。

不幸的是,你有商业或第三方应用程序没有选择使用存储的特效,至少许可等

您可以减少安装后虽然权利。

使用网络服务作为的db_owner可能对很多环境的确定。

如果你想有一个更高的安全性,只需创建一个单独的Windows帐户,授予它是在SQL Server需要的最低权限,然后改变这个新帐户的上下文中运行应用程序。

的特定风险将是:

  • 一个网络服务的环境下编写得很糟糕的应用程序运行可以允许所有的网络服务访问其他数据的未授权访问。你减轻创建的所有应用程序单独的帐户风险。
  • 的db_owner可能更多的访问比应用程序真正需要的,如果你是妥协,这意味着滥用/开发更具潜力。您可以通过挑选常识权限授予减少这种颇有几分。把它太远,你将有收益递减和更多的支持头疼,虽然。