> ## 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.

# Snowflake

> キーペア JWT 認証と ACCOUNT_USAGE へのアクセス権を使用して Snowflake を Iru Compliance に接続し、ロールの付与、ユーザー、データガバナンスのエビデンスを収集します。

### Snowflake について

Iru は、主に **`SNOWFLAKE.ACCOUNT_USAGE`** ビューを通じて、Snowflake から**ウェアハウスとアカウントの使用状況**、**データベース/スキーマのメタデータ**、**ロールと権限付与**、**ログイン/クエリ履歴**を収集します。認証には**キーペア認証**を使用します。これは、**RSA 秘密鍵**で署名された有効期間の短い **JWT** を、Iru が使用する Snowflake **ユーザー**に登録された**公開鍵**で検証する方式です。

### 仕組み

```http lines theme={null}
Authorization: Bearer YOUR_SIGNED_JWT
X-Snowflake-Authorization-Token-Type: KEYPAIR_JWT
```

JWT の有効期間は**短く** (約 **60 秒**)、Iru は構成されたキーとアカウントの詳細を使用して JWT を再生成します。

| 詳細 | 値 |
| - | - |
| **カテゴリ** | データベース |
| **認証** | キーペア JWT |

公式リファレンス: [Key-pair authentication](https://docs.snowflake.com/en/user-guide/key-pair-auth)、[Account identifiers](https://docs.snowflake.com/en/user-guide/admin-account-identifier)、[REST API](https://docs.snowflake.com/en/developer-guide/snowflake-rest-api/snowflake-rest-api)、[ACCOUNT\_USAGE](https://docs.snowflake.com/en/sql-reference/account-usage)。

### 前提条件

* 専用のサービスユーザーに **`RSA_PUBLIC_KEY`** を割り当てるための **`SECURITYADMIN`** (または同等) の権限。
* **2048 ビット** (またはそれ以上) の RSA キーペアを生成するための **OpenSSL** (または別のツール)。
* **アカウント識別子** (`orgname-accountname` を推奨。必要に応じてリージョン/クラウド付きのレガシーロケーター)。

### Snowflake を Iru に接続する

<Tabs>
  <Tab title="Snowflake">
    <Note>
      Compliance でソースを接続する前に、このタブの手順を完了してください。
    </Note>

    <Steps>
      <Step title="Snowflake の管理者アクセス権を確認する">
        インテグレーションユーザーに対して **`ALTER USER`** および **`GRANT`** ステートメントを実行できるように、**`SECURITYADMIN`** (または同等) で Snowsight またはクラシックコンソールにサインインします。
      </Step>

      <Step title="安全なワークステーションを準備する">
        **OpenSSL** (またはセキュリティチームが承認した別の RSA ツール) を備えた信頼できるマシンを使用します。**`snowflake_private_key.pem`** は Vault にのみ保管してください。git にコミットしたり、Snowflake サポートに送信したりしないでください。
      </Step>

      <Step title="RSA キーペアを生成する">
        OpenSSL を使用した例:

        ```bash lines theme={null}
        openssl genrsa -out snowflake_private_key.pem 2048
        openssl rsa -in snowflake_private_key.pem -pubout -out snowflake_public_key.pem
        ```

        **`snowflake_private_key.pem`** を保護してください。コミットしたり、Snowflake と共有したりしないでください。
      </Step>

      <Step title="Snowflake ユーザーに公開鍵を登録する">
        管理者として、**`snowflake_public_key.pem`** から PEM ヘッダーと改行を取り除いて base64 の本文のみを残し、次を実行します:

        ```sql theme={null}
        ALTER USER YOUR_USERNAME SET RSA_PUBLIC_KEY='YOUR_PUBLIC_KEY';
        ```

        Snowflake では、ローテーション用にユーザーごとに **2 つ**のキー (`RSA_PUBLIC_KEY` / `RSA_PUBLIC_KEY_2`) を設定できます。新しいキーを **`RSA_PUBLIC_KEY_2`** に割り当て、Iru を更新してから、古いキーを削除してください。
      </Step>

      <Step title="ウィザード用の JWT を生成する">
        **Snowflake CLI** またはライブラリを使用します。例:

        ```bash lines theme={null}
        snow connection generate-jwt \
          --account YOUR_ACCOUNT_IDENTIFIER \
          --user YOUR_USERNAME \
          --private-key-path snowflake_private_key.pem
        ```

        最初の Iru ハンドシェイク用に JWT 文字列をコピーします。その後の再生成は製品内で処理されます。
      </Step>

      <Step title="ACCOUNT_USAGE へのアクセス権を付与する">
        インテグレーションユーザーには、**`SNOWFLAKE`** の共有メタデータを読み取れるロールが必要です。例:

        ```sql lines theme={null}
        GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE YOUR_ROLE;
        GRANT ROLE YOUR_ROLE TO USER YOUR_USERNAME;
        ```
      </Step>
    </Steps>

    <Note>
      [**Iru Compliance**](#iru-compliance) タブに進みます。
    </Note>
  </Tab>

  <Tab title="Iru Compliance">
    <Note>
      先に [**Snowflake**](#snowflake) タブの手順を完了してください。
    </Note>

    <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="Snowflake をオンにする">
        **Snowflake** を見つけます (**カテゴリ** または **名前または説明で検索** を使用します)。そのカードで**トグル**をオンにします。コネクタウィザード用のブラウザタブまたはウィンドウが開く場合があります。
      </Step>

      <Step title="ウィザードでアカウントとホストを入力する">
        アカウントに一致するホストパターンを選択します:

        * 標準: `https://YOUR_ACCOUNT_IDENTIFIER.snowflakecomputing.com`
        * **PrivateLink**: `https://YOUR_ACCOUNT_IDENTIFIER.privatelink.snowflakecomputing.com`

        **`account_identifier`** を入力し、続行する前にサーバー変数を確認します。
      </Step>

      <Step title="JWT を貼り付ける">
        プロンプトが表示されたら、**JWT** を貼り付けます。
      </Step>

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

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

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

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

  <Accordion title="サーバー変数でエラーが発生する">
    ウィザードのセッションの有効期限が切れています。ソースをオフにしてからオンにし、再試行してください。
  </Accordion>

  <Accordion title="JWT の検証エラー / 401">
    **`DESCRIBE USER`** を実行して、フィンガープリントが一致していること、および秘密鍵が登録済みの公開鍵とペアになっていることを確認してください。
  </Accordion>

  <Accordion title="アカウント文字列が間違っている">
    **`org-account`** 形式を推奨します。レガシーロケーターでは**リージョン/クラウド**のサフィックスが必要な場合があります。
  </Accordion>

  <Accordion title="PrivateLink">
    Iru の送信トラフィックがエンドポイントに到達できることを確認し、必要に応じて許可リストに追加してください。
  </Accordion>

  <Accordion title="ACCOUNT_USAGE がない">
    Iru のロールに **`SNOWFLAKE`** に対する **`IMPORTED PRIVILEGES`** を付与してください。
  </Accordion>
</AccordionGroup>

### 考慮事項

<CardGroup cols={2}>
  <Card title="Iru がテーブルに対して任意のクエリを実行することはありません…" icon="circle-info">
    Iru がテーブルに対して任意のクエリを実行することは**ありません**。ガバナンス関連のメタデータと使用状況ビューを読み取ります。
  </Card>
</CardGroup>

### 関連記事

<CardGroup cols={2}>
  <Card title="ソース管理" 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="アーティファクト管理" icon="folder-open" href="/ja/compliance/artifacts-management">
    ソースとアクションから得たエビデンスをアップロード、確認、整理します。
  </Card>
</CardGroup>
