GitHub Enterprise Cloud (通称 GHEC) の data residency のセットアップ方法のメモです。
GHEC data residency がなんなのかというと、日本語では「データ所在地付き GitHub Enterprise Cloud 」とか書かれることが多いですが、データが指定の所在地に保存されることが保証されるプランです。
2026年2月現在は、EU, US, Australia, 日本が選択可能です。
また、ユーザーの管理は EMU (Enterprise Managed User, 組織の管理者が Entra ID や Okta などの IdP でユーザーアカウントを管理する環境) 必須となります。
前提として書いておくと、GHEC data residency は通常の GHEC に比べ機能制限があります。
また、EMU 必須のためその機能制限もあります。そして、微妙にドキュメントがまとまっていないので把握が面倒です。
- マネージド ユーザー アカウントの機能と制限 - GitHub Enterprise Cloud Docs
- GitHub Copilot の Coding Agent も利用不可です。
これらの機能制限は前提として、本気で使うのを検討する際は把握しておいた方がよいです。
ということでここからはセットアップメモを残しておきます。基本的には以下のドキュメントを見つつ、説明不足なところや Entra ID のところは私のメモで補完するのがよいかもです。
Data Rasidency 環境のトライアル申し込み
通常の GHEC のトライアルを申し込む感じで Data residency を申し込めます。私がセットアップした環境は GitHub から払い出していただきましたので (いつもありがとうございます!!)、この手順はやってないので知らんですが、UI を見て進めればさっとできるものなので問題ないでしょう。
アクセストークンの取得
GHEC data residency の Super Admin ができたら、まずはそのアカウントで classic のアクセストークンを作成します。
アカウントの作成は、右上の自身のアバターアイコンをクリック → Settings をクリック→ 左メニューの Depeloper Settings をクリックして Develper Settings の画面を表示します。
その画面で Personal access tokens 配下の Tokens (classic) をクリック → 右上の "Generate new token" をクリック → **Generate new token (classic) をクリックして作成します。

必要な構成は以下です。
- Expiration: No expiration
- Select scope: scim:enterprise があれば OK。


作成したら後ほど使うのでメモしておきましょう。
IdP のセットアップ: Microsoft Entra ID / OIDC 編
私の場合は IdP に Entra ID を使ってセットアップしていきます。
Entra ID を使う場合、SAML or OIDC で接続を選択可能です。OIDC の場合、条件付きアクセスポリシーが自動で適用されるため、Entra ID のライセンスは P1 以上が必要と思われるが、GitHub 側のドキュメントに書いてないのが気になりますがどうなんでしょうか (P1 使ってるから使ってないパターンの検証はしてない...そしでドキュメントでの明記もなかったですが、条件付きアクセスポリシーが必須なので Entra ID の Free プランはだめで SAML でやらなあかんと思ってます) 。
なお、Data residency/EMU の機能制限について前述で言及しましたが、これに加えて Entra ID の条件付きアクセスポリシーを利用するとさらに機能制限の可能性はあるので注意。
Entra ID を使って OIDC で GitHub へ接続
まずは GHEC data residency の環境にログインし、"Identity Provider" をクリックして、Entra ID と接続する流れです。
以下図のように "Enable OIDC configuration" をクリックすると、Entra ID に接続に行きます。
この際、Entra ID にログインしているユーザーは Entra ID の global admin 権限が必要になります。
テナント複数持ってる人は想定外のテナントに接続に行かないように、事前に同じブラウザで対象の Entra ID のテナントに入っておくのがよいです。
よくわからないかたは、シークレットウインドウなどで GHEC data residency と Entra ID にログインした状態で進めるとよいです。

"Enable OIDC configuration" をクリックすると、Azure 使ってる方だと以下のおなじみの画面に遷移しますので、"組織の代理"は有効に "承諾" をクリックします。

これだけでまた GitHub の recovery codes の画面に遷移します。recovery codes は保存しつつ、"Enable OIDC Authentication" をクリックしたら設定完了となります。
内部的には、Entra ID で Enterprise applications で、"GitHub Enterprise Managed Use (OIDC)" が作成されます (Entra ID に慣れてない方だとなんのこっちゃですね...)。

SAML の時よりすごく楽ですね。
ユーザーのプロビジョニング
GHEC と Entra ID の接続ができたら、あとは Entra ID → Enterprise applications の "GitHub Enterprise Managed Use (OIDC)" からユーザーやグループをプロビジョニングします。
準備として、これを操作するユーザーは、Application Administrator, Cloud Application Administrator, or Application Owner のいずれかの role が必要になります。
Azure portal にログインし、Entra ID のリソースを開く → Manage 配下の Enterprise applications を開きましょう。
先ほどできた "GitHub Enterprise Managed Use (OIDC)" をクリックします。app がたくさんある場合は日付でソートするとすぐみつけれます。
これで遷移した画面で、左メニューの Provisioning をクリックします。

遷移した画面で Provisioning ってメニューをクリックして Provisioning の Config を以下の感じで入力します。
- Privisioning Mode: Automatic
- Tenant URL: Data residency の場合こんな感じで入れる。
https://api.{subdomain}.ghe.com/scim/v2/enterprises/{subdomain}- GitHub の URL が
https://ABCD.ghe.com/enterprises/ABCDだったらhttps://api.ABCD.ghe.com/scim/v2/enterprises/ABCD
- Secret token: 前述で作成したアクセストークンを入力します。
- Settings 配下の通知系の設定は必要に応じて行いましょう。
Test Connection をクリックして正常なら入力値が正常なので、画面上部の保存をクリックします。

保存後、Mappings セクションの Provision Microsoft Entra ID Users をクリックします。

Scope セクションを開くと、Scope がデフォルト値の "Sync only assigned user and groups"になっているのはとりあえず確認しておきましょう。
これで、この Enterprise app 内のメニューにある user and groups にアサインされているユーザーのみ同期される設定となります。
下部の Provisioning Status を On にすると同期が始まるので、その前に左メニューの User and goups は確認しておくとよいです。

ということで user や Groups のアサインは、"Users and groups" から、user or group を選択して、role (Billing Manager or Enterprise Onwer or Guest Collaborator or User) を割り当てるだけでできます。


これで最低限のセットアップは完了しましたが、Auto でのプロビジョニング実行は特定サイクルで動作するので、放置して気長にまちましょう。 (検証環境だと待つのがめんどくて、以前の EMU 環境では Manual にしてた...)
ちなみに今回は10分くらい放置したら Provisioning logs が表示されてました。

GitHub 側でも User が provisioning されていることが確認でき、無事にユーザーのプロビジョニングまで完了です。
