将事件发送到 CloudWatch Logs
在配置您的跟踪以将事件发送到 CloudWatch Logs 时,CloudTrail 只发送符合您跟踪记录设置的事件。例如,如果您将跟踪配置为仅记录数据事件,则您的跟踪仅将数据事件发送到您的 CloudWatch Logs 日志组。CloudTrail 支持将数据、Insights 和管理事件发送到 CloudWatch Logs。有关更多信息,请参阅 使用 CloudTrail 日志文件。
注意
只有管理账户才能使用控制台为组织跟踪配置 CloudWatch Logs 日志组。委托管理员可以使用 Amazon CLI 或 CloudTrail CreateTrail
或者 UpdateTrail
API 操作配置 CloudWatch Logs 日志组。
将事件发送到 CloudWatch Logs 日志组:
-
请确保您有足够的权限来创建或指定 IAM 角色。有关更多信息,请参阅 授予在 CloudTrail 控制台上查看和配置 Amazon CloudWatch Logs 信息的权限。
-
如果您使用 Amazon CLI 来配置 CloudWatch Logs 日志组,请确保您有足够的权限在指定的日志组中创建 CloudWatch Logs 日志流并将 CloudTrail 事件传输到该日志流。有关更多信息,请参阅 创建策略文档。
-
创建新的跟踪或指定现有的跟踪。有关更多信息,请参阅 使用控制台创建和更新跟踪。
-
创建一个日志组或指定一个现有日志组。
-
指定 IAM 角色。如果您要修改用于组织跟踪的现有 IAM 角色,则必须手动更新策略,以允许组织跟踪的日志记录。有关更多信息,请参阅此策略示例和为组织创建跟踪。
-
附加一个角色策略或者使用默认角色策略。
目录
通过控制台配置 CloudWatch Logs 监控
您可以使用 Amazon Web Services Management Console 配置跟踪以将事件发送到 CloudWatch Logs 进行监控。
创建一个日志组或指定一个现有日志组
CloudTrail 使用 CloudWatch Logs 日志组作为日志事件的传输终端节点。可创建一个日志组或者指定一个现有日志组。
为现有跟踪创建或指定日志组
-
确保您以具有足够权限的管理用户或角色登录以配置 CloudWatch Logs 集成。有关更多信息,请参阅 授予在 CloudTrail 控制台上查看和配置 Amazon CloudWatch Logs 信息的权限。
注意
只有管理账户才能使用控制台为组织跟踪配置 CloudWatch Logs 日志组。委托管理员可以使用 Amazon CLI 或 CloudTrail
CreateTrail
或者UpdateTrail
API 操作配置 CloudWatch Logs 日志组。 访问 https://console.aws.amazon.com/cloudtrail/
,打开 CloudTrail 控制台。 -
选择跟踪名称。如果您选择一个应用于所有区域的跟踪,则您将重定向到创建此跟踪的区域。可以在跟踪所在的区域创建一个日志组或者选择一个现有日志组。
注意
应用于所有区域的跟踪会将所有区域中的日志文件发送到您指定的 CloudWatch Logs 日志组。
-
在 CloudWatch Logs 中,选择Edit(编辑)。
-
在 CloudWatch Logs 下选择启用。
-
在日志组名称下,选择新建创建新的日志组,或选择现有使用现有的日志组。如果选择 New(新建),CloudTrail 会为您指定新日志组的名称,您也可以键入名称。有关命名的更多信息,请参阅 CloudTrail 的 CloudWatch 日志组和日志流命名。
-
如果选择 Existing(现有),则从下拉列表中选择一个日志组。
-
在角色名称下,选择新建创建新的 IAM 角色,以获得将日志发送到 CloudWatch Logs 的权限。选择 Existing(现有)以从下拉列表中选择一个现有 IAM 角色。展开 Policy document(策略文档)时,将显示新角色或现有角色的策略语句。有关该角色的更多信息,请参阅 与 CloudTrail 使用 CloudWatch Logs 进行监控对应的角色策略文档。
注意
在您配置跟踪时,可以选择属于另一个账户的 S3 存储桶和 SNS 主题。但是,如果您希望 CloudTrail 将事件传送至 CloudWatch Logs 日志组,则必须选择当前账户中的日志组。
-
选择 Save changes(保存更改)。
指定 IAM 角色
您可以为 CloudTrail 指定要代入的角色以将事件传输到日志流。
指定角色
-
默认情况下,系统将为您指定
CloudTrail_CloudWatchLogs_Role
。默认角色策略包含在指定的日志组中创建 CloudWatch Logs 日志流以及将 CloudTrail 事件传送到该日志流所需的权限。-
要验证角色,请通过以下网址转到 Amazon Identity and Access Management 控制台:https://console.aws.amazon.com/iam
。 -
选择 Roles,然后选择 CloudTrail_CloudWatchLogs_Role。
-
在权限选项卡中,展开策略查看其内容。
-
-
您可指定另一个角色,但如果需要使用现有角色将事件发送到 CloudWatch Logs,则必须将所需的角色策略附加到现有角色。有关更多信息,请参阅 与 CloudTrail 使用 CloudWatch Logs 进行监控对应的角色策略文档。
在 CloudWatch 控制台中查看事件
在配置您的跟踪以将事件发送到您的 CloudWatch Logs 日志组后,您可以在 CloudWatch 控制台中查看事件。CloudTrail 通常会在 API 调用后平均大约 5 分钟内将事件传输到日志组。此时间并不能得到保证。有关更多信息,请参阅 Amazon CloudTrail 服务等级协议
在 CloudWatch 控制台中查看事件
访问 https://console.aws.amazon.com/cloudwatch/
打开 CloudWatch 控制台。 -
在左侧导航窗格中,从日志下选择日志组。
-
选择为您的跟踪指定的日志组。
-
选择要查看的日志流。
-
要查看您的跟踪记录的事件的详细信息,请选择一个事件。
注意
CloudWatch 控制台中的 Time (UTC)(时间 (UTC))列会显示将事件传送到您的日志组的时间。要查看 CloudTrail 记录的事件的实际时间,请查看 eventTime
字段。
通过 Amazon CLI 配置 CloudWatch Logs 监控
您可以使用 Amazon CLI 配置 CloudTrail 以将事件发送到 CloudWatch Logs 进行监控。
创建日志组
-
如果您没有日志组,请使用 CloudWatch Logs
create-log-group
命令创建一个 CloudWatch Logs 日志组作为日志事件的传输终端节点。aws logs create-log-group --log-group-name
name
下面的示例创建一个名为
CloudTrail/logs
的日志组:aws logs create-log-group --log-group-name CloudTrail/logs
-
检索日志组 Amazon Resource Name(ARN)。
aws logs describe-log-groups
创建角色
为 CloudTrail 创建一个角色,以使其能够将事件发送到 CloudWatch Logs 日志组。IAM create-role
命令接受两个参数:角色名称和代入角色策略文档 (JSON 格式) 的文件路径。您使用的策略文档可向 CloudTrail 提供 AssumeRole
权限。create-role
命令可创建具有所需权限的角色。
要创建包含此策略文档的 JSON 文件,请打开文本编辑器并将以下策略内容保存到名为 assume_role_policy_document.json
的文件中。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
运行下面的命令以便为 CloudTrail 创建带 AssumeRole
权限的角色。
aws iam create-role --role-name
role_name
--assume-role-policy-document file://<path to assume_role_policy_document>
.json
待命令完成后,记下输出中的角色 ARN。
创建策略文档
为 CloudTrail 创建下面的角色策略文档。此文档将向 CloudTrail 授予必要的权限,以在指定的日志组中创建 CloudWatch Logs 日志流并将 CloudTrail 事件传输到该日志流。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailCreateLogStream2014110", "Effect": "Allow", "Action": [ "logs:CreateLogStream" ], "Resource": [ "arn:aws:logs:
region
:accountID
:log-group:log_group_name
:log-stream:accountID
_CloudTrail_region
*" ] }, { "Sid": "AWSCloudTrailPutLogEvents20141101", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region
:accountID
:log-group:log_group_name
:log-stream:accountID
_CloudTrail_region
*" ] } ] }
将此策略文档保存到名为 role-policy-document.json
的文件中。
如果您要创建可能用于组织跟踪记录的策略,则需要对其进行稍微不同的配置。例如,以下策略授予 CloudTrail 必需的权限,以在您指定的日志组中创建 CloudWatch Logs 日志流,并将 CloudTrail 事件传输到 Amazon 账户 111111111111 的跟踪记录的以及在 111111111111 账户中创建且应用于 ID 为 o-exampleorgid
的 Amazon Organizations 组织的组织跟踪记录的该日志流:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailCreateLogStream20141101", "Effect": "Allow", "Action": [ "logs:CreateLogStream" ], "Resource": [ "arn:aws:logs:us-east-2:111111111111:log-group:CloudTrail/DefaultLogGroupTest:log-stream:111111111111_CloudTrail_us-east-2*", "arn:aws:logs:us-east-2:111111111111:log-group:CloudTrail/DefaultLogGroupTest:log-stream:
o-exampleorgid
_*" ] }, { "Sid": "AWSCloudTrailPutLogEvents20141101", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-2:111111111111:log-group:CloudTrail/DefaultLogGroupTest:log-stream:111111111111_CloudTrail_us-east-2*", "arn:aws:logs:us-east-2:111111111111:log-group:CloudTrail/DefaultLogGroupTest:log-stream:o-exampleorgid
_*" ] } ] }
有关组织跟踪记录的更多信息,请参阅为组织创建跟踪。
运行以下命令以将策略应用于角色。
aws iam put-role-policy --role-name
role_name
--policy-name cloudtrail-policy --policy-document file://<path to role-policy-document>
.json
更新跟踪
通过使用 CloudTrail update-trail
命令,用日志组和角色信息更新跟踪。
aws cloudtrail update-trail --name
trail_name
--cloud-watch-logs-log-group-arnlog_group_arn
--cloud-watch-logs-role-arnrole_arn
有关 Amazon CLI 命令的更多信息,请参阅 Amazon CloudTrail 命令行参考。
限制
CloudWatch Logs 和 EventBridge 各允许最大 256KB 的事件大小。尽管大多数服务事件的大小不超过 256 KB,但某些服务仍会有较大的事件。CloudTrail 不会将这些事件发送到 CloudWatch Logs 或 EventBridge。
从 CloudTrail 事件版本 1.05 开始,事件的大小最大值为 256 KB。这既有助于防范恶意行为者的利用,又能允许其他 Amazon 服务使用事件,例如 CloudWatch Logs 和 EventBridge。