我正在为内部 Web 应用程序到数据库层的端到端身份验证寻找最佳实践。
我见过的最常见的场景是使用单个 SQL 帐户,并将权限设置为应用程序所需的权限。此帐户由所有应用程序调用使用。然后,当人们需要通过查询工具访问数据库或使用查询访问创建这样一个单独的组时,人们可以访问该组。
我见过的另一种情况是使用完整的 Windows 身份验证端到端。因此,用户自己被添加到具有所有权限集的组中,以便用户能够在应用程序参数之外进行更新和更改。这通常涉及确保人们使用适当的存储过程,这样他们就不会直接更新表。
第一种情况似乎相对容易维护,但如果应用程序中存在安全漏洞,那么整个数据库就会受到损害,这会引起人们的担忧。
第二种情况似乎更安全,但具有相反的担忧,即在数据库上的存储过程中必须有很多业务逻辑。这似乎限制了 Nhibernate 和 LINQ 等一些非常酷的技术的使用。然而,在当今人们可以以多种不同方式使用数据的时代,我们无法预见例如混搭等是最好的方法。