2

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

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

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

第一种情况似乎相对容易维护,但如果应用程序中存在安全漏洞,那么整个数据库就会受到损害,这会引起人们的担忧。

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

4

5 回答 5

2

戴尔——就是这样。如果您想为这些用户提供对底层数据存储的访问权限,请通过服务进行。根据我的经验,那些从大学/大学毕业的有经验的计算机用户对事情的伤害最大。俗话说,他们知道的足够危险。

如果他们想自动化他们的部分工作,并且他们可以展示他们拥有必要的知识,那么继续,授予他们的域帐户对后端的访问权限。这样一来,他们通过小型 VBA 自动化所做的任何事情都与他们的帐户相关联,并且您确切地知道当数据被淹没时该去查看谁。

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

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

于 2008-09-17T02:16:50.777 回答
1

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

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

如果用户需要并且可以证明直接访问数据库,那么他们的域帐户将被授予访问数据库的权限,并且他们可以使用适当的工具登录 DBMS。

于 2008-09-17T01:43:15.320 回答
0

在过去的一年里,我一直负责开发几个内部 Web 应用程序。

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

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

虽然我无法回答有关 Nhibernate 或 LINQ 的论点,但除非您有这些东西可以实现的特定杀手级功能,否则 Active Directory 或 LDAP 足够简单,可以实现并保持值得尝试。

于 2008-09-17T01:48:06.197 回答
0

Stephen - 将普通最终用户排除在数据库之外很好,但我想知道在当今这个时代,有这么多有经验的计算机用户从大学/学院出来,这是否是正确的道路。如果有人想自动化他们的部分工作,其中包括对数据库的 VBA 更新,我允许他们通过正常的应用程序来完成,我们是否会因为以这种方式限制他们的访问而失去收益。

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

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

于 2008-09-17T02:01:41.140 回答
0

我同意斯蒂芬·赖顿的观点。域安全是要走的路。如果您想使用混搭之类的东西,您可以通过机器可读的 RESTful 接口公开部分数据库。SubSonic有一个内置的.

于 2008-09-17T02:15:08.520 回答