> ## Documentation Index
> Fetch the complete documentation index at: https://docs.iru.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Amazon Simple Storage Service (S3)

> クロスアカウント IAM ロールを使用して Amazon S3 を Iru Compliance に接続し、バケットのインベントリ、暗号化、パブリックアクセスブロック、ポリシーのメタデータを収集します。

### Amazon Simple Storage Service (S3) について

**Amazon S3** コネクタは、**オブジェクトのペイロード**を読み取ることなく、**バケットの設定**（ポリシー、暗号化、バージョニング、ログ記録、通知、パブリックアクセスブロック、および関連する設定）のインベントリを作成します。Iru は、お客様がご自身のアカウントで作成した **IAM ロール**を引き受けます（**外部 ID** を使用した `sts:AssumeRole`）。これにより、エビデンスは保存されたファイルの内容ではなく、**バケットがどのように設定されているか**に焦点を当てたものになります。

### 仕組み

Iru は独自の AWS アカウントで稼働しています。**S3** バケットの設定（デフォルトではオブジェクトのペイロードは対象外）のインベントリを作成するには、**IAM ロール**を作成します。このロールの**信頼ポリシー**では Iru の AWS プリンシパルを参照し、ウィザードに表示される **External ID** を**必須**とし、**権限ポリシー**ではチームが承認した**メタデータ**の読み取りのみを許可します。**`AmazonS3ReadOnlyAccess`** 単体ではなく、以下の**インラインポリシー**の使用を推奨します。マネージドポリシーには **`s3:GetObject`** が含まれており、多くのチームはメタデータのみの連携でこれを許可していません。そのロールの **ARN** を Iru に貼り付けます。

| 項目 | 値 |
| - | - |
| **カテゴリ** | ストレージ |
| **認証** | クロスアカウント IAM ロール |

参考資料: [S3 ユーザーガイド](https://docs.aws.amazon.com/AmazonS3/latest/userguide/)、[アクセス管理](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-management.html)。

### 前提条件

* **ロールの作成**とインラインポリシーのアタッチができる IAM 権限。
* **ご自身の**コネクタに表示される最新の**プリンシパル**と**外部 ID** の組み合わせ（古いスクリーンショットに記載されたサンプル ID とは異なる場合があります）。

### Amazon S3 を Iru に接続する

<Tabs>
  <Tab title="Iru Compliance">
    <Note>
      まずここから始めます。ソースウィザードを開き、**信頼ポリシー**をコピーします（**外部 ID** も控えておきます）。AWS でロールを作成する準備ができたら、[**AWS**](#aws) タブに切り替えて [**AWS で IAM ロールを作成する**](#create-the-iam-role-in-aws)の手順に従います。**Role ARN** を取得したら、[**Iru Compliance**](#iru-compliance) タブに戻り、以下の [**Iru でロール ARN を送信する**](#submit-the-role-arn-in-iru)を完了します。
    </Note>

    #### Iru から信頼ポリシーを取得する

    <Steps>
      <Step title="ソースを開く">
        Iru Compliance の左側のナビゲーションバーで **コンプライアンス** を展開し、**ソース** を選択します。

        <Frame>
          <img src="https://mintcdn.com/iru/tI0HDLDwHj8r9Ile/assets/media/images/iru-navigation-compliance-sources.png?fit=max&auto=format&n=tI0HDLDwHj8r9Ile&q=85&s=87dcef15fc17d2fb9a6e53f454e41710" alt="左側のナビゲーション: Compliance を展開し、Sources を選択した状態" width="410" height="1024" data-path="assets/media/images/iru-navigation-compliance-sources.png" />
        </Frame>
      </Step>

      <Step title="AWS S3 をオンにする">
        **AWS S3** を探します（**カテゴリ** または **名前または説明で検索** を使用します）。そのカードの**トグル**をオンにします。**Iru が外部サービスへのアクセスをリクエストしています** ウィザードのタブは開いたままにしておきます。
      </Step>

      <Step title="信頼ポリシーの JSON をコピーする">
        ウィザードには、IAM ロールで使用する必要がある**信頼ポリシー**の JSON（**Principal** と **sts:ExternalId**）が表示されます。以下は構造の**例**です。アカウント、プリンシパル ARN、外部 ID が正確に一致するように、**ウィザードに表示される最新の JSON をコピーしてください**。

        ```json copy=false lines theme={null}
        {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Effect": "Allow",
              "Principal": {
                "AWS": "arn:aws:iam::753695775620:role/IruConnect"
              },
              "Condition": {
                "StringEquals": {
                  "sts:ExternalId": "YOUR_EXTERNAL_ID"
                }
              },
              "Action": "sts:AssumeRole"
            }
          ]
        }
        ```
      </Step>

      <Step title="AWS に切り替えてロールを作成する">
        参照用に Iru ウィザードのタブを開いたまま、[**AWS**](#aws) タブに切り替えて [**AWS で IAM ロールを作成する**](#create-the-iam-role-in-aws)の手順に従います。
      </Step>
    </Steps>

    #### Iru でロール ARN を送信する

    <Note>
      新しいロールの **Role ARN** を取得するため、先に [**AWS**](#aws) タブ（[**AWS で IAM ロールを作成する**](#create-the-iam-role-in-aws)まで）を完了してください。
    </Note>

    <Steps>
      <Step title="IAM Role ARN を貼り付ける">
        Iru ウィザードのタブに戻ります。コネクタで求められる場所に **Role ARN** を貼り付けます。
      </Step>

      <Step title="接続を完了する">
        **Submit Role** を選択します。接続に成功すると、ウィザードに **接続が構成されました** と表示されます。
      </Step>

      <Step title="ソースが有効であることを確認する">
        **Iru が外部サービスへのアクセスをリクエストしています** のブラウザタブを閉じてから **コンプライアンス** → **ソース** に戻り、**AWS S3** カードが **有効** になっていることを確認します。
      </Step>
    </Steps>
  </Tab>

  <Tab title="AWS">
    <Note>
      このロールを作成する前に、[**Iru Compliance**](#iru-compliance) タブの [**Iru から信頼ポリシーを取得する**](#get-the-trust-policy-from-iru)を完了してください。**Trusted entity** を設定する際は、最新のウィザードに表示される**外部 ID** と信頼ポリシーを使用します。
    </Note>

    #### AWS で IAM ロールを作成する

    <Steps>
      <Step title="ロール作成ワークフローを開始する">
        **IAM** → **Roles** → **Create role** を開きます。
      </Step>

      <Step title="信頼されたエンティティを設定する">
        **AWS account** → **Another AWS account** を選択します。**`753695775620`**（または Iru に表示される ID）を入力します。**Require external ID** を有効にし、Iru からコピーした値を貼り付けます。
      </Step>

      <Step title="範囲の広いマネージドポリシーをスキップする（任意）">
        次の手順でメタデータのみのインラインポリシーを使用する場合は、**`AmazonS3ReadOnlyAccess`** をアタッチ**せずに**マネージドポリシーの選択画面を先に進みます。
      </Step>

      <Step title="メタデータのみのインラインポリシーを作成する">
        必要に応じて仮の名前でロールを作成し、ロール → **アクセス許可** → **Create inline policy** → JSON エディタを開きます。次の内容を貼り付けます。

        ```json lines theme={null}
        {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Effect": "Allow",
              "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation",
                "s3:GetBucketPolicy",
                "s3:GetBucketPolicyStatus",
                "s3:GetBucketAcl",
                "s3:GetBucketVersioning",
                "s3:GetBucketTagging",
                "s3:GetBucketLogging",
                "s3:GetBucketNotification",
                "s3:GetBucketPublicAccessBlock",
                "s3:GetEncryptionConfiguration",
                "s3:GetLifecycleConfiguration",
                "s3:GetReplicationConfiguration",
                "s3:GetBucketCORS",
                "s3:GetBucketWebsite",
                "s3:GetBucketObjectLockConfiguration"
              ],
              "Resource": "*"
            }
          ]
        }
        ```

        インラインポリシーを保存します。

        <Note>
          このポリシーは、Iru がオブジェクト本体を取得できないように、`s3:GetObject` および関連するオブジェクト読み取り API を意図的に**除外**しています。取得できるのはバケットレベルのメタデータのみです。
        </Note>
      </Step>

      <Step title="ロール ARN をコピーする">
        ロールの概要ページからロールの **ARN** をコピーします。[**Iru Compliance**](#iru-compliance) タブに戻り、[**Iru でロール ARN を送信する**](#submit-the-role-arn-in-iru)を完了します。
      </Step>

      <Step title="信頼関係を確認する">
        **Trust relationships** を開き、JSON がウィザードと一致していることを確認します。**`AssumeRole`** が失敗する原因は、通常、外部 ID の入力ミスです。
      </Step>
    </Steps>

    <Note>
      [**Iru Compliance**](#iru-compliance) タブに進み、**Role ARN** を貼り付けてウィザードを完了します（[**Iru でロール ARN を送信する**](#submit-the-role-arn-in-iru)）。
    </Note>
  </Tab>
</Tabs>

### トラブルシューティング

<AccordionGroup>
  <Accordion title="ソースをオンにしても何も開かない">
    Iru サイトの**ポップアップブロッカー**の設定を確認してから、もう一度お試しください。
  </Accordion>

  <Accordion title="AssumeRole が拒否される">
    外部 ID が一致していません。余分なスペースが入らないように、Iru からもう一度コピーしてください。
  </Accordion>

  <Accordion title="バケットポリシーの行が表示されない">
    IAM で許可されていても、バケットのリソースポリシーによってクロスアカウントの読み取りが拒否される場合があります。
  </Accordion>

  <Accordion title="暗号化設定が表示されない">
    `s3:GetEncryptionConfiguration` がインラインポリシーに残っていることを確認してください。
  </Accordion>
</AccordionGroup>

### 考慮事項

<CardGroup cols={2}>
  <Card title="バケットはリージョン単位ですが、ListAllMyBuckets は…" icon="circle-info">
    バケットは**リージョン単位**ですが、`ListAllMyBuckets` はグローバルです。インベントリ作成時には、複数のリージョンへの追加の呼び出しが発生することを想定してください。
  </Card>

  <Card title="バケットポリシー内の明示的な Deny ステートメントは…" icon="shield">
    バケットポリシー内の明示的な **拒否** ステートメントは、IAM での許可に関係なく読み取りをブロックします。想定される動作を監査人向けに文書化しておいてください。
  </Card>
</CardGroup>

### 関連記事

<CardGroup cols={2}>
  <Card title="Sources の管理" icon="plug" href="/ja/compliance/sources-management">
    すべての Compliance ソースを参照・管理します。
  </Card>

  <Card title="Compliance の利用を開始する" icon="rocket" href="/ja/compliance/getting-started-with-compliance">
    フレームワーク、アクション、**アーティファクト**。
  </Card>

  <Card title="Iru の概要" icon="layer-group" href="/ja/iru/platform-overview/iru-overview">
    Endpoint、Compliance、Identity がどのように連携するか。
  </Card>

  <Card title="Artifacts の管理" icon="folder-open" href="/ja/compliance/artifacts-management">
    ソースやアクションから得たエビデンスをアップロード、確認、整理します。
  </Card>
</CardGroup>
