![Active Directory、Web Apps 和 MS-SQL 是否都应该具有相同的用户?](https://linux22.com/image/805406/Active%20Directory%E3%80%81Web%20Apps%20%E5%92%8C%20MS-SQL%20%E6%98%AF%E5%90%A6%E9%83%BD%E5%BA%94%E8%AF%A5%E5%85%B7%E6%9C%89%E7%9B%B8%E5%90%8C%E7%9A%84%E7%94%A8%E6%88%B7%EF%BC%9F.png)
出于合规性原因,我正在寻找一种干净的方法在 MS SQL Server 中进行审计跟踪,最好完全在数据库端进行,而不涉及 Web 应用程序。
当谈到审计线索时,我指的是数据层面上对数据库更改的完整记录。那么,谁在何时更改了什么?
我有一个以活动目录作为身份验证后端的设置,并且我需要开发一个基于 Java 的 Web 应用程序。
因此,为了获得有效的审计线索,我需要了解谁在何时更改了什么。据我所知,有一项名为 SQL Server Audit 的功能可以提供这些信息。
我的问题是关于 MS SQL 方面的用户管理和身份验证。Web 应用程序应使用 AD 用户,然后访问数据库。因此,我同意 AD 用户需要由 Web 应用程序转发到 MS SQL DB,才能显示在审计跟踪中。
这表明,在典型情况下,人们会尝试通过 AD 管理用户和组,并让 MS SQL 将这些组映射到数据库上的角色。这些角色又将被授予权限。
另一方面,我的一些同事说我们应该使用一个共享应用程序帐户来访问数据库,并在应用程序中自行构建审计跟踪。他们引用了模糊的安全原因。
什么是正确的做法?
答案1
所以你打算让一大堆用户访问你的数据库,却不提供审计线索?这不是你的同事有的“模糊的安全担忧”,而是简单的常识。数据库审计线索显示“此用户更新/插入/删除了该记录”。它没有说到底发生了什么,例如“此人于 20 日请假一天”(以休假管理系统为例)。数据库审计应该存在,以查看谁手动更改了数据。Web 应用程序应该有自己的审计线索(可以将其存储在数据库中)来记录其中发生的事件(Web 应用程序)。