Db2 审核日志记录
借助 Db2 审核日志记录,Amazon RDS 会记录数据库活动,包括登录到数据库的用户和对数据库运行的查询。RDS 使用您提供的 Amazon Identity and Access Management(IAM)角色将完成的审核日志上传到 Amazon S3 存储桶。
设置 Db2 审核日志记录
要为 Amazon RDS for Db2 数据库启用审核日志记录,您需要在 RDS for Db2 数据库实例上启用 DB2_AUDIT
选项。然后,配置审核策略以为特定数据库启用该功能。要在 RDS for Db2 数据库实例上启用该选项,您需要为 DB2_AUDIT
选项配置选项设置。为此,您可以为 Amazon S3 存储桶提供 Amazon 资源名称(ARN),并向 IAM 角色提供访问存储桶的权限。
要为 RDS for Db2 数据库设置 Db2 审核日志记录,请完成以下步骤。
主题
步骤 1:创建 Amazon S3 存储桶
如果您尚未完成此操作,请创建一个 Amazon S3 存储桶,以便 Amazon RDS 可以在其中上传您的 RDS for Db2 数据库的审核日志文件。以下限制适用于您用作审核文件目标的 S3 存储桶。
-
它必须与您的 RDS for Db2 数据库实例位于相同的 Amazon Web Services 区域。
-
它不得对公众开放。
-
它不能使用 S3 对象锁定。
-
存储桶拥有者也必须是 IAM 角色拥有者。
要了解如何创建 Amazon S3 存储桶,请参阅《Amazon S3 用户指南》中的创建存储桶。
启用审核日志记录后,Amazon RDS 会自动将日志从您的数据库实例发送到以下位置:
数据库实例级别日志 –
bucket_name
/db2-audit-logs/dbi_resource_id
/date_time_utc
/数据库级别日志 -
bucket_name
/db2-audit-logs/dbi_resource_id
/date_time_utc
/db_name
/
请记下存储桶的 Amazon 资源名称(ARN)。这些信息是完成后续步骤所必需的。
步骤 2:创建 IAM 策略
创建一个 IAM 策略,该策略具有将审核日志文件从数据库实例传输到 Amazon S3 存储桶所需的权限。此步骤假定您已创建了 S3 存储桶。
创建策略前,请收集以下信息:
-
存储桶的 ARN。
-
您的 Amazon Key Management Service(Amazon KMS)密钥的 ARN,如果您的存储桶使用 SSE-KMS 加密。
创建包含以下权限的 IAM 策略:
"s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload", "s3:ListAllMyBuckets"
注意
Amazon RDS 需要在内部执行 s3:ListAllMyBuckets
操作,以确认同一 Amazon Web Services 账户是否拥有 S3 存储桶和 RDS for Db2 数据库实例。
如果您的存储桶使用 SSE-KMS 加密,则还应包括以下权限:
"kms:GenerateDataKey", "kms:Decrypt"
您可以使用 Amazon Web Services Management Console或 Amazon Command Line Interface(Amazon CLI)创建 IAM 策略。
创建 IAM 策略以允许 Amazon RDS 访问 Amazon S3 存储桶
登录到 Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择策略。
-
选择创建策略,然后选择 JSON。
-
在添加操作中,按 S3 进行筛选。添加 ListBucket、GetBucketAcl 和 GetBucketLocation 访问权限。
-
在添加资源中,选择添加。在资源类型中,选择存储桶,然后输入存储桶的名称。选择添加资源。
-
选择添加新语句。
-
在添加操作中,按 S3 进行筛选。添加 PutObject、ListMultipartUploadParts 和 AbortMultipartUpload 访问权限。
-
在添加资源中,选择添加。在资源类型中,选择对象,然后输入
您的存储桶名称/*
。选择添加资源。 -
选择添加新语句。
-
在添加操作中,按 S3 进行筛选。添加 ListAllMyBuckets 访问权限。
-
在添加资源中,选择添加。在资源类型中,选择所有资源。选择添加资源。
-
如果您使用自己的 KMS 密钥来加密数据:
选择添加新语句。
在添加操作中,按 KMS 进行筛选。添加 GenerateDataKey 和 Decrypt 访问权限。
在添加资源中,选择添加。在资源类型中,选择所有资源。选择添加资源。
-
选择下一步。
-
对于策略名称,输入此策略的名称。
-
(可选)对于描述,输入此策略的描述。
-
选择创建策略。
创建 IAM 策略以允许 Amazon RDS 访问 Amazon S3 存储桶
-
运行 create-policy 命令。在以下示例中,将
iam_policy_name
和amzn-s3-demo-bucket
替换为 IAM 策略的名称以及目标 Amazon S3 存储桶的名称。对于 Linux、macOS 或 Unix:
aws iam create-policy \ --policy-name
iam_policy_name
\ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
" ] }, { "Sid": "Statement2", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
/*" ] }, { "Sid": "Statement3", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets" ], "Resource": [ "*" ] }, { "Sid": "Statement4", "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": [ "*" ] } ] }'对于 Windows:
aws iam create-policy ^ --policy-name
iam_policy_name
^ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
" ] }, { "Sid": "Statement2", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
/*" ] }, { "Sid": "Statement3", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets" ], "Resource": [ "*" ] }, { "Sid": "Statement4", "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": [ "*" ] } ] }' -
创建策略后,请记下策略的 ARN。您需要步骤 3:创建 IAM 角色并附加您的 IAM 策略的 ARN。
有关创建 IAM policy 的更多信息,请参阅《IAM 用户指南》中的创建 IAM policy。
步骤 3:创建 IAM 角色并附加您的 IAM 策略
此步骤假定您已在步骤 2:创建 IAM 策略中创建了 IAM 策略。在此步骤中,您将为 RDS for Db2 数据库实例创建一个 IAM 角色,然后将 IAM 策略附加到该角色。
您可以使用控制台或 Amazon CLI 为数据库实例创建 IAM 角色。
创建 IAM 角色并向其附加 IAM policy
登录 Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择角色。
-
选择 Create role(创建角色)。
-
对于可信实体类型,请选择 Amazon Web Services 服务。
-
对于服务或使用案例,请选择 RDS,然后选择 RDS – 向数据库添加角色。
-
选择下一步。
-
对于权限策略,搜索并选择您创建的 IAM policy 的名称。
-
选择下一步。
-
对于 Role name(角色名称),输入一个角色名称。
-
(可选)在描述中,输入新角色的描述。
-
选择 Create role(创建角色)。
创建 IAM 角色并向其附加 IAM policy
-
运行 create-role 命令。在以下示例中,将
iam_role_name
替换为您的 IAM 角色的名称。对于 Linux、macOS 或 Unix:
aws iam create-role \ --role-name
iam_role_name
\ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'对于 Windows:
aws iam create-role ^ --role-name
iam_role_name
^ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }' -
创建角色之后,记下该角色的 ARN。在下一步骤步骤 4:为 Db2 审核日志记录配置选项组中,您需要用到此 ARN。
-
运行 attach-role-policy 命令。在以下示例中,将
iam_policy_arn
替换为您在步骤 2:创建 IAM 策略中创建的 IAM policy。将iam_role_name
替换为刚创建的 IAM 角色的名称。对于 Linux、macOS 或 Unix:
aws iam attach-role-policy \ --policy-arn
iam_policy_arn
\ --role-nameiam_role_name
对于 Windows:
aws iam attach-role-policy ^ --policy-arn
iam_policy_arn
^ --role-nameiam_role_name
有关更多信息,请参阅《IAM 用户指南》中的创建向 IAM 用户委派权限的角色。
步骤 4:为 Db2 审核日志记录配置选项组
将 Db2 审核日志记录选项添加到 RDS for Db2 数据库实例的过程如下:
-
创建新的选项组,或者复制或修改现有选项组。
-
添加和配置所有必需的选项。
-
将选项组与数据库实例相关联。
在添加 Db2 审核日志记录选项后,您无需重新启动数据库实例。只要选项组处于活动状态,您就可以创建审核并在 S3 存储桶中存储审核日志。
在数据库实例的选项组中添加和配置 Db2 审核日志记录
-
选择以下选项之一:
-
使用现有选项组。
-
创建自定义数据库选项组并使用该选项组。有关更多信息,请参阅 创建选项组。
-
-
将 DB2_AUDIT 选项添加到选项组,然后配置选项设置。有关添加选项的更多信息,请参阅 将选项添加到选项组。
-
在 IAM_ROLE_ARN 中,输入您在步骤 3:创建 IAM 角色并附加您的 IAM 策略中创建的 IAM 角色的 ARN。
-
在 S3_BUCKET_ARN 中,输入要用于 Db2 审核日志的 S3 存储桶的 ARN。存储桶必须与您的 RDS for Db2 数据库实例位于同一区域。与您输入的 IAM 角色关联的策略必须允许对该资源执行所需的操作。
-
-
将选项组应用到新的或现有的数据库实例。选择以下选项之一:
-
如果您正在创建新的数据库实例,请在启动实例时应用选项组。
-
在现有数据库实例上,请通过修改实例并附加新的选项组来应用选项组。有关更多信息,请参阅 修改 Amazon RDS 数据库实例。
-
步骤 5:配置审核策略
要为 RDS for Db2 数据库配置审核策略,请使用 RDS for Db2 数据库实例的主用户名和主密码连接到 rdsadmin
数据库。然后,使用数据库的数据库名称和适用的参数值调用 rdsadmin.configure_db_audit
存储过程。
以下示例连接到数据库并为类别为 AUDIT、CHECKING、OBJMAINT、SECMAINT、SYSADMIN 和 VALIDATE 的 testdb
配置审核策略。状态值 BOTH
记录成功和失败,ERROR TYPE
默认情况下为 NORMAL
。有关如何使用该存储过程的更多信息,请参阅rdsadmin.configure_db_audit。
db2 "connect to rdsadmin user
master_user
usingmaster_password
" db2 "call rdsadmin.configure_db_audit('testdb
', 'ALL', 'BOTH', ?)"
步骤 6:检查审核配置
要确保您的审核策略设置正确,请检查审核配置的状态。
要检查配置,请使用 RDS for Db2 数据库实例的主用户名和主密码连接到 rdsadmin
数据库。然后,使用数据库的数据库名称运行以下 SQL 语句。在以下示例中,数据库名称为 testdb
。
db2 "select task_id, task_type, database_name, lifecycle, varchar(bson_to_json(task_input_params), 500) as task_params, cast(task_output as varchar(500)) as task_output from table(rdsadmin.get_task_status(null,'
testdb
','CONFIGURE_DB_AUDIT'))" Sample Output TASK_ID TASK_TYPE DATABASE_NAME LIFECYCLE -------------------- -------------------- --------------- ------------- 2 CONFIGURE_DB_AUDIT DB2DB SUCCESS ... continued ... TASK_PARAMS -------------------------------------------------------- { "AUDIT_CATEGORY" : "ALL", "CATEGORY_SETTING" : "BOTH" } ... continued ... TASK_OUTPUT --------------------------------------------------- 2023-12-22T20:27:03.029Z Task execution has started. 2023-12-22T20:27:04.285Z Task execution has completed successfully.
管理 Db2 审核日志
设置 Db2 审核日志记录后,您可以修改特定数据库的审核策略,或者禁用数据库级别或整个数据库实例的审核日志记录。您也可以更改将日志文件上传到其中的 Amazon S3 存储桶。
修改 Db2 审核策略
要修改特定 RDS for Db2 数据库的审核策略,请运行 rdsadmin.configure_db_audit
存储过程。使用此存储过程,您可以更改审核策略的类别、类别设置和错误类型配置。有关更多信息,请参阅 rdsadmin.configure_db_audit。
修改日志文件的位置
要更改将您的日志文件上传到其中的 Amazon S3 存储桶,请执行以下操作之一:
修改附加到 RDS for Db2 数据库实例的当前选项组 – 更新
DB2_AUDIT
选项的S3_BUCKET_ARN
设置以指向新存储桶。此外,请务必更新附加到附加选项组中的IAM_ROLE_ARN
设置指定的 IAM 角色的 IAM 策略。此 IAM 策略必须为新存储桶提供所需的访问权限。有关 IAM 策略中所需权限的信息,请参阅创建 IAM 策略。将 RDS for Db2 数据库实例附加到其他选项组 - 修改数据库实例以更改附加到该实例的选项组。确保为新选项组配置了正确的
S3_BUCKET_ARN
和IAM_ROLE_ARN
设置。有关如何为DB2_AUDIT
选项配置这些设置的信息,请参阅配置选项组。
修改选项组后,请确保立即应用更改。有关更多信息,请参阅 修改 Amazon RDS 数据库实例。
禁用 Db2 审核日志
要禁用 Db2 审核日志记录,请执行以下操作之一:
禁用 RDS for Db2 数据库实例的审核日志记录 - 修改您的数据库实例并从中删除带有
DB2_AUDIT
选项的选项组。有关更多信息,请参阅 修改 Amazon RDS 数据库实例。禁用特定数据库的审核日志记录 - 使用数据库的数据库名称调用
rdsadmin.disable_db_audit
,停止审核日志记录并删除审核策略。有关更多信息,请参阅 rdsadmin.disable_db_audit。db2 "call rdsadmin.disable_db_audit( '
db_name
')"
查看审核日志
启用 Db2 审核日志记录后,请至少等待一小时,然后再查看 Amazon S3 存储桶中的审核数据。Amazon RDS 会自动将日志从您的 RDS for Db2 数据库实例发送到以下位置:
-
数据库实例级别日志 –
bucket_name
/db2-audit-logs/dbi_resource_id
/date_time_utc
/ -
数据库级别日志 -
bucket_name
/db2-audit-logs/dbi_resource_id
/date_time_utc
/db_name
/
以下 Amazon S3 控制台屏幕截图示例显示了 RDS for Db2 数据库实例级别日志文件的文件夹列表。
以下 Amazon S3 控制台屏幕截图示例显示了 RDS for Db2 数据库实例的数据库级别日志文件。
排查 Db2 审核日志记录问题
可使用以下信息排查 Db2 审核日志记录的常见问题。
无法配置审核策略
如果调用存储过程 rdsadmin.configure_db_audit
返回错误,则可能是包含 DB2_AUDIT
选项的选项组未与 RDS for Db2 数据库实例关联。修改数据库实例以添加该选项组,然后尝试再次调用存储过程。有关更多信息,请参阅 修改 Amazon RDS 数据库实例。
Amazon S3 存储桶中没有数据
如果 Amazon S3 存储桶中缺少日志记录数据,请检查以下内容:
您可以通过连接到数据库并运行 SQL 语句来检查审核日志记录配置的任务状态。有关更多信息,请参阅 检查审核配置。
您还可以查看事件,详细了解日志可能丢失的原因。有关如何查看事件的信息,请参阅在 Amazon RDS 控制台中查看日志、事件和流。