

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

# CloudTrail のクロスアカウントロギング
<a name="cross-account-logging"></a>

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

Data Catalog リソースへのクロスアカウント操作に関する CloudTrail イベントも、同様にコピーされます。

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

**Topics**
+ [クロスアカウント CloudTrail ログにプリンシパルアイデンティティを含める](#cross-account-logging-optin)
+ [Amazon S3 クロスアカウントアクセスの CloudTrail ログのクエリ](#cross-account-logging-s3)

## クロスアカウント CloudTrail ログにプリンシパルアイデンティティを含める
<a name="cross-account-logging-optin"></a>

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

**重要**  
共有リソースの受領者として独自の 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 ログにプリンシパル ARN を含めることをオプトインする**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬) を開きます。

   `Administrator` ユーザー、または `Administrator Access` の IAM ポリシーを持つユーザーとしてサインインします。

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

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

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

1. **[Save]** (保存) を選択します。

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

## Amazon S3 クロスアカウントアクセスの CloudTrail ログのクエリ
<a name="cross-account-logging-s3"></a>

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

を使用してクエリを実行する場合 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 イベントの `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`**  
データにアクセスしたエンティティを示します。現在の値は次のとおりです。      
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/cross-account-logging.html)

**`account-id`**  
Lake Formation から認証情報をリクエストした AWS アカウント ID。

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