Amazon Relational Database Service
用户指南 (API 版本 2014-10-31)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

SQL Server Audit

在 Amazon RDS 中,您可以使用内置 SQL Server 审计机制来审计 Microsoft SQL Server 数据库。您可以按照为本地数据库服务器创建审计和审计规范的相同方式来创建它们。

RDS 使用您提供的 IAM 角色将完成的审计日志上传到 S3 存储桶。如果您启用保留,则 RDS 会在配置的时间段内将您的审计日志保留在您的数据库实例中。

有关更多信息,请参阅 Microsoft SQL Server 文档中的 SQL Server Audit(数据库引擎)

SQL Server Audit 支持

在 Amazon RDS 中,从 SQL Server 2012 开始,所有版本的 SQL Server 支持服务器级别审计,而企业版还支持数据库级别审计。从 SQL Server SQL Server 2016 (13.x) SP1 开始,所有版本均支持服务器和数据库级别审计。有关更多信息,请参阅 Microsoft SQL Server 文档中的 SQL Server Audit(数据库引擎)

RDS 支持为 SQL Server Audit 配置以下选项设置:

选项设置 有效值 描述
IAM_ROLE_ARN 采用以下格式的有效 Amazon 资源名称 (ARN):arn:aws:iam::account-id:role/role-name IAM 角色的 ARN,该角色对您想要用于存储审计日志的 S3 存储桶授予访问权。有关更多信息,请参阅 AWS Identity and Access Management (IAM)
S3_BUCKET_ARN 有效 ARN 为 arn:aws:s3:::bucket-namearn:aws:s3:::bucket-name/key-prefix 格式 您想要用于存储审计日志的 S3 存储桶的 ARN。
ENABLE_COMPRESSION true 或者 false 控制审计日志压缩。默认情况下,启用压缩(设置为 true)。
RETENTION_TIME 0840 SQL Server 审计记录在您的 RDS 实例上保留的时间(按小时计)。默认情况下,禁用保留。

将 SQL Server Audit 添加到数据库实例选项

启用 SQL Server Audit 需要两个步骤:在数据库实例上启用选项,然后在 SQL Server 内启用功能。将 SQL Server Audit 选项添加到数据库实例的流程如下:

  1. 创建新的选项组,或者复制或修改现有选项组。

  2. 添加和配置所有必需的选项。

  3. 将选项组与数据库实例相关联。

添加 SQL Server Audit 选项后,您无需重新启动数据库实例。只要选项组处于活动状态,您就可以创建审计并在 S3 存储桶中存储审计日志。

若要在数据库实例的选项组中添加和配置 SQL Server Audit

  1. 选择以下选项之一:

    • 使用现有选项组。

    • 创建自定义数据库选项组并使用该选项组。有关更多信息,请参阅 创建选项组

  2. SQLSERVER_AUDIT 选项添加到选项组,然后配置选项设置。有关添加选项的更多信息,请参阅 将选项添加到选项组

    • 对于 IAM role (IAM 角色),如果您已有一个具备必需策略的 IAM 角色,则您可以选择该角色。若要创建新的 IAM 角色,请选择 Create a New Role (创建新角色)。有关必需策略的信息,请参阅 手动为 SQL Server Audit 创建 IAM 角色

    • 对于 Select S3 destination (选择 S3 目标),如果您已有想要使用的 S3 存储桶,则请选择它。若要创建 S3 存储桶,请选择 Create a New S3 Bucket (创建新的 S3 存储桶)

    • 对于 Enable Compression (启用压缩),请选中此选项以压缩审计文件。默认情况下,压缩已启用。若要禁用压缩,请取消选中 Enable Compression (启用压缩)

    • 对于 Audit log retention (审计日志保留),如需在数据库实例上保留审计记录,请选择此选项。指定保留时间,按小时计。最长保留时间为 35 天。

  3. 将选项组应用到新的或现有的数据库实例。选择以下选项之一:

修改 SQL Server Audit 选项

启用 SQL Server Audit 选项后,您可以修改各项设置。有关如何修改选项设置的信息,请参阅 修改选项设置

从数据库实例选项中删除 SQL Server Audit

您可以通过禁用审计并删除选项来关闭 SQL Server Audit 功能。

若要删除审计

  1. 禁用 SQL Server 内的所有审计设置。若要了解审计在何处运行,请查询 SQL Server 安全性目录视图。有关更多信息,请参阅 Microsoft SQL Server 文档中的安全性目录视图

  2. 从数据库实例中删除 SQL Server Audit 选项。选择以下选项之一:

    • 从数据库实例使用的选项组中删除 SQL Server Audit 选项。此更改会影响使用相同选项组的所有数据库实例。有关更多信息,请参阅 从选项组中删除选项

    • 修改数据库实例,然后选择一个没有 SQL Server Audit 选项的选项组。此更改仅影响您修改的数据库实例。您可以指定默认(空)选项组,或指定其他自定义选项组。有关更多信息,请参阅 修改运行 Microsoft SQL Server 数据库引擎的数据库实例

  3. 从数据库实例中删除 SQL Server Audit 选项之后,不需要重新启动实例。从您的 S3 存储桶中删除不需要的审计文件。

使用 SQL Server Audit

您可以按照与控制本地数据库服务器相同的方式控制服务器审计、服务器审计规范和数据库审计规范。

创建审计

按照为本地数据库服务器创建服务器审计的相同方式来创建它们。有关如何创建服务器审计的信息,请参阅 Microsoft SQL Server 文档中的创建服务器审计

为避免错误,请遵循以下限制:

  • 不要超过每个实例支持的服务器审计最大数目:50。

  • 指示 SQL Server 将数据写入二进制文件。

  • 请勿在服务器审计名称中使用 RDS_ 作为前缀。

  • 对于 FILEPATH,请指定 D:\rdsdbdata\SQLAudit

  • 对于 MAXSIZE,请指定 2 MB 至 50 MB 之间的大小。

  • 请勿配置 MAX_ROLLOVER_FILESMAX_FILES

  • 请勿将 SQL Server 配置为在数据库实例未能写入审计记录时将其关闭。

创建审计规范

按照为本地数据库服务器创建服务器审计规范和数据库审计规范相同的方式来创建它们。有关创建审计规范的信息,请参阅 Microsoft SQL Server 文档中的创建服务器审计规范创建数据库审计规范

为避免错误,请勿在数据库审计规范或服务器审计规范的名称中使用 RDS_ 作为前缀。

查看审计日志

审计日志存储在 D:\rdsdbdata\SQLAudit 中。

SQL Server 完成写入到审计日志文件之后(当文件达到其大小限制时),Amazon RDS 会将文件上传到您的 S3 存储桶。如果启用了保留,Amazon RDS 会将文件移入到保留文件夹:D:\rdsdbdata\SQLAudit\transmitted

有关配置保留的信息,请参阅将 SQL Server Audit 添加到数据库实例选项

在上传审计日志文件之前,审计记录会一直保留在数据库实例上。您可以通过运行以下命令来查看审计记录。

SELECT * FROM msdb.dbo.rds_fn_get_audit_file ('D:\rdsdbdata\SQLAudit\*.sqlaudit' , default , default )

您可以使用相同的命令来查看保留文件夹中的审计记录,只需将筛选条件更改为 D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit

SELECT * FROM msdb.dbo.rds_fn_get_audit_file ('D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit' , default , default )

使用 SQL Server Audit 和多可用区实例

对于多可用区实例,将审计日志文件发送至 Amazon S3 的过程与单可用区实例的过程类似。但是,二者之间存在一些重要区别:

  • 数据库审计规范对象复制到所有节点。

  • 服务器审计和服务审计规范不会复制到辅助节点。相反,您必须手动创建或修改它们。

若要从两个节点捕获服务器审计或服务器审计规范:

  1. 在主节点上创建服务器审计或服务器审计规范。

  2. 故障转移到辅助节点,并在辅助节点上使用相同名称和 GUID 创建服务器审计或服务器审计规范。使用 AUDIT_GUID 参数指定 GUID。

配置 S3 存储桶

审计日志文件会自动从数据库实例上传到您的 S3 存储桶。以下限制适用于您用作审计文件目标的 S3 存储桶。

  • 它必须与数据库实例位于同一 AWS 区域。

  • 它不得对公众开放。

  • 存储桶拥有者也必须是 IAM 角色拥有者。

用于存储数据的目标键遵循以下命名模式:bucket-name/key-prefix/instance-name/audit-name/node_file-name.ext

注意

您使用 S3_BUCKET_ARN 选项设置来设定存储桶名称和键前缀值。

模式由以下元素组成:

  • bucket-name – S3 存储桶的名称。

  • key-prefix – 您想要为审计日志使用的自定义键前缀。

  • instance-name – 您的 Amazon RDS 实例的名称。

  • audit-name – 审计的名称。

  • node – 审计日志来源节点(node1node2)的标识符。单可用区实例有一个节点,多可用区实例有两个复制节点。这些不是主要和辅助节点,因为主要和辅助节点的角色会随时间而变化。相反,节点标识符是一个简单的标签。

    • node1 – 第一个复制节点(单可用区只有一个节点)。

    • node2 – 第二个复制节点(多可用区有两个节点)。

  • file-name – 目标文件名称。文件名按原样从 SQL Server 获取。

  • ext – 文件的扩展名(zipsqlaudit):

    • zip – 是否已启用压缩(默认)。

    • sqlaudit – 是否已禁用压缩。

手动为 SQL Server Audit 创建 IAM 角色

通常,当您创建新选项时,AWS 管理控制台 会为您创建 IAM 角色和 IAM 信任策略。但是,您可以手动创建与 SQL Server Audit 一起使用的新 IAM 角色,以便您可以根据自己的任何附加需求对其进行定制。为此,创建一个 IAM 角色并委托权限,以便 Amazon RDS 服务可使用您的 Amazon S3 存储桶。创建这个 IAM 角色时,附加信任和权限策略。信任策略允许 Amazon RDS 担任此角色。权限策略定义此角色可以执行的操作。有关更多信息,请参阅 AWS Identity and Access Management 用户指南中的创建角色以向 AWS 服务委托权限

您可以使用本节中的示例来创建所需的信任和权限策略。

以下示例显示了 SQL Server Audit 的信任策略。该策略使用服务委托人 rds.amazonaws.com 以允许 RDS 写入到 S3 存储桶。服务委托人是一个标识符,用于向服务授予权限。任何时候您通过这种方式允许访问 rds.amazonaws.com,即表示您允许 RDS 代表您执行操作。有关服务委托人的更多信息,请参阅 AWS JSON 策略元素:Principal

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

在下面的 SQL Server Audit 权限策略示例中,我们为 Amazon S3 存储桶指定了 Amazon 资源名称 (ARN)。您可以使用 ARN 来识别您想要为其授予访问权的特定账户、用户或角色。有关使用 ARN 的更多信息,请参阅 Amazon 资源名称 (ARN)

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucket_name" }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::bucket_name/key_prefix/*" } ] }