asp.net - Intranet 应用程序的数据库身份验证

标签 asp.net sql nhibernate

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

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

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

第一种情况似乎相对容易维护,但如果应用程序中存在安全漏洞,则整个数据库都会受到威胁,从而引发担忧。

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

最佳答案

戴尔 - 就是这样。如果您想向这些用户提供对底层数据存储的访问权限,请通过服务来实现。根据我的经验,那些来自大学/学院的经验丰富的计算机用户对事物造成的损害最大。俗话说,他们知道的足够危险。

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

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

作为一名顾问,每当我听说有人允许普通用户进入数据库时​​,我的眼睛都会发光,因为我知道当我被叫去修复它时,这对我来说最终会是一大笔薪水。

关于asp.net - Intranet 应用程序的数据库身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/78984/

相关文章:

SQL Oracle : Replace an empty result with word

javascript - 如何将列表项添加回嵌套元素?

asp.net - 位置 0 错误处没有行

c# - 命名空间的奇怪问题

java - sql 或 sqlite 查询并在列表中获取结果

c# - 为什么 GetGenericTypeDefinition 失败?

asp.net - Cookie和子域

SQL Server |我的存储过程没问题吗?

C#,将 Xml 序列化与 Nhibernate 混合使用时出现问题

unit-testing - 自动分析/单元测试 NHibernate 行为