> ## 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 Redshift Data API

> クロスアカウント IAM ロールを使用して、Iru Compliance がクラスターとサーバーレスのワークグループの Redshift Data API のステートメントとスキーマのメタデータを読み取れるようにします。

### Amazon Redshift Data API について

**Data API** は、JDBC シェルを使用せずに**ステートメント**、**データベース**、**スキーマ**、**テーブル**の一覧を公開します。Iru には、**`redshift-data:`** の読み取りアクションに加えて、プロビジョニングされたクラスター用の **`redshift:DescribeClusters`** と、ワークグループが対象となる場合の補助的な **`redshift-serverless:List*`** が必要です。**`AmazonRedshiftDataFullAccess`** は便利ですが、**`ExecuteStatement`** が含まれます。最小権限のためには、以下の**インライン**ポリシーを推奨します。

### 仕組み

Iru は独自の AWS アカウントで稼働しています。お客様に代わって **Redshift Data API** を呼び出すには、お客様の AWS アカウントに 2 つの要素を持つ **IAM ロール**を作成します。1 つは、ウィザードの **External ID** を条件として Iru のプリンシパルが **`sts:AssumeRole`** を呼び出すことを許可する**信頼ポリシー**、もう 1 つは読み取り専用の **`redshift-data:`** アクション(および [**AWS**](#aws) タブのインラインの例にあるように、コネクタが必要とする補助的な **`redshift:`** / **`redshift-serverless:`** の呼び出し)を含む**権限ポリシー**です。その後、ロールの **ARN** を Iru に貼り付けます。

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

### 前提条件

* Redshift のリソースを所有するアカウントで**ロールを作成**できる IAM 権限。

### Amazon Redshift Data を Iru に接続する

<Tabs>
  <Tab title="Iru Compliance">
    <Note>
      まずここから始めます。ソースのウィザードを開き、**信頼ポリシー**をコピーします(**外部 ID** も控えておきます)。AWS でロールを作成する準備ができたら、[**AWS**](#aws) タブに切り替えて [**IAM ロールを作成する**](#create-the-iam-role)の手順に従います。**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="Amazon Redshift Data をオンにする">
        **Amazon Redshift Data** を探します(**カテゴリ** または **名前または説明で検索** を使用します)。そのカードの**トグル**をオンにします。**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) タブに切り替えて [**IAM ロールを作成する**](#create-the-iam-role)の手順に従います。
      </Step>
    </Steps>

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

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

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

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

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

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

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

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

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

      <Step title="推奨のインラインポリシーをアタッチする">
        **インラインポリシー**をアタッチします(最小権限のため、**`AmazonRedshiftDataFullAccess`** よりも推奨されます)。以下の JSON は権限の構成の**例**です。セキュリティチームがアクションの削減を求める場合は調整してください。

        ```json lines theme={null}
        {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Effect": "Allow",
              "Action": [
                "redshift-data:DescribeStatement",
                "redshift-data:DescribeTable",
                "redshift-data:GetStatementResult",
                "redshift-data:ListDatabases",
                "redshift-data:ListSchemas",
                "redshift-data:ListStatements",
                "redshift-data:ListTables"
              ],
              "Resource": "*"
            },
            {
              "Effect": "Allow",
              "Action": [
                "redshift:DescribeClusters",
                "redshift-serverless:ListNamespaces",
                "redshift-serverless:ListWorkgroups"
              ],
              "Resource": "*"
            }
          ]
        }
        ```
      </Step>

      <Step title="ロールに名前を付けて ARN をコピーする">
        ロールに名前を付けて作成し、**Role ARN** をコピーします。[**Iru Compliance**](#iru-compliance) タブに戻り、[**Iru でロール ARN を送信する**](#submit-the-role-arn-in-iru)を完了します。
      </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="DescribeClusters が拒否される">
    **クラスター ID** の解決に必要です。**`redshift:`** のステートメントブロックを追加してください。
  </Accordion>

  <Accordion title="Serverless の欠落">
    **[Amazon Redshift Serverless](/ja/compliance/sources/amazon-redshift-serverless-source)** に従って、**`redshift-serverless:Get*`** を追加してください。
  </Accordion>

  <Accordion title="AssumeRole が拒否される">
    外部 ID が一致していません。
  </Accordion>
</AccordionGroup>

### 関連記事

<CardGroup cols={2}>
  <Card title="AWS Redshift" icon="link" href="/ja/compliance/sources/amazon-redshift-source">
    Compliance で関連するソースを接続して管理します。
  </Card>

  <Card title="Amazon Redshift Serverless" icon="link" href="/ja/compliance/sources/amazon-redshift-serverless-source">
    Compliance で関連するソースを接続して管理します。
  </Card>

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

  <Card title="コンプライアンスの開始" icon="rocket" href="/ja/compliance/getting-started-with-compliance">
    フレームワーク、アクション、**アーティファクト**。
  </Card>
</CardGroup>
