1

我正在实时(生产)服务器上部署 ASP.NET 应用程序和 SQL Server (2008) 数据库。物理服务器同时运行SQL Server 2008 和 IIS 7 - 它由托管公司提供,不属于我们的内部网络

我有几个关于数据库安全和 ASP.NET 应用程序的连接字符串的问题。

以前我会创建一个数据库用户并为每个表指定 SELECT/INSERT 等权限 - 但我的问题是这个数据库中有50 多个表,所以这样做需要很长时间

应用程序需要对每个表执行 SELECT/INSERT/DELETE/UPDATE。

  • 有没有比单独指定每个表的权限更好的方法?
  • 是否有等效于实时 Web 服务器的集成安全性- 有什么缺点?
  • 或者有没有办法将特定用户的访问权限提升为对特定数据库的完全访问权限

另外连接字符串将如何变化?

我只是在寻找一些专家建议,只是有人为我指明正确的方向,以及指向一些有关如何实现更好方法的文档的链接。

非常感谢。

4

2 回答 2

1

您的项目符号列表中基本上有三个不相关的问题,而不是一个。

  • 第一个更适合ServerFault.com,因为它处理 SQL Server,不一定是编程问题。
  • 对于第二个,集成安全性,是的,有一种方法可以将集成安全性与 ASP.NET 结合使用。请参阅这篇文章:http: //msdn.microsoft.com/en-us/library/bsz5788z.aspx
    • 最大的缺点是配置较多。这是一种非标准(但受支持)配置,因此维护程序员以前可能没有见过该设置。
    • 此外,如果您这样做,如果您使用的帐户在其他地方具有权限,则可能存在安全问题。一定要遵循最小特权原则。最好为每个网站专门创建一个域帐户,这样如果一个网站遭到入侵,它就会限制可以造成的损害。你比我更清楚你的安全问题,所以这可能是也可能不是相关的建议,但这是需要考虑的事情。
    • 最后,(这可能太明显了,无法指出)使用真人的 UserId 是愚蠢的。如果那个人离开公司并且他们的帐户被删除,那么网站显然会崩溃。
  • 既然我已经找到了第一个问题的答案,那么第三个问题就变得没有意义了。
于 2012-04-16T17:46:37.570 回答
1

您可以创建或使用现有的数据库角色。然后,您将用户放入该角色以允许该用户拥有您需要的所有权限。例如,根据您描述的场景,您可以将您在连接中使用的用户帐户放入db_datawriter角色中。

请参阅http://msdn.microsoft.com/en-us/library/ms189121%28v=sql.105%29.aspx

本文还涉及如何提升用户的权限。

集成的安全性将起作用——它只要求建立连接的计算机上使用的登录名可以被数据库服务器识别(在相同的或信任的 Windows 域中)。

于 2012-04-16T17:58:08.650 回答