マルチクラウド環境における Azure AD 活用例 - SaaS アプリ利用におけるゲストユーザーの ID およびアクセス管理手法

# はじめに
本記事では、組織や企業がマルチクラウド環境で利用している SaaS アプリを利用するゲストユーザーの ID およびアクセス管理手法について紹介します。ゲストユーザーとは、ユーザーの ID 情報と SaaS アプリがそれぞれ別のクラウド環境で管理されている場合に、SaaS アプリが管理されている Azure Active Directory (Azure AD) へ招待をしたユーザーのことを指します。SaaS アプリの展開のために必要な ID およびアクセス管理をどのように実装すればよいか解説をしていきます。

> ゲストユーザーの招待は Azure AD の機能である Azure AD B2B を利用します。シナリオや機能の活用方法について詳しく知りたい方は[前回の記事](https://qiita.com/hiroakimurata/items/748ad03bb1aa3d152998)を参照してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1879870/611109e6-6017-3bad-6808-5bc78d69b804.png)

# ID 情報が Azure AD で管理されていないケース - ワンタイムパスコード
上図では、ホームテナントが Azure AD であることを前提としていました。しかし、業務委託先などの社員の方が、Azure AD 以外に ID 情報を保持しているケースがあります。このようなケースにおいても、追加の構成を行うことによって、SaaS アプリへアクセスすることが可能です。
具体的には、リソーステナントの Azure AD で 外部 ID プロバイダーを構成します。以下の 3 つの手法があり、状況に応じて構成するのが良いでしょう。

* Microsoft アカウント（標準状態で構成済み）
* ソーシャル ID プロバイダー　（Google, Facebook など）
* メールのワンタイム パスコード

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1879870/d70233db-96a6-f234-b899-a632faf44d8c.png)

メールのワンタイム パスコードによる認証が、最も自由度が高い構成です。メールアドレスさえ持っていればゲストユーザーとしてリソーステナントへ招待することが出来ます。
メールのワンタイム パスコードは、下記のようなメールがゲストユーザーのメールアドレスに通知されます。SaaS アプリへアクセスをするためにはワンタイムパスコードが必要になります。コードは使用期限が決まっているため、期限が切れた後は再ログインが必要となりますが、使いまわしを防止することが出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1879870/6912cf69-2806-12e7-8020-ed0f524f8be6.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1879870/6ea1a9d4-3bc8-6ea4-e4f0-1ed279f2f160.png)

# ゲストユーザーの ID 管理 - 自動ユーザープロビジョニング
SaaS アプリの展開のために必要な ID 管理について解説します。
ゲストユーザーをリソーステナントへ招待した後、SaaS アプリを利用可能とするためにはアプリ側にユーザーを作成する必要があります。この時、あらかじめ手動で作成をすることもできますが、ID 管理・運用の観点からは、自動でユーザーの作成 (プロビジョニング) が行われた方が効率的です。
リソーステナントで SaaS アプリに対する自動ユーザープロビジョニングが構成済みである場合、ゲストユーザー専用の設定変更は必要ありません。リソーステナントをホームとしているユーザーと共通のプロビジョニング設定を利用します。
ユーザープロビジョニングの設定に関して、下記 4 つの観点から、ゲストユーザーに対する SaaS アプリの展開を行う前に確認をしておくと良いでしょう。

* **①ゲストユーザーへ展開したい SaaS アプリが自動ユーザープロビジョニングに対応しているか**

SCIM (System for Cross-domain Identity Management) と呼ばれる標準規格に SaaS アプリが対応している場合、Azure Portal の操作を通して Azure AD からのユーザープロビジョニングが構成可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1879870/a795a6e4-c933-504b-cd64-4e27d14157d8.png)

* **②ゲストユーザーが自動ユーザープロビジョニングの対象に含まれるか**

リソーステナント上のセキュリティグループを利用して、SaaS アプリへ割り当てを行うことが一般的です。もし、Azure AD Premium Plan 1 または Plan 2 のライセンスをお持ちであれば、動的グループと呼ばれる機能を活用して、グループメンバーシップ登録を含め自動化することも可能です。例えば、すべてのゲストユーザーが自動的に所属するセキュリティグループを作成することが可能です。

https://docs.microsoft.com/ja-jp/azure/active-directory/external-identities/use-dynamic-groups


* **③ゲストユーザーへ SaaS アプリのどのアプリロールが割り当てられるか**

Azure AD で SaaS アプリのアプリロールを指定してプロビジョニングすることが出来ます。アプリロールごとにグループを分ける運用も設計次第で可能となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1879870/02abb76b-87ac-22df-5e8f-5e5ffa4669e0.png)


* **④SaaS アプリの自動ユーザープロビジョニング設定によるログオン ID 属性が何か**

ユーザープリンシパル名かメールアドレスが代表的な属性ですが、他の属性を指定することも可能です。
※ゲストユーザーのユーザープリンシパル名はホームテナントの属性値が SaaS アプリへプロビジョニング (配信) されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1879870/a7f4dc0c-00e0-3e33-113c-0541e8b491f2.png)


# ゲストユーザーのアクセス管理 - 多要素認証
SaaS アプリの展開のために必要なアクセス管理について解説します。
Azure AD B2B 機能をご利用いただく時の推奨事項に従って、ゲストユーザーがリソーステナント上の SaaS アプリへアクセスする時に多要素認証を要求されるように設定します。多要素認証を Azure MFA（Multi-Factor Authentication） で構成することで、ゲストユーザーのなりすましによる攻撃リスクを低減することが可能です。その他のベストプラクティスおよび推奨事項については下記から参照できます。

https://docs.microsoft.com/ja-jp/azure/active-directory/external-identities/b2b-fundamentals

多要素認証の具体的な実装方法は、リソーステナント上の条件付きアクセス機能を利用します。条件付きアクセスは Azure AD Premium Plan 1 または Plan 2 に含まれる機能です。ゲストユーザーに対する共同利用シナリオにおける課金の詳細な情報は下記を参照してください。

https://docs.microsoft.com/ja-jp/azure/active-directory/external-identities/external-identities-pricing#about-monthly-active-users-mau-billing

ゲスト用の条件付きアクセス制御ポリシーを作成する時に、テンプレートが利用可能です。(ポリシーテンプレートは、2021 年 12 月 8 日時点でプレビュー機能として提供されています)。
Azure Portal へ管理者としてログオンしてから、条件付きアクセスのポリシーを作成する時に、「テンプレートから新しいポリシーを作成」を選択し、テンプレート カテゴリの選択は 「ID」を指定してください。一覧の中に、ゲスト用のポリシーテンプレートが選択肢として表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1879870/40769546-72ec-587c-0d7d-4da8dc1ca778.png)
![Blog1209_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1879870/9a773773-c9c9-81ec-1735-268914b9bdc3.png)

このポリシーテンプレートを使ってポリシーを作成した後、環境に合わせて設定変更を行うことが可能です。下図は標準状態 (変更なし) の設定を表示しています。例えば、多要素認証の対象とする SaaS アプリを選択して設定することも可能です。

![Blog1209_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1879870/a4df4c9d-3c3a-4ae6-2d8a-7e995e0d69e1.png)

# まとめ
本記事では、マルチクラウド環境における Azure AD の活用例として、SaaS アプリ利用におけるゲストユーザーの ID およびアクセス管理手法を紹介しました。

ゲストユーザーに対するワンタイムパスコード、自動ユーザープロビジョニング、多要素認証が構成可能です。社内および社外の様々な種別のユーザーが SaaS アプリを利用するシナリオにおいて、これらの機能を組み合わせて ID およびアクセス管理をどのように実装していくかの検討を進めていただければと思います。

次回の記事では、「リスクのあるゲストユーザーを自動的にブロックし修復まで行ってくれる便利な機能」について掲載する予定です。
最後まで読んでいただきありがとうございました。どれか1つでも活用していただける情報があれば幸いです。
＊本稿は、個人の見解に基づいた内容であり、所属する会社の公式見解ではありません。また、いかなる保証を与えるものでもありません。