我们公司已通过 ISO27001 认证。因此,我们需要记录数据库事件。我们采用增量方法,首先在一张表上记录事件。
此特定表包含登录用户的 ID。
我们想创建日志
- 对此表的手动数据更改(影响更改的 SQL Server 用户的名称,以及他/她所做的事情)
- 更改此表上数据的存储过程。(登录用户的 id,影响更改的 SQL Server 用户的名称,以及 SQL Server 存储过程的语句,包括参数)
- 架构更改事件(影响更改的 SQL Server 用户的名称,以及他/她所做的事情)
我们不需要记录查看数据的事件。
使用 Azure SQL 时最好的方法是什么?
以下线程讨论了在数据库中构建额外表和使用触发器记录事件的各种方法。 https://stackoverflow.com/questions/38437/how-to-track-data-changes-in-a-database-table
但是,我希望利用 Azure SQL 中可用的数据库审核,部分原因是上述方法很容易减慢我们的数据库速度。
我已经使用门户设置了一个数据库审计——它每天生成大约 1.5GB 的审计数据,这对我的目的来说是不必要的。
有没有办法将 Azure 数据库审核限制为仅与一个表相关?
是的,您可以将 Azure SQL 数据库的审核配置为过滤到单个对象,但您需要使用 Azure PowerShell 模块。你不能通过门户来做到这一点。
下面的示例假设您已经通过门户启用了数据库级别的审核。此脚本将审核操作组更改为“DATABASE_OBJECT_CHANGE_GROUP”,然后添加几个审核操作。审计操作是您将为要审计的表指定 DML 操作的地方。您必须分别指定每个存储过程。它只是一个逗号分隔的列表。
https://learn.microsoft.com/en-us/powershell/module/az.sql/set-azsqldatabaseaudit?view=azps-7.3.0
https://learn.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions?view=sql-server-ver15#database-level-审计行动