Google Workspace と Azure AD を統合して、 Google Workspace にシングル サインオン (SSO) できる環境を一から構成する

#はじめに
本記事は [Microsoft Azure Tech Advent Calendar 2020](https://qiita.com/advent-calendar/2020/microsoft-azure-tech) の 12 日目の記事です。

また、この記事は「G Suite と Azure AD を統合して、G Suite にシングル サインオン (SSO) する環境を一から構成する」という私が昨年書いた既存の Qiita の記事を Google Workspace 用に記事を見直しブラッシュ アップしたものになります。
(最終的には画面ショットが異なるのでほぼすべて書き直しました)

G Suite から Google Workspace にサービス名称が変わったことにより、SAML 連携するために必要な手順が変更になったかどうか一からチェックを行いました。
結論から言うと、SAML 連携するという観点だけ言うと、手順はほぼ同じでした。

Azure AD は SAML プロトコルを使って 3rd パーティー製エンタープライズ系の SaaS アプリケーションと連携しシングル サインオンさせることができます。
その中の 1 つに Google 社が提供しているクラウド サービスである Google Workspace があります。

本記事では、Google Workspace の評価版環境の入手からはじまり、Azure AD と Google Workspace 間の SAML 連携の構成方法、実際にシングル サインオンできるかどうかの確認までを記載しています。

正式な手順は、下記 Microsoft のチュートリアルに記載がありますので、あわせて参考にしてください。
[チュートリアル:Azure Active Directory シングル サインオン (SSO) と Google Cloud (G Suite) Connector の統合](https://docs.microsoft.com/ja-jp/azure/active-directory/saas-apps/google-apps-tutorial)

※公開情報内にも記載がありますが、サインオン URL の設定によって、シングル サインオン先が Gmail になるか Google Cloud Platform (Google Cloud の管理コンソール) になるかもしくはその他のサービスになるか動作が変わります。詳細は後述します。

#SAML 連携すると何がうれしいのか
SaaS に限らず企業で利用しているアプリケーションは 1 つや 2 つのレベルでは到底収まらないと思います。
ID とパスワードをそれぞれアプリケーション毎に個別に用意した場合どうなるでしょうか。
ユーザーはアプリケーション毎に ID とパスワードを覚えないといけませんし、管理者はアプリケーション毎に ID とパスワードを払い出さないといけませんね。

アプリケーションが増えるたびに ID を払い出していたら管理が行き届かなくなりますし、シャドー IT の温床にもなります。
ID を含む資格情報の管理を Azure AD に任せつつ、 SaaS アプリと Azure AD を SAML 連携することで、**Azure AD 上の資格情報を使って SaaS アプリケーション**にシングル サインオンできます。
管理者は Azure AD 上のユーザーを管理するだけで済みますし、ユーザーはアプリケーション毎に ID とパスワードを覚える必要がなくなります。
どうですか、使わない手はないと思いませんか？もしそう思ったのなら、是非やりましょう。

#Google Workspaceとは
Google 社の Cloud サービス G Suite をリブランディングして 2020 年 10 月 6 日に名称を変えて生まれ変わったのが Google Workspace です。
具体的に何が変わったのか、何が新しくなったのかという点については Google 社の下記サイトなどをご確認ください。

-参考情報
[Google Workspace のご紹介](https://cloud.google.com/blog/ja/products/workspace/introducing-google-workspace)

#作業概要
[Google Workspace の環境を用意する](https://qiita.com/Shinya-Yamaguchi/items/f90a70a035c243b25e9d#google-workspace-%E3%81%AE%E7%92%B0%E5%A2%83%E3%82%92%E7%94%A8%E6%84%8F%E3%81%99%E3%82%8B)
[Azure AD 側でシングル サインオンするために必要な設定を行う](https://qiita.com/Shinya-Yamaguchi/items/f90a70a035c243b25e9d#azure-ad-%E5%81%B4%E3%81%A7%E3%82%B7%E3%83%B3%E3%82%B0%E3%83%AB-%E3%82%B5%E3%82%A4%E3%83%B3%E3%82%AA%E3%83%B3%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%E5%BF%85%E8%A6%81%E3%81%AA%E8%A8%AD%E5%AE%9A%E3%82%92%E8%A1%8C%E3%81%86)
[シングル サインオンできるか動作確認をする](https://qiita.com/Shinya-Yamaguchi/items/f90a70a035c243b25e9d#%E3%82%B7%E3%83%B3%E3%82%B0%E3%83%AB-%E3%82%B5%E3%82%A4%E3%83%B3%E3%82%AA%E3%83%B3%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%8B%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D%E3%82%92%E3%81%99%E3%82%8B)

#Google Workspace の環境を用意する
前身の G Suite は Basic 、Business、Enterprise の 3 エディションがあり、それぞれ 14 日間の無料試用期間が用意されていて、**Business** エディションであれば評価版ライセンスでもシングル サインオンが構成できました。

Google Workspace は Business エディション として下記 3 つのプラン、Enterprise エディションを含むと 4 つのプランがありますが、スモール スタート用の **Business Starter** プランでも SAML 連携ができました。

Google の管理者ヘルプサイトにも **Business Starter** プランもサードパーティの IdP (今回の場合は Azure AD) を使用したシングル サインオンに対応していることが分かります。

[Google Workspace の各エディションの比較](https://support.google.com/a/answer/6043385)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/55d7b54b-7619-13dd-95ae-daaf94549e9e.png)

従って、今回は Business Starter プランの無料試用版を申し込んで Azure AD と SAML 連携をしてみます。

まず、[無料試用が選択できるページ](https://workspace.google.com/intl/ja/landing/partners/referral/trial.html?utm_source=sign-up&utm_medium=referral&utm_campaign=apps-referral-program&utm_content=RNTCKF5) にアクセスし、Business Starter の「使ってみる」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/e2bf0909-5097-b104-7ae4-988358495763.png)

必要な情報を入力し、「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/216bd0a0-c06e-0dad-c312-78f8406989a7.png)

姓名と Google Workspace のアカウント管理者となるメールアドレスを入力し、「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/27a33ea1-8ccb-eb9c-b604-2afe692488e6.png)

Google Workspace を利用するためには、外部 DNS で引けるドメインを持っている必要があります。
ドメインを持っていない場合は、別途ドメインを用意してください。
ここでは「ドメインを持っている」にチェックを入れた状態で「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/2812f707-b328-acb5-befc-8be20c2058f4.png)

企業ドメインを入力し、「次へ」をクリックします。
※ここで入力するドメインは Azure AD 上に登録されている「カスタム ドメイン」名で Google Workdpace に対してシングル サインオンして利用を想定しているドメイン名を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/c5d840eb-a31b-ca20-26b0-3b8819ff8b45.png)

確認画面が表示されるので「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/6b07638d-7ed5-ef85-2993-72c1d0691670.png)

下記画面は任意に選択いただいて問題ありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/024d9ed2-a16b-9e7c-7f89-0d5325bb69b9.png)

ログイン情報を入力する画面で、さきほど指定したドメインでユーザーを作成します。
ユーザー名、パスワードを設定し「同意して続行」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/38d9be99-02b4-91e0-e9f9-691a3cda55fe.png)

しばらく待つと下記画面のとおり G Suite アカウントが作成されるので、「設定に進む」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/09984ef4-48e6-716e-223a-b550996c68ee.png)

Admin Console (Google Workspace の管理画面) の認証画面に遷移するのでそのまま「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/405b3218-25b3-56e8-2a21-20c49943b8b7.png)

「ログイン情報を入力しましょう」の画面で設定したパスワードを入力して「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/69fb2378-def3-26ca-dc5c-86b68e693ad3.png)

多要素認証の設定画面が表示されるので、認証時に利用する電話番号を入力し、「コードを取得」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/411fb3ab-2fd3-5977-b1f2-7bd285c225a3.png)

通知される確認コードを入力し「確認」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/cff5b2c4-4fc0-a17e-8046-c53abc30ba10.png)

確認画面が表示されるので文面を確認の上、「同意する」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/fcde8edf-2a85-cc57-64b3-757fdd3af57b.png)

下記画面が表示されるので作成したドメインで Gmail を利用できるように「有効化」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/fd059d37-84de-0596-c2b8-cdfa8220a3f9.png)

「続行」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/ab3b21c0-d81a-e2eb-c440-ba5df09af76f.png)

Gmail を利用するため、また、登録したドメインの所有者であることを証明するために、DNS サーバーに MX レコードを設定する必要があります。
以下画面ショットでは GMO Internet が表示されますが、当然利用されているドメインを管理しているホストは環境によってさまざまだと思いますので、
適切なドメインホスト サービスに移動してください。今回はこのまま GMO Internet (実体はお名前.com) で設定する例を記載します。

※想定ではこの画面で表示される DNS をホストしているサービス名は Google Workspace 側で自動検出して適切なサービス名が表示されているはずです。
もしドメインを管理しているサービス名が表示されない場合、各ホストごとのリンクが記載された手順がありますのでこちらを参考に設定をしてください。

[MX レコードを設定する（ホスト固有の手順](https://support.google.com/a/topic/1611273?hl=ja)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/f6da5cb9-777a-49be-2a2f-60d69a48f275.png)

画面を下にスクロールすると「MX レコード」と「MX 確認コード」の項目がありますので、それぞれの値をコピーして控えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/c68a1289-4ea5-76f3-cf9a-06f99a5f7c15.png)

下記は お名前.com 上での設定例となりますが以下のように MX レコードを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/bc263295-ec13-4e43-4bcf-e633fc75451f.png)

必要な設定が全て完了した後に、画面右下の「GMAIL を有効にする」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/22f369a5-7113-2e19-7dc2-50b07ddd1307.png)

「GMAIL を有効にする」をクリックすると下記画面ショットのように確認が行われますのでしばらく待ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/15a0bbdc-f48b-08a8-1e58-0ecd03482077.png)

MX レコードが正常に引けるようになると下記画面が表示されますので、新規にユーザーを作成するか作成する必要がなければ「後で設定する」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/474e88b6-9e13-5352-26c3-0364639d2572.png)

これで登録したドメインで Gmail が利用できるようになりました。
「テストメールを送信」をクリックして管理者アカウントにメールの受信をテストできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/61003319-c456-d5f3-0aa5-88d3d7065876.png)

以下のような感じで Gmail を利用してテストメールが受信できていることが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/a9f99fef-2cf0-d314-bbf0-be4355a7341e.png)

管理コンソールの画面に戻り、「ドメイン」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/14eb23d3-0fe4-00f3-8478-93e550ee2d58.png)

「ドメインの管理」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/d4867218-52c1-888b-284e-0dd2189f0d3b.png)

上記一連の作業で Google Workspace に登録したドメインの所有者であることが証明されたので、プライマリ ドメインとしてドメインの管理の一覧に登録されていることが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/526e63ac-67ba-30a7-ff21-62273343d17b.png)

これでようやくシングル サインオンの先として Gmail が利用できるようになりましたので、次は Azure AD と Google Workspace を SAML 連携していきます。

#Azure AD 側でシングル サインオンするために必要な設定を行う
Azure ポータル (https://portal.azure.com) に管理者ユーザーでサインイン後に、「Azure Active Directory」 → 「エンタープライズ アプリケーション」→「すべてのアプリケーション」の順にクリックし、画面上部の「＋新しいアプリケーション」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/a5de466c-2cdd-29b1-5450-ab6facbc65e6.png)

Azure AD ギャラリーの参照画面より「Google Cloud Platform」のアイコンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/72fd53b7-f0a7-2e2a-7a81-9e4a4581be4d.png)

画面右下の「作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/99652377-1039-bc6b-5214-5463428a2573.png)

作成が完了すると下記画面に遷移するので、左ペインにある「シングル サインオン」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/6f313c02-5e0f-642c-9313-a696e9d3472f.png)

シングル サインオン方式の選択より、「SAML」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/9c165bf9-3673-6ca5-1d52-63a3c8d1200d.png)

SAML によるシングル サインオンのセットアップの画面にて、基本的な SAML 構成の画面右上の鉛筆マークをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/edb4002a-d673-7995-ac5a-532e7cee63cc.png)

下記画面が表示されますが、アスタリスクのマークがついている「識別子」「応答 URL」「サインオン URL」が必須の設定項目になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/8436e606-3ddb-b452-6eed-215940194666.png)

まず、Google Workspace との SAML 連携は、 SP-Initiate になるので、サインオン URL を入力する必要があります。
※ SP-Initiated と IdP-Initiated の違いについてはこの記事が参考になると思います。

[Azure AD の SAML 構成に必要な設定項目とその意味、動作の説明について](https://qiita.com/Shinya-Yamaguchi/items/ee2c1ee4660bc75cf235)

シングル サインオン先を Gmail にしたい場合、Google Cloud Console にする場合でサインオン URL が異なります。
具体的には以下のように設定してください。

| 項目    |  サインオン URL |    
|:-----------------|:-----------------|
| シングル サインオン先を Gmail にしたい場合      | https://www.google.com/a/[yourdomain.com]/ServiceLogin?continue=https://mail.google.com |
| シングル サインオン先を Google Cloud Console にしたい場合    | https://www.google.com/a/[yourdomain.com]/ServiceLogin?continue=https://console.cloud.google.com  |

上記 「yourdomain.com」は適宜、ご自身が設定したドメイン名に置き換えてください。
上記内容をみて何となくお分かりかと思いますが、シングル サインオン先を Google Drive にしたいのであれば、「ServiceLogin?continue=」以降の URL を「https://drive.google.com」
に指定すれば Google Drive にシングル サインオンします。
同じようにシングル サインオンさせたい Google Workspace 上のサービスの「サインオン URL」を設定できます。

次に、識別子のボックスに、下記 4 つの URL を入力します。

google.com/a/<yourdomain.com>
google.com
https://google.com
https://google.com/a/<yourdomain.com>

上記 「yourdomain.com」 は適宜、ご自身が設定したドメイン名に置き換えてください。

次に、応答 URL のボックスに、下記 2 つの URL を入力します。

https://www.google.com
https://www.google.com/a/<yourdomain.com>

それぞれ必要な値の設定が完了したら画面上部の「保存」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/4c1dd39f-d3b5-2265-2d95-8664b887d9bd.png)

SAML 署名証明書欄にて、証明書(Base64) のダウンロードのリンクをクリックし、任意のフォルダに保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/8154b7a1-b06a-5f29-c86a-23482aec268b.png)

次に 「Google Cloud / G Suite Connector by Microsoft のセットアップ」の欄にある「ログイン URL」「Azure AD 識別子」「ログアウト URL」の値がそれぞれ 
Google Workspace 管理コンソール側の設定をするために必要な値になるので、それぞれクリップボードにコピーして控えておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/e4b4326a-3ab6-b3ed-c468-113efce6e6a8.png)

#Google Workspace 管理コンソール側で必要なシングル サインオンの構成をする

管理コンソールより「セキュリティ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/0c275b58-c9d4-895b-a0a3-327e288dffb6.png)

画面を下にスクロールさせて「サードパーティの ID プロバイダを使用したシングル サインオン（SSO）の設定」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/0a5fcc4a-798f-380d-4723-d57c51aefe1a.png)

シングル サインオンの設定を以下のとおり行い、「保存」をクリックします。

| 項目    |       値 |    
|:-----------------|:-----------------|
| サードパーティーの ID プロバイダで SSO を設定する         |              チェックを入れます |
| ログインページの URL          |   Azure ポータルの Google Cloud / G Suite Connector by Microsoft のセットアップからコピーした、 ログイン URL を貼り付けます|
| サインアウト URL             |              Azure ポータル の Google Cloud / G Suite Connector by Microsoft のセットアップからコピーした、 ログアウト URL を貼り付けます | 
| 認証の確認             |              Azure ポータルよりダウンロードした、Base 64 の SAML 署名証明書をアップロードします  |
| パスワードの URL の変更              |                https://account.activedirectory.windowsazure.com/ChangePassword.aspx |
| ドメイン固有の発行者を使用する          |                チェックを入れます |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/cfc7941f-5e0d-e1e1-261a-1e9cf84bce9e.png)

これで Azure AD 側、Google Workspace 管理コンソール側それぞれの設定が完了したので Gmail に対してシングル サインオンできるか動作を確認します。

#シングル サインオンできるか動作確認をする。
まず、Azure ポータルにもどり、Google Workspace (Gmail) にシングル サインオンするユーザーを割り当てます。
ユーザーとグループをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/c123e2f3-982a-b58f-09ca-f4526eea8864.png)

画面上部の「＋ユーザーの追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/d328054a-2919-0403-23c8-555be28fd313.png)

割り当ての画面より、ユーザーとグループをクリックすると、下記画面が表示されるので、ユーザーを選択し、「選択」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/32dc6d05-ca56-b8cb-9a45-543c674ad9c8.png)

「割り当て」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/e981b5af-3c51-2843-1160-787299921b6c.png)

ユーザーが割り当てられたことを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/0ebbddeb-3aba-3511-b498-d63dd33c5ee5.png)

ブラウザでマイ アプリ (https://myapplications.microsoft.com) に割り当てた Azure AD ユーザー (test001) でサインインします。
表示されている、「Google Cloud」アイコンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/6adcef0f-84e4-8220-1b7b-1bd8fa616aed.png)

クリック後に、割り当てたユーザー (test001) の Google Workspace (Gmail) にシングル サインオンできました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/ee44bda5-4ef5-d90b-f181-61783cbd8afb.png)

ちなみに、Azure AD 上の「サインオン URL」を Google Cloud Console の URL 「https://www.google.com/a/<yourdomain.com>/ServiceLogin?continue=https://console.cloud.google.com 」 に設定している状態で同じようにマイ アプリから Google Cloud のアイコンをクリックすると下記画面ショットのように Google Cloud 管理コンソールにシングル サインオンします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/56a381b9-d6b4-858b-a016-cecfa468cd00.png)

以上で設定は完了です、お疲れ様でした！

#おわりに
今回は Azure AD 上のユーザーを利用して G Suite からさらに進化して生まれ変わった Google Workspace にシングル サインオンするために必要な手順を画面ショット付きでご紹介しました。
旧 G Suite と SAML 連携する際の手順とほぼ変わりませんでしたが、実際に設定してみた所感として Google Workspace 側の設定、特にドメインホストの所有者であることを証明するために必要な DNS サーバー側の設定と Google Workspace 側の管理コンソール上の設定が分かりやすくなっていました。
(以前はどこから verify するための MX レコードを入手すればいいか右往左往した記憶があったので…)

今回ご紹介したサービスは Google Workspace ですが、その他の SaaS アプリケーションと SAML 連携するために必要な作業も概ね今回の作業と同じ流れになります。
一度実際に手を動かして試してみれば、実はたいしたことはないということが体感できると思います。

ID 管理を Azure AD に任せて SaaS アプリと SAML 連携することで、ユーザーのサービス利用の利便性を高めて、管理者の ID 管理コストを下げることができます。
今回の記事が少しでも参考になれば幸いです。