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

# HashiCorp Vault

> クライアントトークンと最小権限ポリシーを使用して Vault を Iru Compliance に接続し、マウント、ポリシー、監査構成のエビデンスを収集します。

### HashiCorp Vault について

Iru は Vault HTTP API を使用して、**シークレットエンジンのマウント**、**認証方式の構成**、**名前付きポリシー**、**監査デバイス**、および関連する **sys/** メタデータを読み取ります。各リクエストでは **`X-Vault-Token`** に **クライアントトークン** を送信します。Iru が収集するのは **構成のエビデンス** であり、**シークレットの平文** の値ではありません。

**Vault OSS**、**Enterprise**（ネームスペースには追加のセットアップが必要な場合があります）、**HCP Vault** で動作します。

### 仕組み

```http theme={null}
X-Vault-Token: hvs.xxxxxxxx
```

トークンは任意の Vault **認証方式**（Token、AppRole、LDAP など）から取得できます。ウィザードでは、まず **`vault_addr`**（例: `https://vault.example.com:8200`）を保存してから、トークンを受け付けます。

| 項目 | 値 |
| - | - |
| **カテゴリ** | セキュリティ |
| **認証** | クライアントトークン（`X-Vault-Token`） |

公式リファレンス: [認証の概念](https://developer.hashicorp.com/vault/docs/concepts/auth)、[HTTP API](https://developer.hashicorp.com/vault/api-docs)、[ポリシー](https://developer.hashicorp.com/vault/docs/concepts/policies)、[AppRole](https://developer.hashicorp.com/vault/docs/auth/approle)。

### 前提条件

* **Iru から到達可能な** Vault クラスター（必要に応じてネットワーク / ファイアウォール / PrivateLink）。
* 以下の例のように、読み取り専用の **`sys/`** アクセス権を持つ **ポリシー** と **トークン**（または AppRole）を作成する権限。

### 読み取り専用ポリシーの例（HCL）

`.hcl` ファイルとして保存し、**`vault policy write iru-compliance your-file.hcl`** で適用します。

```hcl lines theme={null}
path "sys/mounts" {
  capabilities = ["read", "list"]
}
path "sys/auth" {
  capabilities = ["read", "list"]
}
path "sys/policy" {
  capabilities = ["read", "list"]
}
path "sys/policies/acl/*" {
  capabilities = ["read", "list"]
}
path "sys/audit" {
  capabilities = ["read", "list"]
}
path "auth/token/lookup-self" {
  capabilities = ["read"]
}
```

### HashiCorp Vault を Iru に接続する

#### ポリシーを適用してトークンを発行する

<Steps>
  <Step title="Vault CLI にアクセスできるワークステーションを準備する">
    TLS 経由で **`VAULT_ADDR`** に到達でき、**Vault CLI**（`vault` バイナリ）がインストールされている踏み台ホストまたは管理用ワークステーションを使用します。
  </Step>

  <Step title="CLI を Vault に認証する">
    以降のコマンドがポリシーの書き込みとトークンの作成に十分な権限で実行されるよう、組織でサポートされている方法（**`vault login`**、OIDC など）でサインインします。
  </Step>

  <Step title="ポリシーファイルを作成する">
    上記のポリシーの例を、そのマシン上に `.hcl` ファイル（例: `iru-compliance.hcl`）として保存します。
  </Step>

  <Step title="Vault でポリシーを適用する">
    ポリシーファイルのパスを指定して **`vault policy write iru-compliance`** を実行します。
  </Step>

  <Step title="更新可能なトークンを作成する">
    そのポリシーにバインドされた **更新可能な** トークンを作成します（例: **`vault token create -policy=iru-compliance -ttl=720h -renewable=true`**）。**`hvs.`** のトークン値をコピーします。
  </Step>

  <Step title="本番環境では AppRole を推奨">
    本番環境では、有効期間の長い静的トークンではなく、**AppRole** などの自動化されたフローを推奨します。
  </Step>
</Steps>

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

  <Step title="サーバー変数を構成する">
    **`vault_addr`**（例: `https://vault.example.com:8200`）を入力し、求められたらサーバー変数を確認します。
  </Step>

  <Step title="Vault トークンを貼り付ける">
    求められたら、**`X-Vault-Token`** フィールドにトークンを貼り付けます。
  </Step>

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

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

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

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

  <Accordion title="サーバー変数が失敗する">
    ソースを切り替えてウィザードを更新し、**`vault_addr`** を再入力してください。
  </Accordion>

  <Accordion title="403 permission denied">
    トークンに **`iru-compliance`** ポリシーをアタッチしてください。**Enterprise のネームスペース** も確認してください。
  </Accordion>

  <Accordion title="トークンの有効期限切れ">
    新しいトークンを発行して Iru を更新してください。**更新** を有効にするか、AppRole によるローテーションを使用してください。
  </Accordion>

  <Accordion title="Connection refused">
    ホスト名、ポート（**8200**）、TLS、および Iru からのアウトバウンド経路を確認してください。
  </Accordion>

  <Accordion title="503 sealed">
    テストする前に Vault を **Unseal** してください。
  </Accordion>
</AccordionGroup>

### 考慮事項

<CardGroup cols={2}>
  <Card title="Vault Enterprise のネームスペースでは、パスや…" icon="circle-info">
    Vault **Enterprise** の **ネームスペース** では、このベースライン以外のパスや設定が必要になる場合があります。Vault の管理者と調整してください。
  </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>
