用于DML和DDL操作的Azure SQL数据库审核

时间:2018-10-26 10:19:04

标签: azure-sql-database

我们为安全起见已启用审核的Azure SQL数据库。客户安全团队已要求我们提供来自Azure数据库的信息列表。

1。查看或创建所有新创建/修改/删除的记录的报告 2.查看或创建包含所有已删除记录内容的报告 3.查看或创建给定记录的所有更改的报告 4.查看或创建所有用户访问配置文件的报告 5,查看或创建特定时段内所有用户ID登录和注销时间的报告 6,按特定时间段内系统活动的用户ID查看或创建功能使用情况报告,例如列出用户在某天访问每种类型的系统活动(报告,查询,访问等)的次数 7,按系统活动查看或创建特定时期内用户访问的报告,例如针对每个系统活动(报告,查询,登录等),列出在特定日期访问的每个用户 8.查看或创建用户执行的查询的报告”

当然,我们从审核日志中获得对数据库进行了哪些操作以及进行了哪种操作的信息。但是我们不会得到确切的数据更改,例如插入了哪些行/更新了哪些数据以及更新之前和之后/用户删除了什么数据。

已尝试的解决方案:我们尝试使用时空传说进行Azure sql db更改跟踪。它为我们提供了DML操作的已更改数据,但没有提供DDL操作是否已完成,例如更改列名称/ drop列/ add列等。

SQL专家可以帮助您。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

DDL Triggers确实可以帮助您跟踪Azure SQL数据库上的架构更改。下面是一个示例:

CREATE TRIGGER safety   
ON DATABASE   
FOR DROP_TABLE, ALTER_TABLE   
AS   
   PRINT 'Save change on a log'   
   SELECT EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','nvarchar(max)');

数据库审核可以帮助更改架构和删除对象。下面是一个示例:

Set-AzureRmSqlDatabaseAuditing `
 -State Enabled `
 -ResourceGroupName "resourcegroupname" `
 -ServerName "ssqlinstancename" `  #ssqlinstancename.database.windows.net
 -StorageAccountName "strageaccountname" `
 -DatabaseName "dbname" `
 -AuditActionGroup 'SCHEMA_OBJECT_CHANGE_GROUP' `
 -RetentionInDays 8 `
 -AuditAction "DELETE ON schema::dbo BY [public]" 

对于DML操作,您提到找到了带有临时表的解决方案,但是数据库审核也可以提供帮助:

Set-AzureRmSqlDatabaseAuditing -ResourceGroupName "resourceGroup"
 -ServerName "SQL Server Name" -DatabaseName "AdventureWorksLT"  
 -StorageAccountName "storageAccount" 
-AuditActionGroup "SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP", "FAILED_DATABASE_AUTHENTICATION_GROUP", "BATCH_COMPLETED_GROUP" 
 -AuditAction "UPDATE ON database::[AdventureWorksLT] BY [public]"  
 -RetentionInDays 60

有关审核数据库登录名和数据库连接的信息,请阅读this文章。