审计 Amazon RDS for SQL Server 数据库实例 - AWS Prescriptive Guidance

审计 Amazon RDS for SQL Server 数据库实例

本节提供有关 Amazon RDS 上 SQL Server 审计选项的信息,包括创建审计、查看审计日志以及监控结果。

先决条件

  • 存储审计文件的 Amazon Simple Storage Service(Amazon S3)存储桶

  • 访问 S3 存储桶的 AWS Identity and Access Management(IAM)角色

  • 具有 ALTER ANY SERVER AUDITCONTROL SERVER 权限的数据库登录

支持的版本

  • 对于 Amazon RDS for SQL Server 2014,所有版本均支持服务器级审计。企业版还支持数据库级审计。

  • 从 SQL Server 2016 (13.x) SP1 开始,所有版本支持服务器级别和数据库级别审核。

  • Amazon RDS 目前支持除中东(巴林)外的所有 AWS 区域中的 SQL Server 审计。有关最新信息,请参阅 Amazon RDS 文档中的 SQL Server Audit 支持

使用 C2 审计模式

C2 审计模式是 Amazon RDS for SQL Server 数据库参数组中的一个参数。默认情况下它是禁用的。您可以通过将参数值更新为 1 来启用它。启用 C2 审计模式后,它会审计用户登录、存储过程调用以及创建和删除对象等事件。此模式可以生成大量数据,因为其可以审计所有内容或不审计任何内容。

重要

Microsoft 计划在 SQL Server 的未来版本中删除 C2 审计模式。我们建议您避免使用此功能。

创建和查看审计

您可以使用内置 SQL Server 审计机制(包括创建审计和审计规范)来审计 Amazon RDS for SQL Server 数据库。 

  • 使用具有访问存储桶必要权限的 IAM 角色,将审计日志上传到 S3 存储桶。 

  • 在创建选项组时,您可以选择 IAM 角色、S3 存储桶、压缩和保留期。最长保留期时间为 35 天。

  • 您可以创建选项组并将其附加到新的或现有的 Amazon RDS for SQL Server 数据库实例。  审计日志存储在 D:\rdsdbdata\SQLAudit 中。 

  • SQL Server 完成写入到审计日志文件之后或该文件达到其大小限制时,Amazon RDS 会将文件上传到您的 S3 存储桶。

  • 如果您启用保留,Amazon RDS 会将文件移入位于 D:\rdsdbdata\SQLAudit\transmitted 的保留文件夹。在上传审核日志文件之前,审核记录会一直保留在数据库实例上。 

  • 您也可以通过查询 dbo.rds_fn_get_audit_file 来查找审计记录。 

对于多可用区实例,数据库审计规范对象将复制到所有节点。  服务器审计和服务器审计规范不会复制到所有节点,因此应手动创建这些对象。

配置选项组

按照以下步骤配置选项组,以对您的 Amazon RDS for SQL Server 数据库实例执行 SQL Server 审计。有关详细说明,请参阅 Amazon RDS 文档中的 SQL Server Audit

  • 创建选项组。

  • SQLSERVER_AUDIT 选项添加到该选项组。

  • 对于 S3 目标,创建新存储桶或为审计日志选择现有的存储桶。

  • 对于 IAM 角色,创建新角色或选择具有所需策略的现有角色。有关更多信息,请参阅 IAM 文档中的手动为 SQL Server Audit 创建 IAM 角色

  • 展开其他信息,然后选择启用压缩以压缩审计日志(推荐)。

  • 要保留数据库实例的审计日志,请选择启用保留并指定保留期(最长 35 天)。

  • 将选项组应用到新的或现有的 Amazon RDS for SQL Server 数据库实例。

    • 对于新数据库实例,请在启动实例时应用选项组。

    • 对于现有数据库实例,请修改实例并附加选项组。

创建审核

要创建服务器审计,请使用以下脚本。此脚本在您指定的文件路径中创建审计文件。有关语法、参数和示例,请参阅 Microsoft SQL Server 文档。为避免错误,请查看 Amazon RDS 文档中列出的限制列表。

--Creating the server audit use master GO CREATE SERVER AUDIT [Audit-<<servername>>] TO FILE ( FILEPATH = N'D:\rdsdbdata\SQLAudit', MAXSIZE = 2 MB, RESERVE_DISK_SPACE = OFF) WITH ( QUEUE_DELAY = 1000, ON_FAILURE = CONTINUE) GO -- Enabling the server audit ALTER SERVER AUDIT [Audit-<<servername>>] WITH (STATE = ON) ; GO

创建审核规范

创建服务器审计后,您可以使用以下代码创建服务器审计规范,以记录服务器级事件。此规范决定在服务器审计期间要检查的内容。有关语法、参数和示例,请参阅 Microsoft SQL Server 文档。以下规范会审计失败的登录操作,并跟踪服务器对象的创建、更改和删除。有关操作列表,请参阅 Microsoft SQL Server 文档

--Creating server audit specification USE [master] GO CREATE SERVER AUDIT SPECIFICATION [Audit-Spec-<<servername>>] FOR SERVER AUDIT [Audit-<<servername>>] ADD (FAILED_LOGIN_GROUP), ADD (SERVER_OBJECT_CHANGE_GROUP) GO --Enables the audit ALTER SERVER AUDIT [Audit-<<servername>>] WITH (STATE = ON); GO

您可以使用以下代码创建记录数据库级事件的数据库审计规范。此示例审计 INSERT 操作。有关语法、参数和更多示例,请参阅 Microsoft SQL Server 文档

--Creating database audit specification USE [<<DBName>>] GO CREATE DATABASE AUDIT SPECIFICATION [DatabaseAuditSpecification-<<DBName>>] FOR SERVER AUDIT [Audit-<<ServerName>>] ADD (INSERT ON DATABASE::[<<DBName>>] BY [dbo]) WITH (STATE = ON) GO

查看审核日志

使用以下查询查看审计日志。审计日志会保留在数据库实例中,直至将其上传到 Amazon S3。如果您为 SQLSERVER_AUDIT 选项启用保留,Amazon RDS 会将文件移入保留文件夹 D:\rdsdbdata\SQLAudit\transmitted

您还可以通过将筛选条件更改为 D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit 来查看保留文件夹中的审计记录。

--Viewing audit logs SELECT * FROM msdb.dbo.rds_fn_get_audit_file ('D:\rdsdbdata\SQLAudit\*.sqlaudit' , default , default ) --Viewing audit logs in retention folder SELECT * FROM msdb.dbo.rds_fn_get_audit_file ('D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit' , default , default )

有关审计 SQL Server 数据库的其他选项,请参阅以下 AWS 和 Microsoft 文档:

监控

您可以使用 Amazon RDS 中的数据库活动流,将 SQL Server 审计事件与 Imperva、McAfee 和 IBM 的数据库活动监控工具集成。有关更多信息,请参阅 Amazon RDS 文档中的 Microsoft SQL Server 中的审计