Microsoft EntraでGitHub Enterprise Managed Userを自動プロビジョニングする設定と注意点

Microsoft Entra IDでGitHub Enterprise Managed User(EMU)の自動ユーザープロビジョニングを使う場合、最初に確認すべき結論は「対象がEMUであること」「SAML SSOとSCIMの前提が整っていること」「小さな範囲で同期を検証してから本番展開すること」です。今回の公式情報は、GitHub EMUに対してMicrosoft Entra IDからユーザーとグループを自動作成・更新・無効化するための設定手順を整理したものです。公式ページは2026年5月26日に更新されており、管理者は変更点だけでなく、トークン、スコープ、属性マッピング、削除防止、監視ログまで確認しておく必要があります。(Microsoft Learn)

特に注意したいのは、この手順が通常のGitHub Enterprise Account向けではなく、GitHub Enterprise Managed User向けである点です。Microsoft Learnでも、EMUは通常のGitHub Enterprise Accountとは異なる種類であり、該当しない場合は別のプロビジョニング手順を参照するよう案内されています。既存のGitHub Enterprise環境にそのまま適用できるとは限らないため、設定前に自社のGitHub契約形態とID管理方式を確認しましょう。(Microsoft Learn)

目次

Microsoft Entraのセキュリティ更新として確認すべき影響範囲

今回の内容は、CVE対応のような脆弱性修正というより、Microsoft Entra IDとGitHub Enterprise Managed Userを連携する際のIDライフサイクル管理を安全に運用するための設定確認と捉えるのが実務的です。

Microsoft Entraのプロビジョニングサービスを設定すると、GitHub Enterprise Managed Userに対して以下の処理を自動化できます。公式情報では、ユーザー作成、不要になったユーザーの削除、ユーザー属性の同期、グループとグループメンバーシップのプロビジョニング、SSO、長期Bearerトークン認証のサポートが示されています。(Microsoft Learn)

確認対象影響を受ける人確認すべき内容
Microsoft Entra ID管理者エンタープライズアプリ、割り当て、属性マッピングの管理者GitHub EMU用アプリ、プロビジョニングスコープ、削除防止、通知メール
GitHub Enterprise管理者EMU、SAML SSO、SCIM設定の管理者Tenant URL、SCIMトークン、setup user、組織・チーム管理方針
セキュリティ担当者退職者・異動者のアクセス削除を管理する担当者無効化・削除時の挙動、監査ログ、隔離状態、トークン管理
開発チーム責任者GitHub上のチームやリポジトリアクセスを運用する担当者グループ同期、ネストされたグループの扱い、メールアドレス変更の影響

Microsoft Entra IDのアプリプロビジョニングは、SaaSアプリ側にユーザーIDやロールを自動作成し、ユーザーの状態やロール変更に応じてIDの保守・削除も行う仕組みです。手作業のアカウント作成や退職者削除に依存している環境ほど、設定ミスがセキュリティリスクにつながりやすくなります。(Microsoft Learn)

2026年5月26日の公式更新で見ておきたい変更点

公開履歴から確認できる主な更新点は、2026年5月26日にドキュメントの日付が更新され、同日にnational cloudsの記載が共通includeに置き換えられていることです。GitHub上の履歴では、ms.date03/09/2026から05/26/2026へ変更され、national cloudの表がinclude参照に変更されています。(GitHub)

また、直前の2026年5月18日の変更では、Capabilities Supportedに「Long lived bearer token authentication supported.」が追加されています。現在のMicrosoft Learn上でも、GitHub Enterprise Managed Userの対応機能として長期Bearerトークン認証のサポートが掲載されています。(GitHub)

変更・確認ポイント実務上の意味管理者が取るべき対応
更新日が2026年5月26日に変更公式手順として参照すべき最新版であることを確認できる古い手順書や社内Runbookとの差分を確認する
national cloudの記載整理利用可能なクラウド環境を確認する重要性が高いGlobal、US Government、China operated by 21Vianetの対応状況を確認する
長期Bearerトークン対応の記載SCIM認証に使うトークンの運用が重要になるトークンの保管、権限、ローテーション、失効手順を決める
+ New configurationを使う構成手順Entra管理センターのUIに沿った設定が前提旧UI前提の社内手順を見直す
削除防止と通知メールの設定誤った大量削除や同期異常に気づくための保険本番開始前に必ず有効化し、通知先を共有メールにする

national cloudについて、Microsoft Learnの該当ページではGlobal serviceとUS Governmentにチェックがあり、China operated by 21Vianetは空欄として表示されています。一方で、GitHub DocsではGovernment Cloud環境におけるIdPギャラリーアプリの検証・サポート範囲に注意する記載もあります。米国政府系クラウドで使う場合は、Microsoft側の対応状況だけでなく、GitHub側のサポート範囲も事前に確認してください。(Microsoft Learn)

自動プロビジョニングで実現できること

この連携の目的は、Microsoft Entra IDを起点にGitHub Enterprise Managed Userのユーザーライフサイクルを自動化することです。設定後は、Microsoft EntraプロビジョニングサービスがGitHub EMUに対してユーザーやグループを作成し、不要になったユーザーやグループを削除または無効化し、属性を同期します。(Microsoft Learn)

実務では、次のような場面で効果があります。

シーン手作業運用の課題自動プロビジョニングの効果
新入社員・新規開発者の参加GitHubアカウント作成やチーム追加が遅れるEntra IDの割り当てに基づいてGitHub側へ反映できる
部署異動・プロジェクト変更古いリポジトリアクセスが残りやすいグループや属性の変更に応じてアクセス管理を更新しやすい
退職・契約終了GitHub側の削除漏れが発生しやすいEntra ID側の無効化・割り当て解除を起点にアクセスを外せる
監査対応誰がいつ作成・削除されたか追跡しづらいプロビジョニングログで作成、更新、削除、無効化の状態を確認できる

GitHub側のEMUでは、IdPがユーザーアカウントをプロビジョニングし、ユーザーはIdPで認証してGitHubのエンタープライズリソースにアクセスします。ユーザー名、プロフィールデータ、組織メンバーシップ、リポジトリアクセスもIdP側から管理する設計です。(GitHub Docs)

設定前に満たすべき前提条件

Microsoft Learnの手順では、Microsoft Entraテナント、Application Administrator・Cloud Application Administrator・Application Ownerのいずれかのロール、Microsoft Entraテナントを使ったSAML SSO設定済みのGitHub Enterprise Managed Users環境が前提とされています。(Microsoft Learn)

特に重要なのは、GitHub.comとGHE.comでTenant URLが異なる点です。公式手順では、GitHub.comの場合は次の形式を使います。

https://api.github.com/scim/v2/enterprises/{enterprise}

GHE.comの場合は次の形式です。

https://api.{subdomain}.ghe.com/scim/v2/enterprises/{subdomain}

Secret Tokenには、enterpriseのsetup userで作成したscim:enterpriseスコープ付きトークンを入力します。Tenant URLやトークンが誤っていると、Test Connectionや初回同期で失敗します。(Microsoft Learn)

前提確認チェックリスト

確認項目OKの判断基準よくある失敗
GitHubの種類GitHub Enterprise Managed Userである通常のGitHub Enterprise AccountにEMU用手順を適用しようとする
SSO方式Microsoft EntraテナントでSAML SSOが構成済みOIDC用チュートリアルとSAML用チュートリアルを混同する
Entra管理者権限Cloud Application Administratorなど必要なロールがある権限不足でProvisioning設定や属性マッピングを変更できない
Tenant URLGitHub.comまたはGHE.comに合うSCIM URLを使う{enterprise}{subdomain}を誤って入力する
Secret Tokenscim:enterpriseスコープ付きトークンを使う個人用トークンのスコープ不足、期限切れ、保管場所不明
通知先隔離や失敗通知を受け取れるメールアドレスを設定個人メールだけを設定し、担当変更後に通知を見落とす

設定手順は「小さく検証してから開始」が基本

公式手順では、まずプロビジョニング展開を計画し、誰をプロビジョニング対象にするか、どのデータをMicrosoft Entra IDとGitHub Enterprise Managed Userの間でマッピングするかを決める流れになっています。その後、アプリケーションギャラリーからGitHub Enterprise Managed Userを追加し、対象ユーザーやグループのスコープを定義します。(Microsoft Learn)

本番運用で安全に進めるなら、次の順序で進めるのが現実的です。

フェーズ実施内容成功条件
計画対象ユーザー、グループ、属性、除外条件を決める「誰がGitHubに作成されるか」を説明できる
接続準備Tenant URLとSecret Tokenを用意するTest Connectionが成功する
パイロット1〜2名または小規模グループで検証するGitHub側に想定通り作成・更新される
属性確認userName、externalId、email、displayNameなどを確認する重複、空値、意図しない変更がない
削除検証割り当て解除や無効化時の挙動を確認する退職・異動時の運用手順が明確になる
本番開始Start Provisioningを実行するログ、進行状況、通知先を監視できる

公式手順でも、最初から全社展開せず、小さなユーザーやグループでテストしてから範囲を広げることが推奨されています。スコープを「assigned users and groups」にすれば、対象者をアプリへの割り当てで制御できます。(Microsoft Learn)

スコープ設計で失敗しやすいポイント

プロビジョニングのスコープは、ユーザーやグループの割り当て、または属性ベースのスコープフィルターで制御します。Microsoft Entra IDがソースシステムの場合、ユーザーとグループの割り当てで対象を決める方法が一般的で、同期対象が多いほど同期に時間がかかるため、対象を絞ることが推奨されています。(Microsoft Learn)

注意すべきなのは、スコープフィルターを保存すると新しいフル同期が開始される点です。以前は対象内だったユーザーがフィルター変更によって対象外になると、アプリ側で無効化またはデプロビジョニングされる可能性があります。条件を少し変えるだけでも影響が大きいため、本番環境では事前に対象者リストを確認してから保存しましょう。(Microsoft Learn)

スコープフィルターでは、単一フィルター内の複数句はAND、複数フィルターはORとして評価されます。また、IsMemberOf、グループのmembers属性、複数値属性のフィルタリングはサポートされていないため、グループ条件を複雑に組みすぎる設計は避けるべきです。(Microsoft Learn)

おすすめのスコープ設計例

段階対象設計例
検証IT管理者と数名の開発者github-emu-pilotのような検証用グループを割り当てる
部門展開特定部門の開発者部門グループを割り当て、必要に応じて属性フィルターを追加する
全社展開GitHub利用対象者全体全員ではなく、GitHub利用者グループを明示的に管理する
除外管理休職者、外部委託、監査用アカウントEntra ID側の属性や専用グループで除外条件を定義する

「全社員を同期してからGitHub側で権限を絞る」よりも、「GitHubを使う人だけをEntra ID側で対象にする」方が、安全で監査しやすい設計になります。

属性マッピングで確認すべき項目

公式手順では、Attribute Mappingでユーザー属性とグループ属性を確認し、更新処理で使うMatching propertyを確認するよう案内されています。Matching target attributeを変更する場合は、GitHub Enterprise Managed User APIがその属性でフィルタリングできることを確認する必要があります。(Microsoft Learn)

現在の公式ページでは、ユーザーとグループの両方でexternalIdがフィルタリング対応として示されています。一方、userNamedisplayNameemails[type eq "work"].valueなどは同期属性として表示されていますが、フィルタリング対応欄にはチェックがありません。(Microsoft Learn)

属性用途注意点
externalIdEntra IDとGitHub側アカウントの照合Matching propertyとして特に慎重に扱う
userNameGitHub側ユーザー名に関わる属性変更や重複があるとユーザー体験に影響しやすい
active有効・無効状態退職、休職、割り当て解除の運用ルールと合わせる
displayName表示名日本語名、英字名、表記揺れを事前に確認する
emails[type eq "work"].value業務用メールアドレスメール変更時の影響を開発者へ説明しておく
group displayNameGitHub側グループ表示チーム名・部署名の命名規則と合わせる
group membersグループメンバーシップEntra IDのネストされたグループには注意する

GitHub Docsでは、EMUのプロフィール名とメールアドレスはIdPから提供され、管理対象ユーザーはGitHub上でプロフィール名やメールアドレスを変更できないと説明されています。また、IdP側でユーザーのメールアドレスを変更すると、古いメールアドレスに関連付いたコントリビューション履歴との紐づきが外れる可能性があります。開発者への影響が大きいため、メールアドレス変更の運用ルールは事前に周知しましょう。(GitHub Docs)

さらに、GitHub DocsではEntra IDがネストされたグループのプロビジョニングをサポートしないことも明記されています。GitHubのチームやリポジトリアクセスをグループで自動管理する場合は、ネスト構造に依存せず、同期対象のフラットなグループを用意するのが安全です。(GitHub Docs)

トークン管理は「動けばよい」で終わらせない

今回の公式手順では、Secret Tokenとしてscim:enterpriseスコープを持つトークンを使うことが示されています。長期Bearerトークン認証のサポートも記載されていますが、長期トークンは便利な一方で、漏えい時の影響範囲が大きくなります。(Microsoft Learn)

運用では、最低限次のルールを決めておきましょう。

項目推奨される運用
保管場所個人メモやチケット本文ではなく、組織のシークレット管理基盤に保管する
所有者個人ではなく、GitHub EMU管理チームまたはIAM管理チームで管理する
ローテーション定期変更の頻度と、変更時のTest Connection手順をRunbook化する
失効手順漏えい・退職・管理者変更時に誰がどこで無効化するか決める
監査いつ、誰が、どの目的でトークンを更新したか記録する

長期Bearerトークンに対応していることは、長期間放置してよいという意味ではありません。同期停止を恐れてローテーションしない運用は、結果的に大きなセキュリティリスクになります。

誤削除を防ぐ設定と監視のポイント

公式手順では、プロビジョニング構成を作成した後、Propertiesで通知メールを有効化し、隔離メールを受け取るメールアドレスを設定し、accidental deletions preventionを有効化する流れが示されています。これは本番展開前に必ず確認すべき項目です。(Microsoft Learn)

Microsoft Entraのオンデマンドプロビジョニングは、ユーザーやグループを数秒でプロビジョニングし、構成問題のトラブルシュート、式の検証、スコープフィルターのテストに使えます。いきなりStart Provisioningを押すのではなく、まずオンデマンドプロビジョニングで少数ユーザーを検証しましょう。(Microsoft Learn)

本番開始前の確認手順

手順確認内容失敗時に見る場所
Test ConnectionTenant URLとSecret TokenでGitHubに接続できるかAdmin credentials、Token、SCIM URL
On-demand provisioning1名または小規模グループで想定通り同期されるかProvision on demandの詳細ステップ
属性確認GitHub側のユーザー名、表示名、メールが想定通りかAttribute Mapping
削除防止誤った大量削除を防ぐ設定が有効かProvisioning Properties
通知隔離やエラー通知が届くかNotification Email
ログ確認Create、Update、Disable、Deleteの状態を追えるかProvisioning logs

プロビジョニングログでは、Identity、Action、Source System、Target System、Statusなどを確認できます。ActionにはCreate、Update、Delete、Disable、StagedDeleteなどがあり、StatusにはSuccess、Failure、Skipped、Warningが表示されます。(Microsoft Learn)

Quarantine状態を放置しない

Microsoft Entraのプロビジョニングサービスは構成の正常性を監視し、多くの呼び出しが継続的に失敗すると、アプリケーションをquarantine状態にします。quarantine中は増分サイクルの頻度が徐々に下がり、最終的に1日1回になります。4週間を超えてquarantineが続くと、プロビジョニングジョブが無効化されます。(Microsoft Learn)

quarantineの原因としては、認証情報の不正、SCIM準拠の問題、失敗率が高すぎる状態などがあります。Microsoft Learnでは、40%を超えるプロビジョニングイベント失敗や40,000件を超える失敗などが、quarantine判定の例として説明されています。(Microsoft Learn)

quarantineを避けるには、通知メールだけに頼らず、次のような運用を用意しておくと効果的です。

監視項目見るべきサイン対応
失敗件数の急増FailureやWarningが急に増える直近の属性変更、グループ変更、トークン変更を確認
Test Connection失敗GitHubへの認証に失敗するSecret Token、Tenant URL、setup userを確認
Skipped増加対象外や条件不一致が増えるスコープフィルターや割り当て条件を見直す
DeleteやDisableの増加想定以上のユーザーが無効化されるすぐにスコープ変更履歴と削除防止設定を確認
quarantine通知同期頻度低下やジョブ停止の前兆原因を修正し、次回同期で復旧を確認

移行・展開時に注意すべきこと

既存環境からGitHub Enterprise Managed Userへ移行する場合、単にMicrosoft Entra ID側でアプリを追加すれば完了するわけではありません。GitHub EMUは、ユーザーのライフサイクルと認証をIdPから管理する仕組みであり、ユーザーはIdPで認証してGitHubのエンタープライズリソースにアクセスします。(GitHub Docs)

特に、SSOとSCIMで異なるIdPを組み合わせる設計には注意が必要です。GitHub Docsでは、認証とプロビジョニングの両方に単一のpartner IdPを使うと構成を簡素化でき、GitHubのサポート対象としても扱いやすいと説明されています。さらに、OktaとEntra IDをSSOとSCIMで組み合わせる構成は明示的にサポートされていません。(GitHub Docs)

移行時の判断基準

判断ポイント推奨判断
既存GitHubアカウントをそのまま使いたいEMUの制約と移行方式をGitHub側ドキュメントで確認する
SAMLとOIDCのどちらを使うか迷う今回の手順はSAML前提のGitHub Enterprise Managed User向けとして確認する
複数IdPを使っている認証とプロビジョニングのIdPを分けない設計を優先する
グループ階層が深いネストされたグループに依存しないGitHub同期用グループを作る
メールアドレス変更が多いコントリビューション履歴への影響を事前に説明する
退職者処理を自動化したい割り当て解除、無効化、削除防止、ログ確認まで一連の手順にする

開発者にとって大きいのは、アカウントがIdP管理になる点です。ユーザー名、プロフィール、メールアドレス、所属、アクセス範囲がGitHub上で自由に変更できるものではなくなります。導入前に「何が自動管理されるのか」「どの変更は申請が必要なのか」を開発チームへ共有しておくと、導入後の問い合わせを減らせます。

管理者が今すぐ確認すべき設定チェックリスト

最後に、既存環境と新規導入環境のどちらでも確認しやすいよう、実務用チェックリストに整理します。

タイミング確認項目完了の目安
導入前GitHub Enterprise Managed User環境である標準GitHub Enterprise向け手順と混同していない
導入前SAML SSOがMicrosoft Entraテナントで構成済みEMUユーザーがIdP認証でGitHubへアクセスできる
導入前Tenant URLがGitHub.comまたはGHE.comに合っているTest Connectionが成功する
導入前scim:enterpriseスコープ付きトークンを用意したSecret Tokenとして安全に登録できる
パイロット小規模ユーザーでオンデマンドプロビジョニングを実行したGitHub側のユーザー・属性・グループが想定通り
パイロットスコープフィルターと割り当てを確認した意図しないユーザーが対象に入っていない
本番前accidental deletions preventionを有効化した誤削除対策を設定済み
本番前quarantine通知メールを設定した個人ではなく運用チームで受信できる
本番後provisioning logsを定期確認するFailure、Warning、Skippedの増減を追える
本番後トークン更新手順をRunbook化したローテーション時に同期停止を最小化できる

次に取るべき対応

Microsoft Entra IDとGitHub Enterprise Managed Userの自動プロビジョニングは、GitHubアカウント管理を効率化するだけでなく、退職者や異動者のアクセス削除を確実にするための重要なセキュリティ設定です。一方で、スコープや属性マッピングを誤ると、意図しないユーザー作成、アクセス付与、無効化が発生します。

まずは、自社環境がGitHub Enterprise Managed Userであること、SAML SSOとSCIMの前提が整っていること、Tenant URLとscim:enterpriseトークンが正しいことを確認してください。そのうえで、検証用グループを使ってオンデマンドプロビジョニングを実行し、属性、グループ、削除時の挙動、ログ、通知メールまで確認してから本番展開するのが安全です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次