【问题标题】:Anonymous access (IIS) and SQL Server匿名访问 (IIS) 和 SQL Server
【发布时间】:2009-01-30 16:49:28
【问题描述】:

我刚刚在雷德蒙德接受了一次采访,他们问了我很多关于 asp.net 的安全问题。他们提出的问题之一是关于配置安全的 Intranet 应用程序以使用约束委派访问 SQL Server。在这种情况下,AD 用户帐户被委派访问 SQL Server。整个目的当然是 a) 不在 Web 服务器 (web.config) 的任何位置存储任何用户名/密码,并且 b) 提供可以在 Active Directory 中管理的抽象安全模型。

这让我开始思考这些年来我是如何将我的网站配置为匿名访问的。通常我会使用默认匿名帐户运行我的 IIS 网站,并将连接字符串存储在 web.config 中(加密,有时以明文形式)。当然,这需要您的 SQL Server 以混合模式运行。所以我的问题是,如果我们根本不将连接字符串存储在 web.config 中,而只是为在 SQL Server 中具有 db_datareader 访问权限的特定网站创建了一个唯一的匿名域帐户,该怎么办?有什么理由说明这样做是个坏主意吗?

我已经尝试过所有情况下这是一个坏主意,而我唯一能想到的是“黑客”破坏了 Web 服务器上的代码,然后以某种方式访问​​了您的 SQL服务器...但这可能发生在任何一种情况下。

有人知道这里的最佳做法吗?

【问题讨论】:

    标签: asp.net security iis


    【解决方案1】:

    也许您可以使用 ODBC 为 SQL Server 连接创建 DSN。那么你的 web.config 只需要知道 DSN。这可能需要您使用 System.Data.OleDb。我从未见过在 ASP.NET 中使用 DSN,但它曾经是经典 ASP 的标准。而且我从未听说过使用 Active Directory 来管理 ODBC。

    【讨论】:

      【解决方案2】:

      在我工作的地方,我们有一个在特定域帐户下运行的 Windows 服务。该帐户在 SQL Server 中设置为登录名,并且它在需要访问的数据库中具有匹配的用户。我们从来没有遇到过任何问题。

      我认为最重要的是正确配置您的数据库用户(或角色),使其只能访问所需的内容。

      我考虑过使用 AD 以您在第一段中描述的类似方式管理 SQL 访问。 (AD 组 -> SQL Server 登录 -> DB 用户 -> DB 对象)到目前为止,我看到的唯一缺点是,如果用户直接连接到数据库,他们将绕过您在应用程序中的任何逻辑。一个好处是,您知道哪些域用户正在访问您的数据库。

      【讨论】:

      • 在第一段中,我提到了约束委派。这将使用一个域帐户并模拟一个用户,它的访问“受限”到只有 SQL Server,在场中没有其他任何东西。在这种情况下,您的用户将无法直接访问 SQL,只能通过应用程序访问。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      • 1970-01-01
      • 2021-03-12
      • 2011-08-12
      相关资源
      最近更新 更多