本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建与控制台的自定义集成
您可以使用 CloudTrail 来记录和存储混合环境中任何来源的用户活动数据,例如本地或云端托管的内部或 SaaS 应用程序、虚拟机或容器。在 CloudTrail Lake 控制台中执行此过程的前半部分,然后调用收录事件,提供您的频道ARN和事件有效负载。PutAuditEvents
API使用将应用程序活动采集PutAuditEvents
API到中后 CloudTrail,您可以使用 CloudTrail Lake 来搜索、查询和分析从您的应用程序中记录的数据。
-
登录 AWS Management Console 并打开 CloudTrail 控制台,网址为https://console.aws.amazon.com/cloudtrail/
。 -
在导航窗格中,打开 Lake 子菜单,然后选择集成。
-
在 Add integration(添加集成)页面上,为您的通道输入名称。该名称可以包含 3-128 个字符。只允许使用字母、数字、句点、下划线和短划线。
-
选择 My custom integration(我的自定义集成)。
-
在 Event delivery location(事件传送位置)中,选择将相同活动事件记录到现有事件数据存储中,或创建新的事件数据存储。
如果您选择创建新的事件数据存储,请输入事件数据存储的名称,并以天为单位指定保留期。如果您选择一年可延期保留定价选项,则可以将事件数据在事件数据存储中最多保留 3653 天(大约 10 年);如果您选择七年保留定价选项,则最多可以保留 2557 天(大约 7 年)。
如果您选择将活动事件记录到一个或多个现有事件数据存储中,请从列表中选择事件数据存储。事件数据存储只能包含活动事件。控制台中的事件类型必须是 Events from integrations(来自集成的事件)。在中API,
eventCategory
值必须为ActivityAuditLog
。 -
在 Resource policy(资源策略)中,为集成的通道配置资源策略。资源JSON策略是政策文档,用于指定委托人可以在什么条件下对资源执行哪些操作。在资源策略中定义为委托人的账户可以调用,
PutAuditEvents
API将活动发送到您的频道。注意
如果您没有为频道创建资源策略,则只有频道所有者才能在频道
PutAuditEvents
API上调用。-
(可选)输入唯一的外部 ID,以提供额外一层保护。该外部 ID 是一个唯一的字符串,如账户 ID 或随机生成的字符串,以防范混淆代理。
注意
如果资源策略包含外部 ID,则对的所有调用都
PutAuditEvents
API必须包括外部 ID。但是,如果策略未定义外部 ID,您仍然可以调用PutAuditEvents
API并指定externalId
参数。 -
选择 Add AWS ac count(添加 AWS 账户),将每个账户 ID 指定为频道资源策略中的委托人。
-
-
(可选)在 Tags(标签)区域中,您最多可以添加 50 个标签键和值对,以帮助您对事件数据存储和通道的访问进行识别、排序和控制。有关如何使用IAM策略根据标签授权对事件数据存储的访问权限的更多信息,请参阅示例:拒绝基于标签创建或删除事件数据存储的访问权限。有关如何在中使用标签的更多信息 AWS,请参阅中的为AWS 资源添加标签。AWS 一般参考
-
在准备好创建新的集成后,请选择 Add integration(添加集成)。没有评论页面。 CloudTrail 创建集成,但要集成您的自定义事件,您必须在
PutAuditEvents
请求ARN中指定渠道。 -
致电,
PutAuditEvents
API将您的活动事件收录到其中。 CloudTrail每个PutAuditEvents
请求最多可以添加 100 个活动事件(或最多 1MB)。您需要在前面的步骤中创建ARN的频道、 CloudTrail 要添加的事件的有效负载以及外部 ID(如果已为资源策略指定)。在将事件载荷摄入之前,请确保其中没有敏感或个人识别信息。 CloudTrail您收录的事件 CloudTrail 必须遵循. CloudTrail 湖泊集成事件架构提示
AWS CloudShell用于确保您运行的是最新版本 AWS APIs。
以下示例说明如何使用该put-audit-eventsCLI命令。--audit-events 和 --channel-arn 参数是必需的。您需要在ARN前面步骤中创建的频道,您可以从集成详细信息页面复制该频道。的值--audit-events是一个事件对象JSON数组。
--audit-events
包括来自事件的必需 ID、作为值的事件所需的有效负载EventData
,以及一个可选的校验和,以帮助验证事件在摄取后是否完整性。 CloudTrailaws cloudtrail-data put-audit-events \ --region
region
\ --channel-arn $ChannelArn \ --audit-events \ id="event_ID
",eventData='"{event_payload
}"' \ id="event_ID
",eventData='"{event_payload
}"',eventDataChecksum="optional_checksum
"以下是包含两个事件示例的示例命令。
aws cloudtrail-data put-audit-events \ --region us-east-1 \ --channel-arn arn:aws:cloudtrail:us-east-1:01234567890:channel/EXAMPLE8-0558-4f7e-a06a-43969EXAMPLE \ --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 \ --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\":\"
source_IP_address
\",\"recipientAccountId\":\"recipient_account_ID
\"}", "id": "1" } ] }
(可选)计算校验和值
您在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
该命令将返回校验和。示例如下:
EXAMPLEHjkI8iehvCUCWTIAbNYkOgO/t0YNw+7rrQE=
校验和值将成为您的 PutAuditEvents
请求中 EventDataChecksum
的值。如果校验和与所提供事件的校验和不匹配,则 CloudTrail 会以错误拒绝该事件。InvalidChecksum