Db2 审核日志记录
借助 Db2 审核日志记录,Amazon RDS 会记录数据库活动,包括登录到数据库的用户和对数据库运行的查询。RDS 使用您提供的 AWS 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 数据库实例位于相同的 AWS 区域。
-
它不得对公众开放。
-
它不能使用 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。
-
您的 AWS Key Management Service(AWS KMS)密钥的 ARN,如果您的存储桶使用 SSE-KMS 加密。
创建包含以下权限的 IAM 策略:
"s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload", "s3:ListAllMyBuckets"
注意
Amazon RDS 需要在内部执行 s3:ListAllMyBuckets
操作,以确认同一 AWS 账户是否拥有 S3 存储桶和 RDS for Db2 数据库实例。
如果您的存储桶使用 SSE-KMS 加密,则还应包括以下权限:
"kms:GenerateDataKey", "kms:Decrypt"
您可以使用 AWS Management Console或 AWS Command Line Interface(AWS CLI)创建 IAM 策略。
创建 IAM 策略以允许 Amazon RDS 访问 Amazon S3 存储桶
登录到 AWS 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 策略附加到该角色。
您可以使用控制台或 AWS CLI 为数据库实例创建 IAM 角色。
创建 IAM 角色并向其附加 IAM policy
登录 AWS Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择角色。
-
选择 Create role(创建角色)。
-
对于可信实体类型,请选择 AWS 服务。
-
对于服务或使用案例,请选择 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 控制台中查看日志、事件和流。