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

# GitHub

> 個人用アクセストークンを使用して GitHub を Iru Compliance に接続し、リポジトリのインベントリ、ブランチ保護、組織メンバーシップ、監査ログを収集します。

### GitHub について

**GitHub** コネクタは、**GitHub 組織** からリポジトリのメタデータ、ブランチ保護、チームメンバーシップ、組織の設定、監査ログ、および関連するセキュリティ構成を読み取ります。これらのデータは Iru Compliance にアーティファクトとして表示され、アクションやコントロールにマッピングできます。この連携は **読み取り専用** です。Iru は、付与したスコープで GitHub API が許可する範囲を超えて、プルリクエストを作成したり、設定を変更したり、リポジトリを変更したりすることはありません。

### 仕組み

Iru は、**Bearer** トークンとして送信される **個人用アクセストークン（PAT）** を使用して GitHub REST API を呼び出します:

```http theme={null}
Authorization: Bearer github_pat_XXXX
```

**Fine-grained PAT**（推奨）では、リポジトリと権限を細かくスコープできます。**Classic PAT** も機能しますが、範囲が広く、最小権限にするのが難しくなります。

組織で **SAML SSO** が適用されている場合は、PAT を作成した後に組織に対して **承認** する必要があります。承認しないと、組織レベルのデータに対する API 呼び出しが失敗します。

| 項目 | 値 |
| - | - |
| **カテゴリ** | 開発者ツール |
| **認証** | Bearer トークン（Fine-grained または Classic PAT） |
| **GitHub プラン** | GitHub Free、Team、Enterprise に対応（GitHub 自体の API および監査ログの提供状況による） |

公式リファレンス: [個人用アクセストークンの管理](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)、[REST 認証](https://docs.github.com/en/rest/authentication/authenticating-to-the-rest-api)、[レート制限](https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api)。

### 前提条件

* Iru に読み取らせる組織のメンバー（またはオーナー）としての GitHub アクセス権。
* 監査ログや組織全体のセキュリティ設定が必要な場合は、その組織の **所有者** アクセス権（コンプライアンスプログラムの要件によります）。
* 以下の表に沿った **読み取り** 権限を持つ PAT（Fine-grained PAT の例）。

**Fine-grained PAT の最小権限（一般的な例）**

| 領域 | 権限 |
| - | - |
| **Repository** | **Contents**（読み取り）、**Metadata**（読み取り）、**Administration**（読み取り） |
| **組織** | **Members**（読み取り）、**Administration**（読み取り） |

コントロールで追加の読み取りスコープが必要な場合にのみ、権限を引き上げてください。

### GitHub を Iru に接続する

#### Fine-grained 個人用アクセストークンを作成する

<Steps>
  <Step title="Developer settings を開く">
    GitHub にサインインします。プロフィール画像 → **設定** → **Developer settings** → **Personal access tokens** → **Fine-grained tokens** を選択します。
  </Step>

  <Step title="新しいトークンを作成する">
    **Generate new token** を選択します。
  </Step>

  <Step title="名前、有効期限、リソーススコープを設定する">
    わかりやすい **名前**（例: **Iru Compliance**）と **有効期限** を設定します（Fine-grained PAT は最長 **366 日** まで設定できます。早めにローテーションできるようリマインダーを設定してください）。組織レベルのデータが必要な場合は、**Resource owner** で **組織** を選択します。**Repository access** では、**All repositories** またはコンプライアンスの対象となるリポジトリのみを選択します。
  </Step>

  <Step title="リポジトリと組織の権限を設定する">
    **アクセス許可** で、上記の **前提条件** に記載されているリポジトリと組織の **読み取り** 権限を少なくとも有効にします。
  </Step>

  <Step title="トークンを生成してコピーする">
    トークンを生成し、すぐにコピーします。トークンは一度だけ表示されます。
  </Step>

  <Step title="SAML SSO 用に承認する（必要な場合）">
    組織で **SAML SSO** を使用している場合は、**設定** → **Developer settings** → **Personal access tokens** を開いてトークンを見つけ、**Configure SSO** を選択して組織に対して **Authorize** します。
  </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="GitHub をオンにする">
    **GitHub** を探します（**カテゴリ** または **名前または説明で検索** を使用します）。そのカードで **トグル** をオンにします。新しいタブでコネクタウィザードが開きます。
  </Step>

  <Step title="個人用アクセストークンを貼り付ける">
    Bearer トークンのステップが表示されたら、**Token** フィールドに PAT を貼り付けて送信します。
  </Step>

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

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

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

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

  <Accordion title="401 Unauthorized">
    PAT が完全にコピーされていること、有効期限が切れていないこと、取り消されていないことを確認してください。
  </Accordion>

  <Accordion title="組織データが表示されない">
    組織全体を読み取るには、PAT の **リソースオーナー** が個人アカウントだけでなく組織である必要があります。必要に応じて新しい PAT を作成してください。
  </Accordion>

  <Accordion title="SSO が必要">
    PAT を SAML SSO 用に承認してください（**Fine-grained 個人用アクセストークンを作成する** を参照）。
  </Accordion>

  <Accordion title="Resource not accessible by PAT">
    コントロールに必要なリポジトリと組織の権限を付与して PAT を再生成してください。
  </Accordion>

  <Accordion title="レート制限">
    認証済みの REST リクエストは GitHub のレート制限を共有します（GitHub のドキュメントを参照）。Iru はこの制限内で処理をバッチ化しますが、継続的な急増があると同期が遅れる場合があります。
  </Accordion>
</AccordionGroup>

### 考慮事項

<CardGroup cols={2}>
  <Card title="最小限のスコープで Fine-grained PAT を推奨…" icon="circle-info">
    コントロールを満たす範囲で、リポジトリのセットと読み取りスコープを最小限にした **Fine-grained PAT** を推奨します。
  </Card>

  <Card title="有効期限前に PAT をローテーションし、コネクタを更新…" icon="shield">
    エビデンスの収集が停止しないよう、有効期限前に PAT をローテーションしてコネクタを更新してください。
  </Card>

  <Card title="Iru は公開されているメタデータと構成を読み取り…" icon="server">
    Iru は、許可した API によって公開されているメタデータと構成を読み取ります。組織で適用されている GitHub の権限を回避することはありません。
  </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>
