将事件发送到 CloudWatch Logs - Amazon CloudTrail
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将事件发送到 CloudWatch Logs

在配置您的跟踪以将事件发送到 CloudWatch Logs 时,CloudTrail 只发送符合您跟踪记录设置的事件。例如,如果您将跟踪配置为仅记录数据事件,则您的跟踪仅将数据事件发送到您的 CloudWatch Logs 日志组。CloudTrail 支持将数据、见解和管理事件发送到 CloudWatch Logs。有关更多信息,请参阅使用 CloudTrail 日志文件

注意

只有管理账户才能使用控制台为组织跟踪配置 CloudWatch Logs 日志组。委托管理员可以使用 Amazon CLI 或 CloudTrail CreateTrail 或者 UpdateTrail API 操作配置 CloudWatch Logs 日志组。

将事件发送到 CloudWatch Logs 日志组:

通过控制台配置 CloudWatch Logs 监控

您可以使用 Amazon Web Services Management Console 配置跟踪以将事件发送到 CloudWatch Logs 进行监控。

创建一个日志组或指定一个现有日志组

CloudTrail 使用 CloudWatch Logs 日志组作为日志事件的传输终端节点。可创建一个日志组或者指定一个现有日志组。

为现有跟踪创建或指定日志组
  1. 确保您以具有足够权限的管理用户或角色登录以配置 CloudWatch Logs 集成。有关更多信息,请参阅授予在 CloudTrail 控制台上查看和配置 Amazon CloudWatch 日志信息的权限

    注意

    只有管理账户才能使用控制台为组织跟踪配置 CloudWatch Logs 日志组。委托管理员可以使用 Amazon CLI 或 CloudTrail CreateTrail 或者 UpdateTrail API 操作配置 CloudWatch Logs 日志组。

  2. 访问 https://console.aws.amazon.com/cloudtrail/,打开 CloudTrail 控制台。

  3. 选择跟踪名称。如果您选择一个应用于所有区域的跟踪,则您将重定向到创建此跟踪的区域。可以在跟踪所在的区域创建一个日志组或者选择一个现有日志组。

    注意

    应用于所有区域的跟踪会将所有区域中的日志文件发送到您指定的 CloudWatch Logs 日志组。

  4. CloudWatch Logs 中,选择Edit(编辑)。

  5. CloudWatch Logs 下选择启用

  6. 日志组名称下,选择新建创建新的日志组,或选择现有使用现有的日志组。如果选择 New(新建),CloudTrail 会为您指定新日志组的名称,您也可以键入名称。有关命名的更多信息,请参阅 CloudTrail 的 CloudWatch 日志组和日志流命名

  7. 如果选择 Existing(现有),则从下拉列表中选择一个日志组。

  8. 角色名称下,选择新建创建新的 IAM 角色,以获得将日志发送到 CloudWatch Logs 的权限。选择 Existing(现有)以从下拉列表中选择一个现有 IAM 角色。展开 Policy document(策略文档)时,将显示新角色或现有角色的策略语句。有关该角色的更多信息,请参阅 使用 CloudWatch 日志 CloudTrail 进行监控的角色策略文档

    注意

    在您配置跟踪时,可以选择属于另一个账户的 S3 存储桶和 SNS 主题。但是,如果您希望 CloudTrail 将事件传送至 CloudWatch Logs 日志组,则必须选择当前账户中的日志组。

  9. 选择保存更改

指定 IAM 角色

您可以为 CloudTrail 指定要代入的角色以将事件传输到日志流。

指定角色
  1. 默认情况下,系统将为您指定 CloudTrail_CloudWatchLogs_Role。默认角色策略包含在指定的日志组中创建 CloudWatch Logs 日志流以及将 CloudTrail 事件传送到该日志流所需的权限。

    注意

    如果要将此角色用于组织跟踪的日志组,则必须在创建角色后手动修改策略。有关更多信息,请参阅此策略示例为组织创建跟踪

    1. 要验证角色,请通过以下网址转到 Amazon Identity and Access Management 控制台:https://console.aws.amazon.com/iam

    2. 选择 Roles,然后选择 CloudTrail_CloudWatchLogs_Role

    3. 权限选项卡中,展开策略查看其内容。

  2. 您可指定另一个角色,但如果需要使用现有角色将事件发送到 CloudWatch Logs,则必须将所需的角色策略附加到现有角色。有关更多信息,请参阅使用 CloudWatch 日志 CloudTrail 进行监控的角色策略文档

在 CloudWatch 控制台中查看事件

在配置您的跟踪以将事件发送到您的 CloudWatch Logs 日志组后,您可以在 CloudWatch 控制台中查看事件。CloudTrail 通常会在 API 调用后平均大约 5 分钟内将事件传输到日志组。此时间并不能得到保证。有关更多信息,请参阅 Amazon CloudTrail 服务等级协议

在 CloudWatch 控制台中查看事件
  1. 访问 https://console.aws.amazon.com/cloudwatch/ 打开 CloudWatch 控制台。

  2. 在左侧导航窗格中,从日志下选择日志组

  3. 选择为您的跟踪指定的日志组。

  4. 选择要查看的日志流。

  5. 要查看您的跟踪记录的事件的详细信息,请选择一个事件。

注意

CloudWatch 控制台中的 Time (UTC)(时间 (UTC))列会显示将事件传送到您的日志组的时间。要查看 CloudTrail 记录的事件的实际时间,请查看 eventTime 字段。

通过 Amazon CLI 配置 CloudWatch Logs 监控

您可以使用 Amazon CLI 配置 CloudTrail 以将事件发送到 CloudWatch Logs 进行监控。

创建日志组

  1. 如果您没有日志组,请使用 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
  2. 检索日志组 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-arn log_group_arn --cloud-watch-logs-role-arn role_arn

有关 Amazon CLI 命令的更多信息,请参阅 Amazon CloudTrail 命令行参考

限制

CloudWatch Logs 和 EventBridge 各允许最大 256KB 的事件大小。尽管大多数服务事件的大小不超过 256 KB,但某些服务仍会有较大的事件。CloudTrail 不会将这些事件发送到 CloudWatch Logs 或 EventBridge。

从 CloudTrail 事件版本 1.05 开始,事件的大小最大值为 256 KB。这既有助于防范恶意行为者的利用,又能允许其他 Amazon 服务使用事件,例如 CloudWatch Logs 和 EventBridge。