🌳

Microsoft Entra ID のユーザーとグループを Cloud Identity に同期して SSO する

2023/11/15に公開

こんにちは、クラウドエース 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 公式ドキュメント
https://cloud.google.com/architecture/identity/federating-gcp-with-azure-ad-configuring-provisioning-and-single-sign-on

何が嬉しいのか

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 を許可する

image1

SAML 認証フロー

SAML 認証には IdP が起点となる Idp initiated と、SP が起点となる SP initiated の 2 つ方法があります。
以下は本記事で構築する環境における SAML 認証フローを示しています。

IdP initiated Flow

idp-initiated

SP initiated Flow

sp-initiated

必要なもの

  • ドメイン (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 を利用しています
      • ライセンスは [アプリケーションへのグループ割り当て] 、[条件付きアクセス] 機能を利用するため
  • Cloud Identity の環境
    • Free Edition で SSO 、プロビジョニングの設定が可能

設定

Microsoft Entra テナント と Cloud Identity の環境は既に作成済みの状態から設定を始めます。

Cloud Identity で Microsoft Entra ID プロビジョニング用ユーザーの作成

Microsoft Entra ID プロビジョニング用のユーザーは自動プロビジョニング以外使用されないので、 新しく組織部門 (OU) を作成して環境を分離します。

Cloud Identity の管理コンソールで、
[ディレクトリ] > [Organizational units] > [組織部門を作成] を選択します。
image2

本記事では以下のように設定しました。名前は好みに応じて変更可能です。

  • 名前: Automation
  • 説明: Automation users

image3

[ディレクトリ] > [ユーザー] > [新しいユーザーを追加] を選択します。

image4

プロビジョニングに使うユーザーを作成します。

本記事では以下のように設定しました。

  • 姓: Provisioning
  • 名: Azure AD
  • メインのメールアドレス: azuread-provisioning
  • 組織部門: 先ほど作成した Automation を指定
  • Password: 自動生成または、お好みのパスワードを作成

image5

作成したユーザーの詳細画面で、[管理者のロールと権限] > [ロールの割り当て] を選択します。
このユーザーを介して Microsoft Entra ID の全てのユーザー・グループできるようにするため、今回は [特権管理者(Super Admin)] を付与します。
※特権管理者は強い権限を持っているため、特に注意して管理する必要があリます。

image6

Microsoft Entra ID でプロビジョニング用のエンタープライズ アプリケーションを作成する

グローバル管理者権限を持つユーザーで Azure ポータル にログインします。

  • [Microsoft Entra ID] > [エンタープライズ アプリケーション] > [新しいアプリケーション] を選択します。

image7

[Google Cloud / G Suite Connector by Microsoft] を探して選択します。

image8

エンタープライズ アプリケーションに名前を設定し、作成します。

  • 名前: Google Cloud (Provisioning)

    image9

[Google Cloud (Provisioning)] > [管理] > [プロパティ] を選択します。
ユーザーやグループを同期にはサインオンや割り当ては不要であるため、以下の内容を設定します。

  • [ユーザーのサインインが有効になっていますか?] を [いいえ]
  • [割り当てが必要ですか?] を [いいえ]
  • [ユーザーに表示しますか?] を [いいえ]

image10

[管理] > [プロビジョニング] > [作業の開始]

image11

[プロビジョニング モード] を [自動] に変更します。
[承認する] をクリックするとGoogle アカウントのログインのポップアップが表示されます。

image12

Microsoft Entra ID プロビジョニング用に作成した Cloud Identity のアカウントにログインし、利用規約に同意します。
[理解しました] をクリック

image13

[許可] をクリック
image14

[テスト接続] を行います。
正常に認証されている場合、以下のような"指定した資格情報にはプロビジョニングを有効にする権限があります"という通知が表示されます。

image15

プロビジョニングするための設定は完了したため、続いて Microsoft Entra テナント内のユーザーアカウントと Cloud Identity のユーザーアカウントを紐づけるためのマッピングを設定します。
[マッピング] > [Provision Azure Active Directory Users]

image16

以下の設定を行います。

  • surname の [null の場合の規定値 (オプション)]: _
  • givenname の [null の場合の規定値 (オプション)]: _

image17

Cloud Identity にプロビジョニングする対象のユーザーやグループを選択します。
[管理] > [ユーザーとグループ] > [ユーザーまたはグループの追加] を選択
※エンタープライズ アプリケーションにグループを割り当てるには、 Microsoft Entra ID P1 以上が必要です。

image18

事前に用意した、admin と google-sso-group という Microsoft 365 グループを選択しています
Microsoft 365 グループについては、こちらの Microsoft 公式ドキュメントに従って作成してください。
https://learn.microsoft.com/ja-jp/entra/fundamentals/how-to-manage-groups

image19

グループについてもマッピングを設定します。
[マッピング] > [Provision Azure Active Directory Groups]

image20

[属性マッピング] > [mail] を選択

image21

Microsoft 365 グループのドメインは onmmicrosoft.com という形式になっていますが、 Cloud Identity には onmmicrosoft.com のドメインのメールアドレスを登録できないため、以下のように変換する必要があります。

DisplayName@xxx.onmicrosoft.com ⇨ DisplayName@<xxx.co.jp

Cloud Identity に登録できるように式マッピングで変換する設定を行います。

  • マッピングの種類: 式
  • 式 : Join("@", NormalizeDiacritics(StripSpaces([displayName])), "<ドメイン>")

image22

プロビジョニングを開始する

割り当てを行ったユーザーを Cloud Identity プロビジョニングします。

自動プロビジョニングを有効にする。
[管理] > [プロビジョニング] > [プロビジョニング状態] を [オン]

image23

Cloud Identity 側に同期されたか確認する

Cloud Identity のディレクトリで確認すると対象グループに所属しているユーザー "test 01" と "test 02" が作成されたことがわかります。

image24

グループについても割り当てを行ったグループが登録されていることが確認できます。
また、グループのメールアドレスは onmmicrosoft.com から ca-oda-test.xxx に変換されて登録されていることが確認できました。

image25

Microsoft Entra ID で SSO 用のエンタープライズ アプリケーションを作成する

シングルサインオン用にもう一つエンタープライズ アプリケーションを作成します。
[Microsoft Entra ID] > [エンタープライズ アプリケーション] > [新しいアプリケーション] > [Google Cloud / G Suite Connector by Microsoft]

エンタープライズ アプケーションに名前をつけ、作成をクリックします。

  • 名前: Google SSO

image26

[管理] > [プロパティ] にアクセスし、シングルサインオン用のエンタープライズ アプリに以下を設定します。

  • [ユーザーのサインインが有効になっていますか?] を [はい]
  • [割り当てが必要ですか?] を [はい]
  • [ユーザーに表示しますか?] を [はい]
    • ※[はい]にすると My Apps に表示されます。

image27

SSO を許可するユーザーとグループを割り当てます。
[管理] > [ユーザーとグループ] > [ユーザーを追加] > [ユーザーとグループ]

image28

SAML を構成します。

[管理] > [シングル サインオン] > [SAML] を選択します。

image29

[基本的な SAML 構成] > [編集]
各項目を入力します。

image30

SAML アサーションに利用する証明書をダウンロードします。
[管理] > [シングル サインオン] > [SAML] > [SAML 証明書]
証明書 (Base64)のダウンロードをクリックします。

image31

ログイン URL をメモしておきます。
[Google Cloud のセットアップ]

image32

ユーザーのマッピング設定を行います。
[属性とクレーム] > [編集]

image33

今回はデフォルトの UPN マッピングを利用するため、
[追加の要求] で表示されているすべてのクレームを削除します。

image34

設定後一位のユーザー ID user.userprincipalname だけが表示されている状態になります。

image35

条件付きアクセスで特定の IP アドレスからの SSO のみ許可する設定を行う

シングルサインオンをした際に接続元の IP アドレスを確認し、許可していない IP アドレスからは SSO できないように SSO 用エンタープライズ アプリケーションに条件付きアクセスポリシーを設定します。

[Azure Portal] > [ネームド ロケーション] にアクセスし、IP 範囲の場所を作成します。

image36

名前には任意の名前を入力し、
今回は、IPv4範囲としてオフィスの IP アドレスを指定します。

image37

SSO 用エンタープライズアプリ適応する条件付きアクセスポリシーを作成します。
Microsoft Entra ID > エンタープライズ アプリケーション > Google SSO > 条件付きアクセス、新しいポリシーをクリックします。

image38

名前には任意の名前を入力。
ユーザーの設定

  • 対象: ユーザーとグループの選択
  • 選択: 対象のグループを選択

image39

ターゲット リソース

  • 対象: アプリを選択
  • 選択: Google SSOを選択

image40

条件を設定します。

  • 場所を選択
  • 対象: すべての場所を選択

image41

  • 対象外: 選択された場所
  • 選択: 作成したネームド ロケーションを指定

image42

アクセス制御を設定します。

  • 許可: アクセスのブロックを指定

image43

設定後、ポリシーの有効化をオンにして作成します。

Cloud Identity 側にも SSO の設定を行う

Microsoft Entra ID 側の設定は完了したので、続いてCloud Identity 側の設定を行います。
特権管理者ユーザーでログインし、 [セキュリティ] > [認証] > [サードパーティの IdP による SSO] > [SSO プロファイルを追加] を選択します。

image44

組織向けのサードパーティの SSO プロファイルに以下のように設定します。

image45

プロビジョニングに利用するユーザーは、SSO を利用しないため、SSO プロファイルの割り当てを解除します。
[セキュリティ] > [認証] > [サードパーティの IdP による SSO] >
[SSO プロファイルの割り当ての管理] > [管理] > [使ってみる] を選択

image46

[Automation] の組織部門(OU)を選択して、[SSO プロファイルの割り当て] を [なし] にする

image47

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)をクリック

image48

[後で尋ねる]をクリック

image49

SSO で Cloud Identity アカウントにログインしました。また、設定した通り Google Cloud コンソールのページに自動的に遷移しました。

image50

テストケース 2

SP Initiated(SP を起点とした SSO) の動作

  • プロビジョニング 用エンタープライズ アプリケーション、SSO 用エンタープライズ アプリケーション それぞれが割り当てられている Microsoft Entra ID のアカウントでログインしている状態
  • SSO ログイン用 URL を利用せず Google のページからログイン

ログインをクリック

image51

このログイン画面では SSO 用のログイン URL とは異なり、ドメインが指定されていないため Google アカウントの入力を求められました。
メールアドレスを入力し次へを選択します。

image52

入力したメールアドレスはマッピングされているため、Microsoft Entra ID の資格情報の画面に遷移し、パスワードの入力はせずにログインできました。

image53

SSO ログイン用 URL を利用していないため、Google Cloud コンソールには遷移していません。

image54

テストケース 3

SSO のエンタープライズ アプリケーションがユーザーに割り当てられていない場合の動作

  • SSO アプリケーションが割り当てられていない Microsoft Entra ID のアカウントでログインしている状態
  • SSO ログイン用 URL からログインを試みる

アプリへのアクセスを許可(割り当て)されてないため、ブロックされたというメッセージが出ました
エラー AADSTS50105

image57

テストケース 4

SSO のエンタープライズ アプリケーションに適応されている、条件付きアクセスによってアクセスがブロックされる場合の動作

  • プロビジョニング 用エンタープライズ アプリケーション、 SSO 用エンタープライズ アプリケーション それぞれが割り当てられている Microsoft Entra ID のアカウントでログインしている状態
  • 許可されていない場所の IP アドレスを利用
  • SSO ログイン用 URL からログインを試みる

このリソースへのアクセス条件を満たしていないと言うメッセージが出ました。

image58

メンテナンスについて

SSO を運用していく上で必要なメンテナンス作業について記載します。

SAML 証明書の更新

SAML に利用している証明書には有効期限があるため、有効期限が切れる前に更新を行う必要があります。
Azure Portal で作成できる証明書は最大で 3 年の有効期間です。

以下のような手順で証明書の更新を行います。
[Azure ポータル] > [Microsoft Entra ID] > [エンタープライズ アプリケーション] > [Google SSO] エンタープライズ アプリケーション を選択します。
[シングル サインオン] > [SAML 証明書] から証明書の更新を行います。

image59

[新しい証明書] を選択し、[保存] を選択します。

image60

新しく作成された証明書に対して [証明書をアクティブにする] を選択します。

image61

[Base64 証明書のダウンロード] を選択し、証明書をダウンロードします。

image62

続いて、Cloud Identity 側にダウンロードした新しい証明書をアップロードします。
[Cloud Identity の管理コンソール] > [セキュリティ] > [認証] > [サードパーティの IdP による SSO] > [組織むけのサードパーティの SSO プロファイル] を選択します。

image63

[証明書を更新] を選択し、ダウンロードした証明書をアップロードします。
[保存] を選択します。

image64

以上で証明書の更新が完了です。

プロビジョニング、 SSO を行いたいユーザーを増やす

プロビジョニング、 SSO を行いたいユーザーを増やしたい場合、以下の方法で行うことができます。

  • エンタープライズ アプリケーション にすでに割り当てられているグループに、そのユーザーを追加する。
  • エンタープライズ アプリケーション に新しくプロビジョニング、 SSO を行いたいユーザーが所属しているグループを割り当てる

image65

まとめ

本記事では、Microsoft Entra ID から Cloud Identity にユーザーとグループのプロビジョニングを行い、シングルサインオンを行えるようにする方法について説明しました。
この機能を利用することで Microsoft Entra ID でアカウント情報を使って組織の Google Cloud アカウントを簡単に用意できます。
既に Entra ID をお使いの方で、これから Google Cloud を利用しようと検討している方にとっても手がかりになるかと思いますので、ぜひお試しください。

Discussion