Entra IDアカウントでGoogle WorkspaceにSSO連携してみた
前回の記事では、Microsoft Azure Entra ID⇒Google Workspaceとを同期させてユーザの自動追加を実現しました。一方で、ID管理の主体がAzure側のADことEntra IDにあるので、そちらで同じ独自ドメインを設定し、SSO(シングルサインオン)にてGoogle Workspaceに入れたら便利だなということで、挑戦してみました。
Google Workspace Business Standard + Azure Entra IDでSAML認証を仕掛けて、SSOでログイン出来るようにしてみます。通常のSAML認証でアプリ追加よりかなり手間と難易度があります。
目次
今回利用するサービス
Google Workspace側に余分なアカウント枠はない状態なので、Cloud Identity Freeを利用しています。予め、GWS側およびEntra ID側に同じアカウント(アドレス)を持ったユーザが存在しておく必要があります。
今回は単純にSAML認証でGWS側にログインできるようにするだけで、自動的にアカウントをAzure側からプロビジョニングして同期するような処理のパターンではありません。
事前準備
自分の場合、Azure Entra ID側に独自ドメイン設定を入れずに運用(onmicrosoft.com)だったので、まずは独自ドメインを追加し、ユーザアカウントを作成しといった事前準備が必要です。ドメイン運用はさくらインターネットを利用してるのでその事例で解説します。
独自ドメイン設定
独自ドメインにてEntra ID側にアカウントを作成できるようにする必要があります。GWS側にはonmicrosoft.comでアカウントが作れるわけではないので、同じ独自ドメインでアカウントが連携できるようにする必要がある為です。以下の手順でドメインの追加作業を行います。
- Microsoft Entra 管理センターにログインする
- 左サイドバーの中にある設定を開いて、ドメイン名をクリックします。
- 出てきたメニュー上部の「カスタムドメインの追加」をクリックします。
- 右パネルに入力欄が現れるので、自身が保有するドメインを入力して、ドメインの追加をクリックします。
- レコードの種類という表示の画面に遷移します。今回はMicrosoft側でメールを使える必要はないので、TXTレコードだけ見ます(MXレコードは必要ありません)。
- レコードの種類はTXT、ホスト名は@、宛先または参照先のアドレスの値を控えて、TTLの値を控えておきます。
図:カスタムドメインをまず追加する
図:DNS設定を控えておく
DNSレコードを設定する
前述で控えておいたDNSレコードの値をさくらインターネットのドメインのゾーンに追加します。
- 会員メニュートップを開きログインします。
- 左サイドから契約中のドメイン一覧をクリックします。
- 自身の今回利用するドメインのwhois情報をクリックします。
- さくらのドメインをクリックし、対象ドメインのゾーンをクリックします。
- DNSレコード編集画面になるので、ページ中盤にある編集ボタンをクリックします。
- 以下のようにデータを入力し追加をクリックします。
12345エントリ名:@タイプ:TXTデータ:"MS=ms12345678"TTLの指定:チェックするTTLの値:3600
データはダブルコーテーションで括っての入力が必要で、ここが「宛先または参照先のアドレスの値」となります。 - 保存をクリックする
- ちょっとだけ待ってから、Entra ID 管理センターの画面を開きます。
- 対象のドメインの確認を実行して確認済みになったら成功です。
図:DNSレコードの追加の様子
Entra IDでアカウントを作成する
独自ドメインでMicrosoftアカウントを作成出来るようになったので、Entra IDに入って独自ドメインにてアカウントを作成します。
- Entra IDのトップ画面に入ります。
- 左サイドバーのユーザをクリックし、右パネルの上部にある「新しいユーザ」をクリック⇒新しいユーザの作成をクリックします。
- ユーザプリンシパル名がアカウント名となり、後ろのプルダウンから追加した独自ドメインが選択出来るようになっています。
- 表示名、パスワードを入力しレビューと作成をクリックする
- 作成をクリックします。
- 一度画面をリロードして、作成したユーザの中身を見ます。
- プロパティの編集を開いて、名と姓を入力し、保存してあげます
図:アカウント作成画面
Google Workspace側で組織部門とユーザを作成する
今回、Microsoft側で作成したユーザでもってGoogle Workspace側にSSOログインさせるために、以下の手順で新しく組織部門を作成して、そこにCloud Identity Freeのユーザを作成します。
- 管理コンソールにログインする
- 左サイドパネルのディレクトリ⇒組織部門をクリックする
- 組織部門の作成をクリックして、親ドメインにぶら下がる形で「microsoft」という組織部門を作成します。
- 左サイドパネルからユーザをクリックして、作成したmicrosoft組織部門をクリック、新しいユーザーの追加をクリック
- 名、姓、Microsoft側と同じメールアドレスとしてユーザを追加します。
図:作成した組織部門に対象ユーザを登録する
注意点
Google Workspaceに対するサードパーティIdPによるシングルサインオンではいくつかの注意点があります。
- Google Workspaceの特権管理者アカウントについては、SSOが適用出来ません。
- デフォルトでは一般ユーザアカウントに対してはGoogle Workspace側の二段階認証設定はバイパスされて適用されません。特権管理者に対しては設定してる場合は適用されます(前述のようにSSOが適用されないため)。
- よって組織部門を全く分けず、二段階認証を設定してる場合のSSOでは特権管理者に対してのみ二段階認証が適用されます。
- ただし、二段階認証の追加の設定を行うことで一般ユーザアカウントに対しても二段階認証を適用させることが可能です。
二段階認証の追加の設定は、以下の手順でセットすることが可能です
- 管理コンソールにログインする
- 左サイドバーよりセキュリティ⇒認証⇒ログイン時の本人確認を開く
- 適用する組織部門をクリックする
- 組織の SSO プロファイルを使用してログインするユーザーの設定に於いて、今回のケースならば「ログインに不審な点がある場合は、Google から追加の本人確認を求め、常に 2 段階認証プロセスのポリシーを適用する(設定している場合)」をチェック
- 保存をクリックする
これでSSOでログイン時でもGoogle Workspace側での二段階認証要求がなされます。
図:SSO後も二段階認証要求するようにセット
SAML認証の設定
前述までの段階で、Azure Entra IDおよびGoogle Workspace両サイドに同一のアドレスのユーザアカウントが作成出来ています。しかし現時点ではそれぞれでログインが必要でそれぞれでパスワードも異なるといった状況になっています。これを解消する為に、SAML認証の設定を行います。
Entra ID側でSSOの設定を行う
Entra ID側のアカウントを使って、Google Workspace側へSAML認証でログインするようにするために、以下の手順を行います。
- Azure Entra IDのトップ画面を開く
- 左サイドバーの下のほうにある「エンタープライズアプリケーション」をクリックする
- 上部にある「新しいアプリケーション」をクリックする
- Microsoft Entra ギャラリーを参照すると出てくるので、「Google Cloud Platform」をクリックする
- Google Cloud / G Suite Connector by Microsoftが出てくるのでクリックする
- 右サイドパネルの作成をクリックします。名前は適当につけます。
- しばらくすると、アプリが作成されて概要画面が出てきます。
- 左サイドバーの「シングルサインオン」を開きます。
- シングル サインオン方式の選択では、「SAML」を選択します。
- 基本的な SAML 構成の鉛筆マーク(編集)をクリックする
- 入力欄の値は以下のように今回は入力します。
12345678910111213//識別子 (エンティティ ID)google.com/a/ドメイン名https://google.com/a/ドメイン名https://google.comgoogle.com//応答URLhttps://www.google.com/a/ドメイン名/acshttps://www.google.com/acs//サインオンURLhttps://www.google.com/a/ドメイン/ServiceLogin?continue=ログイン後に表示するURL例:https://www.google.com/a/hogehoge.com/ServiceLogin?continue=https://console.cloud.google.com
識別子は既定にチェックを入れる。
応答URLは追加をクリックして、値を入力する。
サインオンURLは、例にもあるようにドメインとサインオン後表示するGoogleアプリのURLを指定(今回は、Cloud IdentityなのでGoogle Cloud Consoleのアドレスを指定してみた) - 保存をクリックする
- サインオンをテストと出てきますがここではとりあえずスルーするので、いいえをクリック
※古いAAD Graphという謎のアプリケーションが残っていてこれが原因でSSOが出来なかったので削除しました。思わぬものが障害になることがあるのでキレイな環境で構築をオススメします。
図:GCPを選択する
図:SAMLを選択する
図:SAMLの各種設定を追加
属性とクレーム
属性とクレームの編集画面に入る。そこで「追加の要求」にいくつか列挙されていますが、こちらは全部削除します。必要ありません。SAML認証するにあたって必要なのはメアド(ユーザプリンシパル)だけで、他が含まれているとそれらも完全一致しないとエラーとなるためです。
また、Entra ID側でユーザプリンシパルネームとGWS側のドメインが異なる場合には例えばuser.emailなどに変更してメアドで一致が出来るのであれば、そちらを一意のユーザ識別子として指定しても問題ありません。
セカンダリドメインでアカウントが作成されてる場合などは要注意ポイントです。必ず双方一致する部分を要求します。
図:最低限の属性のみにする
証明書の取得とGoogle側用のセットアップ情報
次に作業の流れで証明書とGoogle Workspace側でセットアップするための情報を取得します。
- SAML 証明書の項目の中にある証明書(Base64)をクリックしてダウンロードする(cerファイルが手に入る)
- さらにその下のxxxのセットアップにあるうち、ログインURLだけをコピーしておきます。
図:ファイルとログイン情報を手に入れる
SSO適用するユーザを追加する
エンタープライズアプリケーションで作成したアプリの概要に戻り、このアプリを適用するユーザを追加します。
- 左サイドパネルから「ユーザとグループ」を開く
- 上部からユーザまたはグループを追加をクリックする(ちなみにグループを指定するにはMicrosoft Entra ID P1 以上のライセンスが必要です)
- ユーザの下の選択されていませんをクリックする
- ユーザを検索して、選択のチェックを入れて選択をクリックします。(今回Entra IDに作成したアカウントを指定)
- 割り当てをクリックする
- これで対象ユーザはSSOログインでGWSへログインする準備が整いました。
図:適用ユーザを追加する必要がある
図:ユーザを追加する
ユーザのサインインを有効化する
最期にユーザのサインインを許可してあげます。これを行わないとEntra ID側でSSOが有効化されません。
- エンタープライズアプリケーションのシングルサインオンの概要画面に戻ります。
- 左サイドバーのプロパティを開きます。
- ユーザのサインインが有効になっていますか?を「はい」に変更
- 下の方の割り当ておよびユーザに表示するについても「はい」に変更
- 上部にある保存をクリックする
これでMicrosoft側のSSOが有効化されました。
図:これ忘れてSSOが効かなかった・・・
Google Workspace側設定
前述までに入手したファイルと情報をもってして、Google Workspace側でサードパーティIDプロバイダの設定を行います。
- 管理コンソールにログインする
- 左サイドパネルからセキュリティ⇒認証⇒サードパーティの IdP による SSOを開きます。
- 組織向けのサードパーティの SSO プロファイルをクリックする
- サードパーティの ID プロバイダで SSO を設定するにチェックを入れる
- ログインページの URLにEntra IDで入手したログインURLを入力
- ログアウトページのURLには「https://login.microsoftonline.com/common/wsfederation?wa=wsignout1.0」を入力する。GWS側ログアウトしたら連動してMicrosoftアカウントもログアウトしたくない場合は、社内イントラのトップページなどを入れておくと良いでしょう。
- 証明書をアップロードをクリックし、入手したCERファイルを指定してアップロードする
- ドメイン固有の発行元を使用にチェックを入れる
- パスワード変更用URL欄は、「https://account.activedirectory.windowsazure.com/ChangePassword.aspx」を入力
- 保存をクリックする
- SSOの設定画面に戻って、次に組織部門またはグループ向けの SSO プロファイルの割り当てを管理の中の「使ってみる」をクリック
- 組織部門選択画面になるので、ルートのドメインを選択してこちらは「なし」を選択して保存する(後述の注意事項を参照。ルートの場合は全ユーザが対象になります)
- 作成したmicrosoft組織を選択して、こちらは「組織向けのサードパーティの SSO プロファイル」を指定してオーバーライドをクリックする
もし、GWS側だけでローカルでログインするアカウントがある場合、ローカルでログインする組織部門とEntra IDで同期する組織部門とを分ける必要があります。組織部門を指定しないで同期してしまうと、ドメイン直下にすべてのユーザがすべてぶら下がってしまい、サードパーティIdPの設定が全ユーザに適用されてしまいます。
故に、組織部門をわけて同期をかけるようにし、その組織部門にだけ今回のサードパーティIdPの設定をし、もう一つの組織部門は設定をしないようにする必要があります。
図:SSOプロファイルの作成画面
図:適用する組織部門を選択
SAML認証の証明書の更新
SAML認証でアップロードした証明書は、デフォルトの有効期限が発行してから3年間となっています。よって、証明書期限が切れる前に更新する必要があります。
Azure Entra IDのエンタープライズアプリケーション⇒シングルサインオンの画面に於いて、SAML 証明書に編集があるので、これをクリックすると証明書の新規発行パネルが右サイドに出てくるので、新しい証明書をクリックして発行し、Google Workspace側にアップロードし直して更新が必要です。
証明書は発行直後は非アクティブなので、「…」をクリック後にアクティブにするをクリックすることで使えるようになります。
図:証明書の更新画面
SSOログインテスト
さて、ここまででMicrosoft側もGoogle Workspace側も準備が完了してるので、Microsoftアカウントを持ってしてログインしてGoogle Workspace側のサービスにアクセス出来るかをテストします。こんがらがって勘違いしないように、シークレットウィンドウで作業をします。
- Google Chromeを起動して、右上の「︙」⇒新しいシークレットウィンドウをクリック
- 「https://myapplications.microsoft.com/」にアクセスする
- Microsoftサインイン画面が出るので、Entra IDで作成したアカウントでログインする
- アクションが必要の二段階認証はとりあえずスルーします。
- サインイン状態を維持はチェックを入れて取り敢えず進みます。
- アプリダッシュボードが現れて、Google Cloud Connectのアイコンのものが出てるのでクリックする。
- Googleのログイン画面が出ることなくログイン処理が実行されて、Google Cloud Consoleの画面にログインした状態で遷移しました。
これで、Entra ID側でアカウントとパスワードを一元管理した状態で、Google Workspaceを利用できるようになりました(GWS側はSAML認証でパスワードレスで入れます)
※ちなみにGCP側でログアウトすると、Microsoftアカウント側もログアウトするようになっています。
※Chromeで対象アカウントをプロファイル追加した際も、きちんとMicrosoftログイン画面が出て、プロファイル追加が出来ました。
図:作成したアプリが出てきた
関連リンク
- Google Workspace と Azure AD を統合して、 Google Workspace にシングル サインオン (SSO) できる環境を一から構成する
- Microsoft Entra ID のユーザーとグループを Cloud Identity に同期して SSO する
- Microsoft Entra ID でのカスタム ドメイン名の管理
- アプリの登録に対する Azure AD Graph のアクセス許可を構成する
- エラー AADSTS650056 - 正しく構成されていないアプリケーション
- 組織の SSO を設定する
- Azure AD とエンタープライズ アプリケーションを SAML 連携する際のトラブルシュートのやり方について
- Azure AD の "AADSTS700016: Application with identifier 'xxxxx' was not found in the directory" エラーについて
- Azure AD ユーザーのプロビジョニングとシングル サインオン
- SAMLの証明書更新のお話