我正在寻找内部 Web 应用程序到数据库层的端到端身份验证的最佳实践。
我见过的最常见的场景是使用单个 SQL 帐户,并将权限设置为应用程序所需的权限。所有应用程序调用都使用此帐户。然后,当人们需要通过查询工具访问数据库时,或者使用查询访问权限创建一个单独的组,并且人们可以访问该组。
我见过的另一种情况是使用完整的 Windows 身份验证端到端。因此,用户本身被添加到具有所有权限集的组中,以便用户能够在应用程序的参数之外更新和更改。这通常涉及确保人们使用适当的存储过程,这样他们就不会直接更新表。
第一种情况似乎相对容易维护,但如果应用程序中存在安全漏洞,则整个数据库都会受到威胁,从而引发担忧。
第二种情况似乎更安全,但存在相反的问题,即数据库上的存储过程中有大量业务逻辑。这似乎限制了一些非常酷的技术(如 Nhibernate 和 LINQ)的使用。然而,在当今时代,人们可以通过我们无法预见的多种不同方式使用数据,例如混搭等是最好的方法。
最佳答案
戴尔 - 就是这样。如果您想向这些用户提供对底层数据存储的访问权限,请通过服务来实现。根据我的经验,那些来自大学/学院的经验丰富的计算机用户对事物造成的损害最大。俗话说,他们知道的足够危险。
如果他们想要自动化部分工作,并且可以显示自己拥有必要的知识,那么请继续授予其域帐户对后端的访问权限。这样,他们通过小型 VBA 自动化所做的任何事情都与他们的帐户相关联,并且您确切地知道当数据被泄露时该去找谁。
我的基本观点是数据库是众所周知的应用程序的 chalice 。你希望在这个特定的馅饼中的手指尽可能少。
作为一名顾问,每当我听说有人允许普通用户进入数据库时,我的眼睛都会发光,因为我知道当我被叫去修复它时,这对我来说最终会是一大笔薪水。
关于asp.net - Intranet 应用程序的数据库身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/78984/