asp.net - Windows 身份验证和网络服务帐户作为 db_owner

标签 asp.net sql-server windows-authentication

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

<小时/>

谢谢吝啬 jack ,

我听到你在说什么,但他们必须首先以网络服务用户身份登录数据库。有没有简单的方法可以做到这一点?

我真正想弄清楚的是,分配 db_owner 角色的默认网络服务帐户是否存在与此相关的固有风险。

最佳答案

对于很多环境来说,使用 NETWORK SERVICE 作为 db_owner 可能没问题。

如果您想获得更高程度的安全性,只需创建一个单独的 Windows 帐户,授予它在 SQL Server 中所需的最低访问权限,然后将应用程序更改为在此新帐户的上下文中运行。

具体风险是:

  • 在 NETWORK SERVICE 上下文中运行的编写不当的应用程序可能会允许对 NETWORK SERVICE 有权访问的所有其他数据进行未经授权的访问。您可以通过为所有应用程序创建单独的帐户来降低这种风险。
  • db_owner 的访问权限可能比应用程序真正需要的更多,这意味着如果您受到威胁,则更有可能被滥用/利用。您可以通过选择授予常识性特权来大大减少这种情况。不过,如果做得太过分,您的返回将会递减,并且会带来更多的支持麻烦。

关于asp.net - Windows 身份验证和网络服务帐户作为 db_owner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/295945/

相关文章:

asp.net - Windows身份验证-针对不同用户的测试

asp.net - 在本地环境中调试 Windows azure 项目时出现 System.ServiceModel.Channels.ServiceChannel 错误

java - hibernate createStoredProcedureQuery 执行抛出 callablestatement.getmoreresults

c# - 将声明转换与 Windows 身份验证结合使用

sql-server - sql server 2005 xml更新查询汉字

sql-server - 如何查询 SQL Server 数据库中的完整表名列表

asp.net-mvc-3 - MVC3 内联网成员(member)资格

asp.net - Jeff Prosise 的 session 劫持博客 - 有任何更新吗?

64 位 IIS 7.5 服务器上的 ASP.NET/MVC 4 捆绑和缩小 404 问题

c# - 如何隐藏 DataGrid 中的列?