クロスアカウント CloudTrail ログ記録 - AWS Lake Formation

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

クロスアカウント CloudTrail ログ記録

Lake Formation は、データレイク内のデータに対するすべてのクロスアカウントアクセスの一元的な監査証跡を提供します。受信者 AWS アカウントが共有テーブルのデータにアクセスすると、Lake Formation は CloudTrail イベントを所有アカウントの CloudTrail ログにコピーします。コピーされたイベントには、 Amazon Athena や Amazon Redshift Spectrum などの統合サービスによるデータに対するクエリと、AWS Glueジョブによるデータアクセスが含まれます。

CloudTrail Data Catalog リソースに対するクロスアカウントオペレーションの イベントも同様にコピーされます。

リソース所有者として、Amazon S3 でオブジェクトレベルのログ記録を有効にすると、S3 CloudTrail イベントを Lake Formation CloudTrail イベントと結合するクエリを実行して、S3 バケットにアクセスしたアカウントを特定できます。

クロスアカウント CloudTrail ログにプリンシパル ID を含める

デフォルトでは、共有リソース受信者のログに追加され、リソース所有者のログにコピーされたクロスアカウント CloudTrail イベントには、外部アカウントプリン AWS シパルのプリンシパル ID のみが含まれ、プリンシパル (プリンシパル ARN) の人間が読み取り可能な Amazon リソースネーム (ARN) は含まれません。同じ組織やチーム内など、信頼できる境界内でリソースを共有する場合、プリンシパル ARN を CloudTrail イベントに含めるようにオプトインできます。そうすることで、リソース所有者アカウントは、アカウントが所有するリソースにアクセスする受領者アカウントのプリンシパルを追跡できるようになります。

重要

共有リソースの受信者として、独自の CloudTrail ログのイベントでプリンシパル ARN を表示するには、プリンシパル ARN を所有者アカウントと共有することをオプトインする必要があります。

リソースリンク経由でデータアクセスが行われる場合、リソースリンクへのアクセスと、ターゲットリソースへのアクセスの 2 つのイベントが、共有リソース受領者のアカウントにログに記録されます。リソースリンクアクセスのイベントには、プリンシパル 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 フィールドは、Amazon Athena、Amazon 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 Access の IAM ポリシーを持つユーザーとしてサインインします。

  2. ナビゲーションペインで [Settings] (設定) を選択します。

  3. データカタログ設定ページの「 のデフォルトアクセス許可 AWS CloudTrail」セクションの「リソース所有者」に、1 つ以上の AWS リソース所有者アカウント ID を入力します。 IDs

    各アカウント ID の後で Enter キーを押します。

  4. [保存] を選択します。

    これで、共有リソース受信者とリソース所有者の両方のログに保存されているクロスアカウント CloudTrail イベントに、プリンシパル ARN が含まれるようになりました。

Amazon S3 クロスアカウントアクセスの CloudTrail ログのクエリ

共有リソース所有者は、S3 CloudTrail logs をクエリして、Amazon S3 バケットにアクセスしたアカウントを特定できます (Amazon S3 でオブジェクトレベルのログ記録を有効にしている場合)。これは、Lake Formation に登録した S3 ロケーションのみに適用されます。共有リソースコンシューマーが Lake Formation CloudTrail ログにプリンシパル Rans を含めるようにオプトインする場合、バケットにアクセスしたロールまたはユーザーを決定できます。

でクエリを実行する場合 Amazon Athena、セッション名プロパティで Lake Formation CloudTrail イベントと S3 CloudTrail イベントを結合できます。クエリは、Lake Formation イベントを eventName="GetDataAccess" で、S3 イベントを eventName="Get Object" または eventName="Put Object" でフィルタリングすることもできます。

以下は、登録された S3 ロケーション内のデータにアクセスした Lake Formation クロスアカウント CloudTrail イベントからの抜粋です。

{ "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 キー値 はAWSLF-00-GL-111122223333-B8JSAjo5QA、S3 CloudTrail event の principalIdキーのセッション名で結合できます。以下は、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

ランダムに生成された文字列。