GitHub Copilot の監査ログ完全ガイド:Enterprise + Entra SSO 環境で「誰が何を使ったか」を把握する方法


はじめに

こんにちは!GitHub Copilot の Enterprise 展開でコンプライアンスまわりを調べている横浜情報機器株式会社インターン生のロホマン シャヒンです!

RS

ロホマン シャヒン

  • Microsoft Student Ambassador
  • GitHub Copilot User Group Japan 運営
  • Azure Solutions Architect Expert 取得

「Copilot を Enterprise で導入したいけど、誰がどう使っているか分からないと稟議が通らない」という相談を受けることがよくあります。実際に管理画面を触ってみたら、思ったより細かく追えることが分かりました。

「思ったより細かく追える」というのが正直な感想です。


1. 監査の全体像:2 つの系統で把握する

GitHub Copilot の利用状況は、2 つの異なる系統で把握できます。この 2 つをごちゃ混ぜにすると「どこを見ればいいか」が迷子になるので、最初にここを整理するのが大事です。

系統 目的 データの性質
Enterprise Audit Log 設定変更・ライセンス操作の記録 イベントログ(誰が何をしたか)
Copilot Usage Metrics API 機能ごとの利用統計 集計データ(誰が何をどれだけ使ったか)

Audit Log は「シートを誰に付与したか」「ポリシーをいつ変えたか」といった管理操作を追います。保持期間は 180 日。

Usage Metrics API は「コード補完を何回使ったか」「Chat は何人が使っているか」といった実利用データを返します。最大 1 年分の日次データが取得できます。

コンプライアンス監査には Audit Log、利用促進・ROI 計測には Usage Metrics API、という使い分けが現実的です。

GitHub Copilot 監査の全体像:2 系統の役割と使い分け

2. Enterprise Audit Log:管理画面から確認する

アクセス方法

https://github.com/enterprises/{enterprise-slug}/audit-log

または:Enterprise 設定(⚙️アイコン) > Audit log から直接アクセスできます。

Copilot イベントに絞り込む

検索ボックスに以下を入力するだけで Copilot 関連イベントのみ表示されます。

action:copilot

エクスポート

右上の Export ボタンから JSON / CSV 形式でダウンロードできます。スプレッドシートや SIEM に取り込む場合はここから。


3. 主要イベント一覧:何が記録されるか

Copilot 関連で記録される主要イベントをまとめます。コンプライアンス上 「誰がシートを持っているか・いつ変わったか」 を追跡する場合に特に重要なものを太字にしています。

イベント名 記録される内容
copilot.cfb_seat_added ユーザーへのシート付与
copilot.cfb_seat_assignment_created 新規シートアサインの作成
copilot.cfb_seat_assignment_unassigned シートの剥奪・解除
copilot.cfb_seat_management_changed 管理方式の変更(全員付与 ↔︎ 選択制)
copilot.cfb_enterprise_settings_changed Enterprise レベルの機能設定変更
copilot.cfb_org_settings_changed Organization レベルの設定変更
copilot.content_exclusion_changed コンテンツ除外パスの変更
copilot.plan_changed プランの変更(Business → Enterprise など)

プロンプト内容やコーディング内容は記録されません。 Audit Log に残るのはあくまで管理操作とポリシー変更のみです。

Copilot Coding Agent の操作を追跡する

2026年現在、エージェントモードを使う開発者が増えてきています。エージェントが自律的に起こした操作(ファイル変更・コマンド実行など)も Audit Log で追跡できます。

actor:Copilot

で絞り込むと、エージェントが起こしたイベントだけが表示されます。各イベントに actor_is_agent: true フラグと agent_session_id が付いているので、セッション単位でまとめて追跡することも可能です。


4. Copilot 使用状況メトリクス API:誰が何をどれだけ使ったか

事前準備

API を使う前に、Enterprise Settings > AI Controls“Copilot Usage Records API”Enabled everywhere にしておく必要があります。

認証

Personal Access Token(PAT)に以下のスコープが必要です。

  • Classic PAT: manage_billing:copilot または read:enterprise
  • Fine-grained PAT: “View Enterprise Copilot Metrics” 権限
export TOKEN="ghp_XXXXXXXXXXXX"
export ENTERPRISE="your-enterprise-slug"

直近 28 日のユーザー別利用状況を取得する

curl -L \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  "https://api.github.com/enterprises/$ENTERPRISE/copilot/metrics/reports/users-28-day/latest"

ここで少し迷ったのですが、レスポンスはデータ本体ではなく 署名付きダウンロード URL が返ってきます。

{
  "download_links": ["https://...signed-url..."],
  "report_day": "2026-07-20",
  "report_start_day": "2026-06-22",
  "report_end_day": "2026-07-19"
}

URL にアクセスするとユーザー別の利用データ(コード補完回数・Chat 利用数など)を取得できます。

特定日の Org レベル集計

curl -L \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer $TOKEN" \
  "https://api.github.com/orgs/$ORG/copilot/metrics/reports/organization-28-day/latest"

データ起点は 2025 年 10 月 10 日から。それ以前のデータは取得できません。


5. Audit Log Streaming:Azure Event Hubs → Microsoft Sentinel へ転送する

「180 日分しか保持されない」「手動で確認するのは運用上つらい」という場合は、Audit Log Streaming を使って外部 SIEM に流し続けるのが現実的です。

Azure 環境なら Event Hubs → Microsoft Sentinel の構成が一番自然です。

構成イメージ

GitHub Enterprise Audit Log
  ↓ ストリーミング(常時)
Azure Event Hubs
  ↓ データコネクタ
Microsoft Sentinel(分析・アラート・ダッシュボード)
Audit Log Streaming アーキテクチャ:GitHub → Event Hubs → Sentinel

設定手順

① Azure ポータル側の準備

  1. Event Hubs 名前空間を作成(既存のものを流用可)
  2. 名前空間内にイベントハブインスタンスを新規作成
  3. 共有アクセスポリシー > プライマリ接続文字列をコピー

② GitHub 側の設定

  1. Enterprise Settings > Audit log > Log streaming タブ
  2. “Configure stream” → Azure Event Hubs を選択
  3. イベントハブインスタンス名と接続文字列を入力
  4. Check endpoint ボタンで疎通確認 → Save

③ Sentinel への接続

Sentinel ワークスペース > データコネクタ > Azure Event Hubs から接続設定を行います。

注意点:ストリーミングは at-least-once 配信のため、重複イベントが発生することがあります。Sentinel 側でデデュプリケーション処理を入れておくのが無難です。


6. Entra SSO 環境でのユーザー識別

Entra SSO 済みの環境で最初に引っかかったのがここです。Audit Log に記録されるのは GitHub ユーザー名(例: octocat)であって、Entra の UPN(メールアドレス)ではありません。「このイベントを起こしたのは誰か」を特定するには、別途紐付けが必要です。

GUI での確認(個別ユーザー)

  1. Enterprise > People タブ
  2. 対象ユーザーをクリック
  3. 左サイドバーの “SAML identity linked” をクリック
  4. “Linked SSO identity” に Entra UPN が表示される

API での一括取得(SCIM)

一括でマッピングを取得したい場合は SCIM API を使います。

curl -L \
  -H "Authorization: Bearer $TOKEN" \
  "https://api.github.com/scim/v2/enterprises/$ENTERPRISE/Users"

external_identity 情報に Entra 側のオブジェクト ID が含まれているので、これで GitHub ユーザー名 ↔︎ Entra UPN の対応表を作れます。

EMU 環境の場合

EMU(Enterprise Managed Users)を使っている場合は、プロビジョニング時に Entra ↔︎ GitHub が自動的に紐付けられます。SAML linked identity の手動確認は不要で、Entra 側で一元管理できます。

Entra SSO とGitHub ユーザーの紐付け構造

7. まとめ

  • Audit LogUsage Metrics API は別物で、追えるデータが違う
  • Audit Log は action:copilot フィルタで絞り込め、180 日分を GUI または API で確認できる
  • 使用状況(誰が何をどれだけ使ったか)は Usage Metrics API 経由で取得する。事前に “Copilot Usage Records API” を有効化しておくのが必要
  • SIEM 連携は Event Hubs ストリーミング → Sentinel が Azure 環境では自然な構成
  • Entra SSO 済みなら SAML linked identity または SCIM API で GitHub ユーザー名と UPN を紐付けられる
  • Copilot エージェントの操作は actor:Copilot フィルタ + agent_session_id でセッション単位に追跡できる
  • ポリシーの強制まで必要な場合は managed-settings.json(GA済み)で宣言的に設定を配信できる

コンプライアンス要件がある組織なら、Audit Log Streaming は最初から仕込んでおく方がいいです。後から「180 日前のイベントを遡りたい」となっても、保持期間外は戻せません。導入後に慌てて設定する話をちょくちょく聞くので、先に設定しておくのを強くすすめます。

この記事が少しでも参考になったら、ぜひシェアしていただけると嬉しいです!


出典

技術ブログ一覧に戻る