Azure AD B2C の行方と新たに登場した Microsoft Entra ID for customers のどっちがいいの？

こんにちは、@daimat と申します。
Microsoft Security Advent Calendar 2023 1 日目を担当させていただきます、よろしくお願いいたします。

# Microsoft の CIAM ソリューションは 2 つ存在
**CIAM** とは **Customer Identity and Access Management** の頭文字から成り立ち、読んでくださっている皆さんから見たお客様の ID を管理することを指しています。ちなみにサイアムと読むそうです。
![overview-ciam.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/84516/b00d6470-90dd-a180-311b-07d8609b5f88.png)

この CIAM ソリューションは、以前からある **Azure AD B2C** に加えて現在パブリックプレビューとして触っていただける **Microsoft Entra ID for customers** の 2 つが存在しており、これらは同じ用途、方向性で開発されているものです。

えっ？なにそれ？という方もいらっしゃれば、CIAM ソリューションの選定中で Azure AD B2C を検討しているという方もいらっしゃるでしょうし、すでに Azure AD B2C で顧客の ID を管理されている方もいると想像します。

この記事では、そのような方々に向けてタイトルにある通り Azure AD B2C の今後と新たに登場した Microsoft Entra ID for customers の現在の立ち位置とその選択基準について書いていきます。

https://learn.microsoft.com/en-us/entra/external-id/customers/overview-customers-ciam#create-a-dedicated-tenant-for-your-customer-scenarios

# どちらを選択すべきか？
読んでくださっている方の効率を優先し、先に結論から書いてしまうと、本日時点では **目的に応じてどちらを選択してもかまわない** という状況でその選択基準は以下のようなものが挙げられます。

* 今すぐに CIAM を構築する必要がある場合
* カスタム XML を用いた複雑なシナリオを必要とする場合
--> **Azure AD B2C を選択**
　
* 今から半年から1年先に新たに CIAM を構築することを計画する場合
* CIAM 製品を選択する初期段階にある場合
* 迅速なイノベーションとCIAMの新機能にメリットを感じる場合
--> **Microsoft Entra ID for customers を選択**

この選択基準からピンっときた方もいらっしゃると想像しますが、大まかに言うと Microsoft Entra ID for customers は生まれたばかりであり Azure AD B2C と比較するとまだ機能に差がある状況であるという事と Azure AD B2C には新たな機能拡張は予定されていない。という事を暗に指しています。("暗に"と書きましたが公開情報にも[少し記載](https://learn.microsoft.com/en-us/entra/external-id/customers/overview-customers-ciam#about-azure-ad-b2c)されています) 

ここまで書くと、今 Azure AD B2C は選択できない。や、Azure AD B2C を今使っているけどサポートがすぐに終了するの？と、考えられるかもしれませんが Azure AD B2C はこれからもサポートを継続しますし、移行方法を準備する予定ですので安心してください。

ただし、**数年後というターム**においては Microsoft Entra ID for cusotmers への移行を推奨する予定であることから上に書いた通り **新たに CIAM を構築する場合には Microsoft Entra ID for customers を推奨します**

# なぜ Microsoft は CIAM を作り直したのか
Identity 畑で長く仕事をしている私の感覚を正直に言うと Azure AD B2C はやっと ID を生業にしている人たちに認知され、利用実績も増えてきている状況であるのにもかかわらず、なぜ Microsoft は新たに同じ役割の違う製品を出してきたのか？もったいない。という感想を持っています。

しかしながら、以下のような理由から新たな CIAM ソリューションを展開することを決定したようです。

## 理由 1 Azure AD B2C のカスタムポリシーがめっちゃ複雑なので利用者にもっと優しい実装にしたい
Azure AD B2Cは、カスタムポリシーやユーザージャーニーというXMLベースのプログラミング言語を使って、高度な柔軟性とカスタマイズを提供することができます。

カスタムポリシーを選択するよくある理由としては LINE などの標準でサポートされていない IDP との接続、SAML 連携や外部 DB などから権限情報などの付帯情報を REST API を通じて取得する場合などに利用されたりします。

しかし、見かけることも少なくなった比較的ファットな XML をベースにした開発は難易度が高いことで導入や保守にコストがかかるためこれを GUI 側で補完したり、今どきの実装に変更したいというのが理由の一つです。

![custom-policy-diagram.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/84516/7f7b15f2-109f-9326-3511-dbad5224a3a6.png)

https://learn.microsoft.com/ja-jp/azure/active-directory-b2c/user-flow-overview

## 理由 2 Microsoft Entra ID(B2E, B2B)と統合することで得られるメリットがたくさんある
これまでは Azure AD B2C に一部提供されていた Microsoft Entra ID の機能が統合されたことにより Microsoft Entra ID for customers は Azure AD B2C とは違い Azure AD から続く強化され続けているセキュリティ、規制への準拠、スケーラビリティ、構成が容易なロギング、レポートなどのプラットフォームの機能を同じように利用することが可能になります。

また、条件付きアクセス、多要素認証、Identity ガバナンスなどの Microsoft Entra のセキュリティとデータプライバシーのメリットも得られます。

さらに、Azure AD B2C にはなかったセキュリティグループ、Azure AD ロールを利用したアプリの権限管理やネイティブアプリ認証、キオスクデバイス向けで利用されることの多いデバイスコードフローなどの機能が使えるようになることにもつながります。

Microsoft Entra ID との統合については手前みそながら、これから利用を開始する人にとっては良いことだと考えます。

# 現時点での主な機能差異
CIAM が刷新される理由の次は、 Microsoft Entra ID for customers を選定する上で重要となるであろう機能差異の表を記載しておきます。

この表の中で注意するポイントは人それぞれだとは考えますが特に MFA 対応範囲や、拡張ポイントに挙げているような自由なカスタムは組めない点については事前に PoC を行った上で要件を満たすかの確認が必要な部分だと考えます。


![B2CvsMEID4Customer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/84516/a77d2da4-bb63-94dc-5b4d-49b27b90948c.png)
(Microsoft Entra ID for customers 側の余白が目立ちますが、まだ公にできない機能拡充ロードマップが実際にはたくさんありますのでご期待ください)

また、カスタム可能な部分については、12月8日の @hiyoshino さんの記事でもしかしたらなにか書いてくれるかもしれないのと、下記サイトに記載がありますので必要に応じてご参照ください。

https://learn.microsoft.com/ja-jp/entra/identity-platform/custom-extension-attribute-collection?context=%2Fentra%2Fexternal-id%2Fcustomers%2Fcontext%2Fcustomers-context&tabs=start-continue%2Csubmit-continue

# まとめ

この記事では以下の事を記載しました。
* Microsoft には 2 つの CIAM 製品が存在
* これから CIAM を構築する場合には Microsoft Entra ID for customers がお勧め
* 機能差異があるため PoC を行い、両製品のどちらが適切かの確認をしましょう
* Azure AD B2C はサポートを継続するので安心してください(数年後に移行を推奨する予定です)

この記事が CIAM 選定の助けになれば幸いです。また、誤りを見つけられた方はやさしくご指摘願います。