Microsoft Entra ID のユーザーとグループを Cloud Identity に同期して SSO する
こんにちは、クラウドエース SRE ディビジョンの小田です。
昨今便利な Web サービスが増えてきましたが、それぞれのサービスにログインするためのログイン情報を管理が手間がかかります。それぞれのサービスにログインするのではなく、一度だけログインすればすべてのサービスを利用できるとしたらどうでしょうか。これは Single Sign-On (以下、SSO) と呼ばれる仕組みで、今回は Microsoft Entra ID を Idp、Cloud Identity を SP としてユーザーとグループのプロビジョニングと SSO を実現するための環境構築手順について解説します。
この記事を読めば、以下のようなことがわかると思います!
- Microsoft Entra ID と Cloud Identity それぞれのサービスでどういった設定が必要なのか
- Microsoft Entra ID と Cloud Identity のプロビジョニングと SSO がどういった動作をするのか
Google Cloud 公式ドキュメント
何が嬉しいのか
Microsoft Entra ID を現在利用している企業が、新たに Cloud Identity を導入しようとすると
ユーザーは新たに ID とパスワードを覚える必要があり、 管理者もアカウントの払い出しなどの業務が発生します。
社員数が少ない場合は管理が行き届くかもしれませんが、 何百何千のユーザーがいると管理が行き届かなくなります。
既に利用している Microsoft Entra ID からアカウント情報を Cloud Identity にプロビジョニングすることでアカウントを払い出す手間が省けます。
また、SSO を設定することで Cloud Identity へ個別にログインする必要がなくなります。
プロビジョニングと SSO を設定することで、管理者は Microsoft Entra ID でユーザーを管理することに専念できますし、
ユーザーも新たに ID とパスワードのペアを覚える必要がなく Cloud Identity を利用できるようになります。
用語
-
Microsoft Entra ID (旧 Azure Active Directory ) と Cloud Identity はクラウドベースの ID およびアクセス管理サービスです
-
IdP (Identity Provider)
ユーザーの認証情報を保存・管理するサービス(本記事では Microsoft Entra ID)
SAML 認証における認証情報の提供役として機能します -
SP (Service Provider)
SAML 認証でユーザーがアクセスを試みるサービス(本記事では Cloud Identity)
SP は、ユーザーが誰であるかを確認するために、IdPにリクエストを送ります
この記事のゴール
Microsoft Entra ID と Cloud Identity の 2 か所で ID を管理し、個別にログインをしなくて良い状態にする
- Microsoft Entra ID テナントの対象のグループとその所属ユーザーを Cloud Identity にプロビジョニング(同期)する
- Microsoft Entra ID 上でユーザーの管理操作(作成、変更、削除)が Cloud Identity 側にも反映される
- Google アカウントに Microsoft Entra ID の資格情報を利用し、 SSO できる
- 条件付きアクセスで、特定のIPアドレス範囲を利用している時のみ Google アカウントへの SSO を許可する
SAML 認証フロー
SAML 認証には IdP が起点となる Idp initiated と、SP が起点となる SP initiated の 2 つ方法があります。
以下は本記事で構築する環境における SAML 認証フローを示しています。
IdP initiated Flow
SP initiated Flow
必要なもの
- ドメイン (Microsoft Entra ID と Cloud Identity の構築に必要)
- Microsoft Entra テナント
-
Microsoft Entra ID P1 以上のライセンス
(Microsoft Entra ID P1/P2、Enterprise Mobility + Security E3/E5、Microsoft 365 E3/E5 など)
※本記事は試用版の Microsoft Entra ID P2 を利用しています- ライセンスは [アプリケーションへのグループ割り当て] 、[条件付きアクセス] 機能を利用するため
-
Microsoft Entra ID P1 以上のライセンス
- Cloud Identity の環境
- Free Edition で SSO 、プロビジョニングの設定が可能
設定
Microsoft Entra テナント と Cloud Identity の環境は既に作成済みの状態から設定を始めます。
-
Microsoft Entra テナント の作成方法
-
Clud Identity の作成方法
Cloud Identity で Microsoft Entra ID プロビジョニング用ユーザーの作成
Microsoft Entra ID プロビジョニング用のユーザーは自動プロビジョニング以外使用されないので、 新しく組織部門 (OU) を作成して環境を分離します。
Cloud Identity の管理コンソールで、
[ディレクトリ] > [Organizational units] > [組織部門を作成] を選択します。
本記事では以下のように設定しました。名前は好みに応じて変更可能です。
- 名前: Automation
- 説明: Automation users
[ディレクトリ] > [ユーザー] > [新しいユーザーを追加] を選択します。
プロビジョニングに使うユーザーを作成します。
本記事では以下のように設定しました。
- 姓: Provisioning
- 名: Azure AD
- メインのメールアドレス: azuread-provisioning
- 組織部門: 先ほど作成した Automation を指定
- Password: 自動生成または、お好みのパスワードを作成
作成したユーザーの詳細画面で、[管理者のロールと権限] > [ロールの割り当て] を選択します。
このユーザーを介して Microsoft Entra ID の全てのユーザー・グループできるようにするため、今回は [特権管理者(Super Admin)] を付与します。
※特権管理者は強い権限を持っているため、特に注意して管理する必要があリます。
Microsoft Entra ID でプロビジョニング用のエンタープライズ アプリケーションを作成する
グローバル管理者権限を持つユーザーで Azure ポータル にログインします。
- [Microsoft Entra ID] > [エンタープライズ アプリケーション] > [新しいアプリケーション] を選択します。
[Google Cloud / G Suite Connector by Microsoft] を探して選択します。
エンタープライズ アプリケーションに名前を設定し、作成します。
-
名前: Google Cloud (Provisioning)
[Google Cloud (Provisioning)] > [管理] > [プロパティ] を選択します。
ユーザーやグループを同期にはサインオンや割り当ては不要であるため、以下の内容を設定します。
- [ユーザーのサインインが有効になっていますか?] を [いいえ]
- [割り当てが必要ですか?] を [いいえ]
- [ユーザーに表示しますか?] を [いいえ]
[管理] > [プロビジョニング] > [作業の開始]
[プロビジョニング モード] を [自動] に変更します。
[承認する] をクリックするとGoogle アカウントのログインのポップアップが表示されます。
Microsoft Entra ID プロビジョニング用に作成した Cloud Identity のアカウントにログインし、利用規約に同意します。
[理解しました] をクリック
[許可] をクリック
[テスト接続] を行います。
正常に認証されている場合、以下のような"指定した資格情報にはプロビジョニングを有効にする権限があります"という通知が表示されます。
プロビジョニングするための設定は完了したため、続いて Microsoft Entra テナント内のユーザーアカウントと Cloud Identity のユーザーアカウントを紐づけるためのマッピングを設定します。
[マッピング] > [Provision Azure Active Directory Users]
以下の設定を行います。
- surname の [null の場合の規定値 (オプション)]: _
- givenname の [null の場合の規定値 (オプション)]: _
Cloud Identity にプロビジョニングする対象のユーザーやグループを選択します。
[管理] > [ユーザーとグループ] > [ユーザーまたはグループの追加] を選択
※エンタープライズ アプリケーションにグループを割り当てるには、 Microsoft Entra ID P1 以上が必要です。
事前に用意した、admin と google-sso-group という Microsoft 365 グループを選択しています
Microsoft 365 グループについては、こちらの Microsoft 公式ドキュメントに従って作成してください。
グループについてもマッピングを設定します。
[マッピング] > [Provision Azure Active Directory Groups]
[属性マッピング] > [mail] を選択
Microsoft 365 グループのドメインは onmmicrosoft.com という形式になっていますが、 Cloud Identity には onmmicrosoft.com のドメインのメールアドレスを登録できないため、以下のように変換する必要があります。
DisplayName@xxx.onmicrosoft.com ⇨ DisplayName@<xxx.co.jp
Cloud Identity に登録できるように式マッピングで変換する設定を行います。
- マッピングの種類: 式
- 式 : Join("@", NormalizeDiacritics(StripSpaces([displayName])), "<ドメイン>")
プロビジョニングを開始する
割り当てを行ったユーザーを Cloud Identity プロビジョニングします。
自動プロビジョニングを有効にする。
[管理] > [プロビジョニング] > [プロビジョニング状態] を [オン]
Cloud Identity 側に同期されたか確認する
Cloud Identity のディレクトリで確認すると対象グループに所属しているユーザー "test 01" と "test 02" が作成されたことがわかります。
グループについても割り当てを行ったグループが登録されていることが確認できます。
また、グループのメールアドレスは onmmicrosoft.com から ca-oda-test.xxx に変換されて登録されていることが確認できました。
Microsoft Entra ID で SSO 用のエンタープライズ アプリケーションを作成する
シングルサインオン用にもう一つエンタープライズ アプリケーションを作成します。
[Microsoft Entra ID] > [エンタープライズ アプリケーション] > [新しいアプリケーション] > [Google Cloud / G Suite Connector by Microsoft]
エンタープライズ アプケーションに名前をつけ、作成をクリックします。
- 名前: Google SSO
[管理] > [プロパティ] にアクセスし、シングルサインオン用のエンタープライズ アプリに以下を設定します。
- [ユーザーのサインインが有効になっていますか?] を [はい]
- [割り当てが必要ですか?] を [はい]
- [ユーザーに表示しますか?] を [はい]
- ※[はい]にすると My Apps に表示されます。
SSO を許可するユーザーとグループを割り当てます。
[管理] > [ユーザーとグループ] > [ユーザーを追加] > [ユーザーとグループ]
SAML を構成します。
[管理] > [シングル サインオン] > [SAML] を選択します。
[基本的な SAML 構成] > [編集]
各項目を入力します。
- 識別子(エンティティ ID): google.com
- 応答 URL (Assertion Consumer Service URL): https://www.google.com/
- サインオン URL: https://www.google.com/a/<ドメイン>/ServiceLogin?continue=<ログイン後アクセスするサービスのURL>
- ※Google Cloud Consoleの例: https://www.google.com/a/ca-oda-test.xxx/ServiceLogin?continue=https://console.cloud.google.com/
SAML アサーションに利用する証明書をダウンロードします。
[管理] > [シングル サインオン] > [SAML] > [SAML 証明書]
証明書 (Base64)のダウンロードをクリックします。
ログイン URL をメモしておきます。
[Google Cloud のセットアップ]
ユーザーのマッピング設定を行います。
[属性とクレーム] > [編集]
今回はデフォルトの UPN マッピングを利用するため、
[追加の要求] で表示されているすべてのクレームを削除します。
設定後一位のユーザー ID user.userprincipalname だけが表示されている状態になります。
条件付きアクセスで特定の IP アドレスからの SSO のみ許可する設定を行う
シングルサインオンをした際に接続元の IP アドレスを確認し、許可していない IP アドレスからは SSO できないように SSO 用エンタープライズ アプリケーションに条件付きアクセスポリシーを設定します。
[Azure Portal] > [ネームド ロケーション] にアクセスし、IP 範囲の場所を作成します。
名前には任意の名前を入力し、
今回は、IPv4範囲としてオフィスの IP アドレスを指定します。
SSO 用エンタープライズアプリ適応する条件付きアクセスポリシーを作成します。
Microsoft Entra ID > エンタープライズ アプリケーション > Google SSO > 条件付きアクセス、新しいポリシーをクリックします。
名前には任意の名前を入力。
ユーザーの設定
- 対象: ユーザーとグループの選択
- 選択: 対象のグループを選択
ターゲット リソース
- 対象: アプリを選択
- 選択: Google SSOを選択
条件を設定します。
- 場所を選択
- 対象: すべての場所を選択
- 対象外: 選択された場所
- 選択: 作成したネームド ロケーションを指定
アクセス制御を設定します。
- 許可: アクセスのブロックを指定
設定後、ポリシーの有効化をオンにして作成します。
Cloud Identity 側にも SSO の設定を行う
Microsoft Entra ID 側の設定は完了したので、続いてCloud Identity 側の設定を行います。
特権管理者ユーザーでログインし、 [セキュリティ] > [認証] > [サードパーティの IdP による SSO] > [SSO プロファイルを追加] を選択します。
組織向けのサードパーティの SSO プロファイルに以下のように設定します。
- [サードパーティの ID プロバイダで SSO を設定する] を [有効]
- [ログインページの URL]: Microsoft Entra ID の [Google Cloud のセットアップ] に記載されている [ログイン URL] を入力
- ログアウト ページの URL: https://login.microsoftonline.com/common/wsfederation?wa=wsignout1.0
- パスワード変更用 URL: https://account.activedirectory.windowsazure.com/changepassword.aspx
- [確認用の証明書]: Microsoft Entra ID でダウンロードした証明書 (Base64)をアップロード
プロビジョニングに利用するユーザーは、SSO を利用しないため、SSO プロファイルの割り当てを解除します。
[セキュリティ] > [認証] > [サードパーティの IdP による SSO] >
[SSO プロファイルの割り当ての管理] > [管理] > [使ってみる] を選択
[Automation] の組織部門(OU)を選択して、[SSO プロファイルの割り当て] を [なし] にする
SSO の動作確認を行います。
SSO の動作について簡単にいくつかのケースを試してみます。
テストケース一覧
- テストケース 1: IdP Initiated(IdP を起点とした SSO) の動作
- テストケース 2: SP Initiated(SP を起点とした SSO) の動作
- テストケース 3: SSO のエンタープライズ アプリケーションがユーザーに割り当てられていない場合の動作
- テストケース 4: SSO のエンタープライズ アプリケーションに適応されている、条件付きアクセスによってアクセスがブロックされる場合の動作
テストケース 1
IdP Initiated(IdP を起点とした SSO) の動作
- プロビジョニング 用エンタープライズ アプリケーション、SSO 用エンタープライズ アプリケーション それぞれが割り当てられている Microsoft Entra ID のアカウントでログインしている状態
- My Apps にアクセスし、 Google Cloud のアイコン(SSO ログイン用 URL)をクリック
[後で尋ねる]をクリック
SSO で Cloud Identity アカウントにログインしました。また、設定した通り Google Cloud コンソールのページに自動的に遷移しました。
テストケース 2
SP Initiated(SP を起点とした SSO) の動作
- プロビジョニング 用エンタープライズ アプリケーション、SSO 用エンタープライズ アプリケーション それぞれが割り当てられている Microsoft Entra ID のアカウントでログインしている状態
- SSO ログイン用 URL を利用せず Google のページからログイン
ログインをクリック
このログイン画面では SSO 用のログイン URL とは異なり、ドメインが指定されていないため Google アカウントの入力を求められました。
メールアドレスを入力し次へを選択します。
入力したメールアドレスはマッピングされているため、Microsoft Entra ID の資格情報の画面に遷移し、パスワードの入力はせずにログインできました。
SSO ログイン用 URL を利用していないため、Google Cloud コンソールには遷移していません。
テストケース 3
SSO のエンタープライズ アプリケーションがユーザーに割り当てられていない場合の動作
- SSO アプリケーションが割り当てられていない Microsoft Entra ID のアカウントでログインしている状態
- SSO ログイン用 URL からログインを試みる
アプリへのアクセスを許可(割り当て)されてないため、ブロックされたというメッセージが出ました
エラー AADSTS50105
テストケース 4
SSO のエンタープライズ アプリケーションに適応されている、条件付きアクセスによってアクセスがブロックされる場合の動作
- プロビジョニング 用エンタープライズ アプリケーション、 SSO 用エンタープライズ アプリケーション それぞれが割り当てられている Microsoft Entra ID のアカウントでログインしている状態
- 許可されていない場所の IP アドレスを利用
- SSO ログイン用 URL からログインを試みる
このリソースへのアクセス条件を満たしていないと言うメッセージが出ました。
メンテナンスについて
SSO を運用していく上で必要なメンテナンス作業について記載します。
SAML 証明書の更新
SAML に利用している証明書には有効期限があるため、有効期限が切れる前に更新を行う必要があります。
Azure Portal で作成できる証明書は最大で 3 年の有効期間です。
以下のような手順で証明書の更新を行います。
[Azure ポータル] > [Microsoft Entra ID] > [エンタープライズ アプリケーション] > [Google SSO] エンタープライズ アプリケーション を選択します。
[シングル サインオン] > [SAML 証明書] から証明書の更新を行います。
[新しい証明書] を選択し、[保存] を選択します。
新しく作成された証明書に対して [証明書をアクティブにする] を選択します。
[Base64 証明書のダウンロード] を選択し、証明書をダウンロードします。
続いて、Cloud Identity 側にダウンロードした新しい証明書をアップロードします。
[Cloud Identity の管理コンソール] > [セキュリティ] > [認証] > [サードパーティの IdP による SSO] > [組織むけのサードパーティの SSO プロファイル] を選択します。
[証明書を更新] を選択し、ダウンロードした証明書をアップロードします。
[保存] を選択します。
以上で証明書の更新が完了です。
プロビジョニング、 SSO を行いたいユーザーを増やす
プロビジョニング、 SSO を行いたいユーザーを増やしたい場合、以下の方法で行うことができます。
- エンタープライズ アプリケーション にすでに割り当てられているグループに、そのユーザーを追加する。
- エンタープライズ アプリケーション に新しくプロビジョニング、 SSO を行いたいユーザーが所属しているグループを割り当てる
まとめ
本記事では、Microsoft Entra ID から Cloud Identity にユーザーとグループのプロビジョニングを行い、シングルサインオンを行えるようにする方法について説明しました。
この機能を利用することで Microsoft Entra ID でアカウント情報を使って組織の Google Cloud アカウントを簡単に用意できます。
既に Entra ID をお使いの方で、これから Google Cloud を利用しようと検討している方にとっても手がかりになるかと思いますので、ぜひお試しください。
Discussion