0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OIDCを構成してEntra IDのアカウントでGitHubへログインできるようにする

Posted at

Entra IDの条件付きアクセスを使ってGitHubへのログインを制限する目的で、OIDCを構成する手順を確認しました。公式ドキュメントの手順通りだと一部わかりづらいところがあったため、備忘録として設定手順を残します。

本手順は2025年3月時点で検証したものです。

GitHub Enterpriseのトライアル有効化

Entra IDとOIDCを構成し、SSOするためにはEnterprise Managed Usersを使用します。これにはGitHub Enterpriseの利用が必要です。今回はトライアルで試します。

Enterprise with managed usersのほうの「Get started」を選択します。
01.PNG

必要事項を記入します。Identity providerは「Microsoft Entra ID」を選択します。
02.PNG

初期セットアップ用アカウント(_admin)のパスワード設定や有効化を完了させ、初期セットアップ用アカウントでGitHubへログインします。

GitHub側でOIDCを設定

初期セットアップ用アカウントでGitHubにログインしている状態だと以下の画面になっていると思います。[Identity Provider]を選択し、[Enable OIDC Configuration]をクリックします。
もし、別の画面になっている場合は右上のアカウントアイコンをクリックし、「Your Enterprise」を選択してください。
03.png

Entra IDの認証画面へリダイレクトされます。リダイレクトされたらEntra IDのグローバル管理者権限を持ったアカウントでサインインします。
04.png

以下のような画面が出てくるので、「組織の代理として同意する」にチェックを入れて「承諾」をクリックします。

ドキュメントにはチェックを入れるように書いてあるのですが、検証時にチェックを入れ忘れて進めてしまったため、画面ショットではチェックが外れています。チェックを入れ忘れると各アカウントがGitHubに初回サインインする時に同じ画面が出てくるようになります。エンタープライズアプリケーションのアクセス許可の画面で後から同意を与えることは可能です。

05.png

初期セットアップ用アカウントのリカバリーコードが発行されるので控えておきます。リカバリーコードを控えると「Enable OIDC authentication」が押下できるようになるので、クリックします。
06.png

GitHub側のOIDC設定が完了しました。

07.png

アクセストークンの発行

引き続き、GitHub側で初期セットアップ用アカウントを利用してアクセストークンを発行します。

右上のアカウントアイコンをクリックし、「Settings」を選択します。

08.png

メニューの一番下にある「Developer Settings」を選択します。

09.png

「Tokens (classic) 」> 「Generate new token」 > 「Generate new token (classic)」を選択します。

10.png

Expirationは「No expiration」(無期限)を選択します。

11.png

アクセス権限は「scim:enterprise」にだけチェックを入れましょう。これでトークンを生成します。

12.png

トークンが発行されるので値をコピーして控えておきます。

13.png

Entra ID側での設定

次はEntra ID側で設定します。
Entra IDの画面へ移動し、「エンタープライズアプリケーション」>「GitHub Enterprise Managed User (OIDC)」を選択します。

14.png

左メニューの「管理」 > 「プロビジョニング」を選択します。

15.png

プロビジョニング設定画面に遷移します。
改めて「管理」 > 「プロビジョニング」を選択します。

以下のように指定し、「テスト接続」をクリックします。設定が誤っていなければテスト接続に成功します。

設定項目 設定値
プロビジョニングモード 自動
テナントのURL (※) https://api.github.com/scim/v2/enterprises/{enterprise}
シークレットトークン 事前に作成したアクセストークンを入力

※ {enterprise} は、GitHub Enterpriseを有効にするときに指定した「Enterprise URL slug」になるかと思います。今回の検証ではEnterprise name、Enterprise URL slug、Username shortcodeを全部同じ値にしてしまったので、区別がつかなくなりました…。

※ GHE.com のエンタープライズの場合、「https://api.{subdomain}.ghe.com/scim/v2/enterprises/{subdomain}」 を指定します。こちらは未検証。

16.png

続いて、GitHubへ同期するユーザ・グループを指定します。
「管理」 > 「ユーザとグループ」を選択し、「+ユーザまたはグループの追加」をクリックします。

17.png

同期したいユーザ、グループを指定します。
事前に同期用のグループを作っておいて、そのグループに同期させたいユーザを所属させるのが管理しやすいかと思います。

ロールはGitHub側で割り当てるロールを指定します。
各ロールの説明は エンタープライズにおける役割 を参照してください。

18.png
19.png

ユーザ・グループの指定が完了したら、プロビジョニングを開始します。
「概要」へ移動し、「プロビジョニングの開始」をクリックします。

20.png

少し待つと同期が完了します。

21.png

GitHub側で同期結果を確認

GitHub側で同期が成功したか確認します。
「People」> 「Members」を確認します。
Entra ID側で指定したユーザが同期されていることが確認できると思います。

同期されたユーザは「EntraIDのユーザ名_<組織名>」になっています。ユーザ名に「.」が含まれていると「-」に置換されています。

22.png

GitHubにログイン

GitHubのログイン画面に移動し、同期されたユーザ(ユーザ名_{組織名})を指定します。するとパスワード入力欄がグレーアウトし、「Sign in with your identity provider」というボタンに変わります。このボタンをクリックします。

23.png

「Continue」をクリックします。

24.png

Entra IDの認証画面へリダイレクトされるので、Entra ID側のユーザで認証します。
認証に成功すればGitHubへログインできます。

その他検証して分かったこと

初期セットアップユーザはOIDCの設定以外は何もできないようになっています。初期セットアップユーザではOrganizationを作れません。Enterprise Ownerのロールを割り当ててEntra IDから同期したユーザを利用します。

条件付きアクセスを有効にするには以下の設定から「Identity Provider」を選択すればできそうです。Azure検証環境側の事情で条件付きアクセスを設定できなかったため、現在未検証です。
25.png

参考にした公式ドキュメント

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?