跨账户 CloudTrail 日志 - AWS Lake Formation

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

跨账户 CloudTrail 日志

Lake Formation 提供了有关对数据湖中数据的所有跨账户访问的集中审计跟踪记录。当接收者 AWS 账户访问共享表中的数据时,Lake Formation CloudTrail 会将事件复制到拥有该账户的 CloudTrail 日志中。复制的事件包括通过集成服务(例如 Amazon Athena 和 Amazon Redshift Spectrum)对数据的查询,以及通过以下方式访问的数据 AWS Glue 工作。

CloudTrail 对数据目录资源进行跨账户操作的事件同样会被复制。

作为资源所有者,如果您在 Amazon S3 中启用对象级日志记录,则可以运行将 S3 CloudTrail 事件与 Lake Formation 事件关联的查询,以确定访问了您的 S3 存储桶的账户。 CloudTrail

在跨账户 CloudTrail 日志中包含主体身份

默认情况下,添加到共享资源接收者日志并复制到资源所有者日志的跨账户 CloudTrail 事件仅包含外部账户 AWS 委托人的委托人 ID,而不是委托人(委托人)的人类可读的 Amazon 资源名称 (ARN)。ARN在可信范围内(例如在同一个组织或团队内)共享资源时,您可以选择让委托人ARN参与 CloudTrail 活动。然后,资源所有者账户可以对访问他们拥有的资源的接收方账户中主体进行跟踪。

重要

作为共享资源接收者,要在自己的 CloudTrail 日志ARN中查看事件中的委托人,您必须选择ARN与所有者账户共享委托人。

如果数据访问是通过资源链接进行的,则共享资源接收方账户中会记录两个事件:一个是资源链接访问事件,另一个是目标资源访问事件。资源链接访问的事件确实包括委托人ARN。目标资源访问的事件不包括没有选择加入的委托人ARN。资源链接访问事件不会被复制到所有者账户。

以下是默认跨账户 CloudTrail 事件的摘录(没有选择加入)。执行数据访问的账户为 1111-2222-3333。这是同时显示在调用账户和资源所有者账户中的日志。在跨账户案例中,Lake Formation 会在两个账户中填充日志。

{ "eventVersion": "1.05", "userIdentity": { "type": "AWSAccount", "principalId": "AROAQGFTBBBGOBWV2EMZA:GlueJobRunnerSession", "accountId": "111122223333" }, "eventSource": "lakeformation.amazonaws.com", "eventName": "GetDataAccess", ... ... "additionalEventData": { "requesterService": "GLUE_JOB", "lakeFormationRoleSessionName": "AWSLF-00-GL-111122223333-G13T0Rmng2" }, ... }

作为共享资源使用者,当您选择加入委托人时ARN,摘录将变成以下内容。该lakeFormationPrincipal字段表示通过亚马逊 Athena、亚马逊 Redshift Spectrum 或执行查询的最终角色或用户 AWS Glue 工作。

{ "eventVersion": "1.05", "userIdentity": { "type": "AWSAccount", "principalId": "AROAQGFTBBBGOBWV2EMZA:GlueJobRunnerSession", "accountId": "111122223333" }, "eventSource": "lakeformation.amazonaws.com", "eventName": "GetDataAccess", ... ... "additionalEventData": { "requesterService": "GLUE_JOB", "lakeFormationPrincipal": "arn:aws:iam::111122223333:role/ETL-Glue-Role", "lakeFormationRoleSessionName": "AWSLF-00-GL-111122223333-G13T0Rmng2" }, ... }
选择在跨账户 CloudTrail 日志ARNs中包含本金
  1. 打开 Lake Formation 控制台,网址为https://console.aws.amazon.com/lakeformation/

    Administrator用户或具有Administrator AccessIAM策略的用户身份登录。

  2. 在导航窗格中,选择 Settings(设置)

  3. 数据目录设置页面的资源所有者的默认权限 AWS CloudTrail部分中,输入一个或多个 AWS 资源所有者帐户IDs。

    在输入每个账户 ID 之后按 Enter 键。

  4. 选择保存

    现在,存储在共享资源接收者和资源所有者的日志中的跨账户 CloudTrail 事件都包含委托ARN人。

查询 Amazon S3 跨账户访问 CloudTrail 日志

作为共享资源所有者,您可以查询 S3 CloudTrail 日志以确定访问过您的 Amazon S3 存储桶的账户(前提是您在 Amazon S3 中启用了对象级日志记录)。这仅适用于您在 Lake Formation 中注册的 S3 位置。如果共享资源使用者选择在 Lake Formation CloudTrail 日志ARNs中包含委托人,则可以确定访问存储桶的角色或用户。

使用运行查询时 Amazon Athena,您可以通过会话名称属性加入 Lake Formation CloudTrail CloudTrail 事件和 S3 事件。查询还可以筛选关于 eventName="GetDataAccess" 的 Lake Formation 事件以及关于 eventName="Get Object"eventName="Put Object" 的 S3 事件。

以下是 Lake Formation 跨账户 CloudTrail 事件的摘录,在该事件中,已注册 S3 位置的数据被访问。

{ "eventSource": "lakeformation.amazonaws.com", "eventName": "GetDataAccess", .............. .............. "additionalEventData": { "requesterService": "GLUE_JOB", "lakeFormationPrincipal": "arn:aws:iam::111122223333:role/ETL-Glue-Role", "lakeFormationRoleSessionName": "AWSLF-00-GL-111122223333-B8JSAjo5QA" } }

lakeFormationRoleSessionName密钥值可以与 S3 CloudTrail 事件principalId密钥中的会话名称合并。AWSLF-00-GL-111122223333-B8JSAjo5QA以下是 S3 CloudTrail 事件的摘录。它显示会话名称的位置。

{ "eventSource": "s3.amazonaws.com", "eventName": "Get Object" .............. .............. "principalId": "AROAQSOX5XXUR7D6RMYLR:AWSLF-00-GL-111122223333-B8JSAjo5QA", "arn": "arn:aws:sets::111122223333:assumed-role/Deformationally/AWSLF-00-GL-111122223333-B8JSAjo5QA", "session Context": { "session Issuer": { "type": "Role", "principalId": "AROAQSOX5XXUR7D6RMYLR", "arn": "arn:aws:iam::111122223333:role/aws-service-role/lakeformation.amazonaws.com/Deformationally", "accountId": "111122223333", "user Name": "Deformationally" }, .............. .............. }

会话名称的格式如下:

AWSLF-<version-number>-<query-engine-code>-<account-id->-<suffix>
version-number

此格式的版本,当前为 00。如果会话名称格式发生变化,则下一个版本将是 01

query-engine-code

表示访问数据的实体。当前值如下:

GL AWS Glue ETL工作
AT Athena
RE Amazon Redshift Spectrum
account-id

向 Lake Formation 请求凭证的 AWS 账户 ID。

suffix

随机生成的字符串。