Intranet应用程序的数据库身份验证

时间:2008-09-17 01:37:09

标签: asp.net sql nhibernate

我正在寻找内部Web应用程序到数据库层的端到端身份验证的最佳实践。

我见过的最常见的情况是使用单个SQL帐户,其权限设置为应用程序所需的权限。所有应用程序调用都使用此帐户。然后,当人们需要通过查询工具访问数据库时,或者使用查询访问创建一个单独的组,并且人们可以访问该组。

我看到的另一个场景是使用完整的Windows身份验证端到端。因此,用户自己被添加到具有所有权限集的组中,以便用户能够在应用程序的参数之外更新和更改。这通常涉及将人员保护到适当的存储过程,因此他们不会直接更新表。

第一种情况似乎相对容易维护,但如果应用程序中存在安全漏洞则会引起关注,那么整个数据库都会受到损害。

第二种情况似乎更安全,但在数据库上存储过程中需要很多业务逻辑时却存在相反的问题。这似乎限制了一些非常酷的技术如Nhibernate和LINQ的使用。然而,在人们可以以多种不同方式使用数据的这个时代,我们无法预见,例如混搭等是最好的方法。

5 个答案:

答案 0 :(得分:2)

戴尔 - 这就是它。如果要向这些用户提供对底层数据存储的访问权限,请通过服务进行访问。根据我的经验,来自Uni / College的经验丰富的计算机用户最容易受到损害。俗话说,他们知道这很危险。

如果他们希望自动完成部分工作,并且他们可以显示他们具备必要的知识,那么请继续,授予他们的域帐户访问后端的权限。这样他们通过他们的小VBA自动化做的任何事情都与他们的帐户有关,而且你知道在数据被软管时要去看谁。

我的基本观点是数据库是应用程序的众所周知的圣杯。你想要尽可能少的手指在那个特定的馅饼。

作为一名顾问,每当我听到有人允许普通用户进入数据库时​​,我的眼睛就会亮起来,因为我知道当我被要求修复它时,它最终将成为我的一大笔薪水。

答案 1 :(得分:1)

就个人而言,我不希望数据库中有正常的最终用户。对于Intranet应用程序(尤其是驻留在域中的应用程序),我将为数据库的应用程序访问提供一个帐户,该帐户仅具有应用程序运行所需的权限。

然后可以通过用户的域帐户控制对应用程序的访问(关闭IIS中的匿名访问等)。

IF 用户需要并且可以证明直接访问数据库,然后他们的域帐户将获得对数据库的访问权限,并且他们可以登录到DBMS使用适当的工具。

答案 2 :(得分:0)

过去一年,我一直负责开发多个内部网络应用程序。

我们的解决方案是使用Windows身份验证(Active Directory或LDAP)。

我们的目的仅仅是允许使用现有公司ID /密码进行简单登录。我们还希望确保现有部门仍然负责验证和管理访问权限。

虽然我无法回答有关Nhibernate或LINQ的论点,但除非你有一个特定的杀手级功能,否则这些东西可以实现,Active Directory或LDAP很简单,可以实现和维护,值得尝试。

答案 3 :(得分:0)

斯蒂芬 - 让正常的最终用户远离数据库是很好的但是我想知道在这个时代是否有这么多经验丰富的计算机用户从大学/学院走出来,如果这是正确的道路。如果有人想要自动完成他们的部分工作,其中包括对数据库的VBA更新,我允许他们通过正常的应用程序进行更新,我们就会通过这种方式限制他们的访问而失去收益。

我想这里暗示的另一条路径是您可以通过服务打开应用程序,然后通过组保护这些服务,并且仍然将用户与数据库分开。

然后通过委派,您可以允许各部门根据Jonathan的帖子通过群组控制对自己帐户的访问。

答案 4 :(得分:0)

我同意Stephen Wrighton的观点。域安全是要走的路。如果您想使用mashup和what-not,您可以通过机器可读的RESTful接口公开数据库的各个部分。 SubSonic有一个built in