使用 Lake 创建、更新和管理 CloudTrail Lake 集成 Amazon CLI - Amazon CloudTrail
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 Lake 创建、更新和管理 CloudTrail Lake 集成 Amazon CLI

您可以使用 Amazon CLI 来创建、更新和管理您的 CloudTrail Lake 集成。使用时 Amazon CLI,请记住您的命令在 Amazon Web Services 区域 配置文件中运行。如果您想要在不同的区域中运行命令,可以为配置文件更改默认区域,或者与命令一起使用 --region 参数。

L CloudTrail ake 集成的可用命令

用于在 La CloudTrail ke 中创建、更新和管理集成的命令包括:

  • create-event-data-store为之外的事件创建事件数据存储 Amazon。

  • delete-channel删除用于集成的频道。

  • delete-resource-policy删除附加到 La CloudTrail ke 集成频道的资源策略。

  • get-channel返回有关 CloudTrail 频道的信息。

  • get-resource-policy检索附加到 CloudTrail 频道的基于资源的政策文档的 JSON 文本。

  • list-channels列出当前账户中的频道及其来源名称。

  • put-audit-events将您的应用程序事件摄取到 CloudTrail Lake 中。必填参数接受您要 CloudTrail 采集的事件的 JSON 记录(也称为有效负载)。auditEvents每个PutAuditEvents请求最多可以添加 100 个此类事件(或最多 1 MB)。

  • put-resource-policy将基于资源的权限策略附加到用于与外部事件源集成的 CloudTrail 频道。 Amazon有关基于资源的策略的更多信息,请参阅Amazon CloudTrail 基于资源的策略示例。

  • update-channel更新由所需频道 ARN 或 UUID 指定的频道。

有关 La CloudTrail ke 事件数据存储的可用命令列表,请参阅事件数据存储的可用命令

有关可用于 La CloudTrail ke 查询的命令列表,请参阅可用于 L CloudTrail ake 查询的命令

创建用于从外部记录事件 Amazon 的集成 Amazon CLI

在中 Amazon CLI,您可以创建一个集成,该集成通过四个命令记录来自外部 Amazon 的事件(如果您已经有符合条件的事件数据存储,则使用三个命令)。用作集成目标的事件数据存储必须用于单个区域和单个账户;它们不能是多区域的,不能为组织记录事件 Amazon Organizations,只能包括活动事件。控制台中的事件类型必须是 Events from integrations(来自集成的事件)。在 API 中,eventCategory 值必须为 ActivityAuditLog。有关集成的更多信息,请参阅 与外部的事件源创建集成 Amazon

  1. 如果您还没有一个或多个可用于集成的事件数据存储,请运行 create-event-data-store 以创建事件数据存储。

    以下示例 Amazon CLI 命令创建了用于记录外部事件的事件数据存储 Amazon。对于活动事件,eventCategory 字段选择器值为 ActivityAuditLog。事件数据存储的保留期设置为 90 天。默认情况下,事件数据存储会收集来自所有区域的事件,但由于这是在收集非Amazon 事件,因此请通过添加--no-multi-region-enabled选项将其设置为单个区域。默认情况下将启用终止保护,并且事件数据存储不会为组织中的账户收集事件。

    aws cloudtrail create-event-data-store \ --name my-event-data-store \ --no-multi-region-enabled \ --retention-period 90 \ --advanced-event-selectors '[ { "Name": "Select all external events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["ActivityAuditLog"] } ] } ]'

    以下为响应示例。

    { "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE", "Name": "my-event-data-store", "AdvancedEventSelectors": [ { "Name": "Select all external events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "ActivityAuditLog" ] } ] } ], "MultiRegionEnabled": true, "OrganizationEnabled": false, "BillingMode": "EXTENDABLE_RETENTION_PRICING", "RetentionPeriod": 90, "TerminationProtectionEnabled": true, "CreatedTimestamp": "2023-10-27T10:55:55.384000-04:00", "UpdatedTimestamp": "2023-10-27T10:57:05.549000-04:00" }

    您需要事件数据存储 ID(ARN 的后缀,或前面的响应示例中的 EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE)才能继续进行下一步,并创建您的通道。

  2. 运行create-channel命令创建一个通道,允许合作伙伴或源应用程序向中的事件数据存储发送事件 CloudTrail。

    通道包含下列组件:

    CloudTrail 使用此信息来确定代表您向 CloudTrail 哪些合作伙伴发送事件数据。来源是必填项,可以是所有有效非Amazon 事件的 Custom,也可以是伙伴事件源的名称。每个来源最多允许一个通道。

    有关可用合作伙伴 Source 值的信息,请参阅 有关集成合作伙伴的其他信息

    摄取状态

    该通道状态显示从通道来源接收到最后一次事件的时间。

    目标

    目的地是接收来自该频道的事件的 CloudTrail Lake 事件数据存储。您可以更改通道的目标事件数据存储。

    要停止接收来自某个来源的事件,请删除该通道。

    您需要至少一个目标事件数据存储的 ID 才能运行此命令。目标的有效类型为 EVENT_DATA_STORE。您可以将摄取的事件发送到多个事件数据存储。以下示例命令将创建一个通道,用于将事件发送到两个事件数据存储,这两个存储库在 --destinations 参数的 Location 属性中由其 ID 表示。--destinations--name--source 参数是必需的。要接收来自 CloudTrail 合作伙伴的事件,请将合作伙伴的名称指定为的值。--source要从您自己的应用程序外部提取事件 Amazon,请指定Custom为的值。--source

    aws cloudtrail create-channel \ --region us-east-1 \ --destinations '[{"Type": "EVENT_DATA_STORE", "Location": "EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE"}, {"Type": "EVENT_DATA_STORE", "Location": "EXAMPLEg922-5n2l-3vz1- apqw8EXAMPLE"}]' --name my-partner-channel \ --source $partnerSourceName \

    在对您的 create-channel 命令的响应中,复制新通道的 ARN。在后续步骤中,您将需要该 ARN 来运行 put-resource-policyput-audit-events 命令。

  3. 运行put-resource-policy命令将资源策略附加到频道。资源策略是 JSON 策略文档,它们指定了指定主体可在资源上执行的操作,以及在什么条件下执行操作。在通道的资源策略中定义为主体的账户可以调用 PutAuditEvents API 来传送事件。

    注意

    如果您没有为通道创建资源策略,则只有通道所有者可以针对该通道调用 PutAuditEvents API。

    该策略所需的信息由集成类型决定。

    • 对于方向集成, CloudTrail 要求策略包含合作伙伴的 Amazon 账户 ID,并要求您输入合作伙伴提供的唯一外部 ID。 CloudTrail 使用 CloudTrail 控制台创建集成时,会自动将合作伙伴的 Amazon 账户 ID 添加到资源策略中。请参阅合作伙伴的文档,了解如何获取保单所需的 Amazon 账号。

    • 对于解决方案集成,您必须将至少一个 Amazon 账户 ID 指定为委托人,并且可以选择输入外部 ID 以防止副手感到困惑。

    以下是对资源策略的要求:

    • 该策略中定义的资源 ARN 必须与该策略附加到的通道 ARN 相匹配。

    • 该策略只包含一个操作:cloudtrail-data:PutAuditEvents

    • 该策略至少包含一个语句。该策略最多可以包含 20 个语句。

    • 每个语句至少包含一个主体。一个语句最多可以包含 50 个主体。

    aws cloudtrail put-resource-policy \ --resource-arn "channelARN" \ --policy "{ "Version": "2012-10-17", "Statement": [ { "Sid": "ChannelPolicy", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:root", "arn:aws:iam::123456789012:root" ] }, "Action": "cloudtrail-data:PutAuditEvents", "Resource": "arn:aws:cloudtrail:us-east-1:777788889999:channel/EXAMPLE-80b5-40a7-ae65-6e099392355b", "Condition": { "StringEquals": { "cloudtrail:ExternalId": "UniqueExternalIDFromPartner" } } } ] }"

    有关资源策略的更多信息,请参阅Amazon CloudTrail 基于资源的策略示例

  4. 运行 PutAuditEventsAPI 以将你的活动事件采集到其中 CloudTrail。您需要要 CloudTrail 添加的事件的有效负载。在将事件载荷摄入之前,请确保其中没有敏感或个人识别信息。 CloudTrail请注意,PutAuditEvents API 使用 cloudtrail-data CLI 端点,而不是 cloudtrail 端点。

    以下示例演示了如何使用 put-audit-events CLI 命令。--audit-events--channel-arn 参数是必需的。如果在资源策略中定义了外部 ID,则需要 --external-id 参数。您需要在前面步骤中创建的通道的 ARN。的值--audit-events是事件对象的 JSON 数组。 --audit-events包括来自事件的必需 ID、作为值的事件所需的有效负载EventData,以及一个可选的校验和,以帮助验证事件在摄取后是否完整性。 CloudTrail

    aws cloudtrail-data put-audit-events \ --channel-arn $ChannelArn \ --external-id $UniqueExternalIDFromPartner \ --audit-events \ id="event_ID",eventData='"{event_payload}"' \ id="event_ID",eventData='"{event_payload}"',eventDataChecksum="optional_checksum"

    以下是包含两个事件示例的示例命令。

    aws cloudtrail-data put-audit-events \ --channel-arn arn:aws:cloudtrail:us-east-1:123456789012:channel/EXAMPLE8-0558-4f7e-a06a-43969EXAMPLE \ --external-id UniqueExternalIDFromPartner \ --audit-events \ id="EXAMPLE3-0f1f-4a85-9664-d50a3EXAMPLE",eventData='"{\"eventVersion\":\0.01\",\"eventSource\":\"custom1.domain.com\", ... \}"' \ id="EXAMPLE7-a999-486d-b241-b33a1EXAMPLE",eventData='"{\"eventVersion\":\0.02\",\"eventSource\":\"custom2.domain.com\", ... \}"',eventDataChecksum="EXAMPLE6e7dd61f3ead...93a691d8EXAMPLE"

    以下示例命令添加了 --cli-input-json 参数,以指定事件有效负载的 JSON 文件(custom-events.json)。

    aws cloudtrail-data put-audit-events --channel-arn $channelArn --external-id $UniqueExternalIDFromPartner --cli-input-json file://custom-events.json --region us-east-1

    以下是示例 JSON 文件 custom-events.json 的示例内容。

    { "auditEvents": [ { "eventData": "{\"version\":\"eventData.version\",\"UID\":\"UID\", \"userIdentity\":{\"type\":\"CustomUserIdentity\",\"principalId\":\"principalId\", \"details\":{\"key\":\"value\"}},\"eventTime\":\"2021-10-27T12:13:14Z\",\"eventName\":\"eventName\", \"userAgent\":\"userAgent\",\"eventSource\":\"eventSource\", \"requestParameters\":{\"key\":\"value\"},\"responseElements\":{\"key\":\"value\"}, \"additionalEventData\":{\"key\":\"value\"}, \"sourceIPAddress\":\"12.34.56.78\",\"recipientAccountId\":\"152089810396\"}", "id": "1" } ] }

您可以通过运行命令来验证集成是否正常工作以及 CloudTrail 是否正确地从源接收事件。get-channel的输出get-channel显示了最近 CloudTrail收到事件的时间戳。

aws cloudtrail get-channel --channel arn:aws:cloudtrail:us-east-1:01234567890:channel/EXAMPLE8-0558-4f7e-a06a-43969EXAMPLE

(可选)计算校验和值

您在PutAuditEvents请求EventDataChecksum中指定为的值的校验和可帮助您验证 CloudTrail 收到的事件与校验和匹配的事件;它有助于验证事件的完整性。校验和值采用一种 base64-SHA256 算法,您可以通过运行以下命令来计算该值。

printf %s "{"eventData": "{\"version\":\"eventData.version\",\"UID\":\"UID\", \"userIdentity\":{\"type\":\"CustomUserIdentity\",\"principalId\":\"principalId\", \"details\":{\"key\":\"value\"}},\"eventTime\":\"2021-10-27T12:13:14Z\",\"eventName\":\"eventName\", \"userAgent\":\"userAgent\",\"eventSource\":\"eventSource\", \"requestParameters\":{\"key\":\"value\"},\"responseElements\":{\"key\":\"value\"}, \"additionalEventData\":{\"key\":\"value\"}, \"sourceIPAddress\":\"source_IP_address\", \"recipientAccountId\":\"recipient_account_ID\"}", "id": "1"}" \ | openssl dgst -binary -sha256 | base64

该命令将返回校验和。示例如下:

EXAMPLEDHjkI8iehvCUCWTIAbNYkOgO/t0YNw+7rrQE=

校验和值将成为您的 PutAuditEvents 请求中 EventDataChecksum 的值。如果校验和与所提供事件的校验和不匹配,则 CloudTrail 会以错误拒绝该事件。InvalidChecksum

使用更新频道 Amazon CLI

要更新通道的名称或目标事件数据存储,请运行 update-channel 命令。--channel 参数是必需的。您无法更新通道的来源。示例如下:

aws cloudtrail update-channel \ --channel aws:cloudtrail:us-east-1:123456789012:channel/EXAMPLE8-0558-4f7e-a06a-43969EXAMPLE \ --name "new-channel-name" \ --destinations '[{"Type": "EVENT_DATA_STORE", "Location": "EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE"}, {"Type": "EVENT_DATA_STORE", "Location": "EXAMPLEg922-5n2l-3vz1- apqw8EXAMPLE"}]'

删除频道以删除与的集成 Amazon CLI

要停止在外部推送合作伙伴或其他活动事件 Amazon,请运行命令删除频道。delete-channel需要您要删除的通道的 ARN 或通道 ID(ARN 后缀)。示例如下:

aws cloudtrail delete-channel \ --channel EXAMPLE8-0558-4f7e-a06a-43969EXAMPLE