Azure の正しい始め方② - Azure を利用するために必要な Microsoft Entra ID の準備と構成

# Azure の正しい始め方 ①-④

https://qiita.com/YoshiakiOi/items/90d8162fc9fcfc3b01f1

https://qiita.com/YoshiakiOi/items/a81f0c5c8586aadd1565

https://qiita.com/YoshiakiOi/items/b79634ed50b4edeb2b0f

https://qiita.com/YoshiakiOi/items/5d9e6280b4f3ce6fa319

# 本記事について

[Azure の正しい始め方①](https://qiita.com/YoshiakiOi/items/90d8162fc9fcfc3b01f1)の記事では、ウェブサイトから Azure にサインアップする方式で Azure を利用開始する際のサブスクリプションと課金アカウント、Microsoft Entra ID ディレクトリのアーキテクチャ設計の基本と全体像をご紹介しました。

本記事では、その②と題して、Microsoft Entra ID にフォーカスして、Azure を使い始める前に理解しなければならないことと、Azure にサインアップする前に構成しておきたいことを見ていきます。

本稿でも引き続き **MCA (マイクロソフト顧客契約) の課金アカウント**を利用して、**Azure Plan** のサブスクリプションを作成する場合について見ていくため、**別の契約形式 (MOSP, EA契約, CSP 契約など) では情報が異なる**場合があります。

# Microsoft Entra ID の基本

ウェブサイトから Azure サブスクリプション (従量課金、Azure Plan) を作成する際、Microsoft Entra ID を意識せずにも作ることができますが、その場合でも裏で必ず Microsoft Entra ID との紐づけが行われます。前記事でも触れましたが、**基本的には事前に利用する Microsoft Entra ID のディレクトリを用意して必要な構成をしてから、Azure を使い始める**ことがおすすめです。

## そもそも Microsoft Entra ID とは？

Microsoft Entra ID はマイクロソフトのクラウドサービス群のなかで、いわゆる **ID as a Service** の位置づけになります。特に Microsoft 365 とは緊密に連携して動作し、ユーザーの認証だけでなく、Exchange Online, Microsoft Intune, Microsoft 365 Apps for Enterprise などそれぞれのサービスでグループ管理やライセンス認証、ユーザー属性やデバイス管理なども Microsoft Entra ID と連携して行っています。

## Azure サブスクリプション・課金アカウントからみた Microsoft Entra ID

Azure サブスクリプションから見た時、Microsoft Entra ID はまず**ユーザーやグループのディレクトリ**と**ユーザーの認証**機能を提供しています。本記事でもこの部分をメインにご紹介します。

一方で、Azure サービスを使いこなすフェーズになると、ユーザーだけでなく、リソースの ID となる**マネージド ID** やサービスのアカウントとなる**サービスプリンシパル**も重要になってきます。

## 最小数の Microsoft Entra ID での運用のススメ

まず最初にアーキテクチャの結論からですが、Microsoft 365 にしろ Azure にしろ、**Microsoft Entra ID は最小数で運用することが推奨**です。ディレクトリが分散すると管理が煩雑になるほか、シャドーITの温床にもなり、ライセンス的にも二重投資・三重投資が必要になってしまいます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/38789339-461b-c551-4cd2-55419639b879.png)

検証環境用途や、どうしてもディレクトリレベルで分割しないといけないセキュリティ要件がある場合を除いて、Microsoft 365 も Azure も利用する場合は、**どちらもまとめて管理できる強固なシングルディレクトリ構成**をまずは検討することがおすすめです。

Azure が複数契約に及ぶようなケースでも、それぞれの契約が同じ Microsoft Entra ID を利用する構成を取れるかを、まずは検討してみてください。

なにかしらの理由でどうしても分割が必要な場合は、Azure は Lighthouse を利用して複数ディレクトリをまとめて監視することができます。こちらは構成が複雑になるため、本記事では触れませんが、下記にて基本的な考え方をまとめています。

https://qiita.com/YoshiakiOi/items/0d855604cc00b078fc32

# Azure を使い始めるにあたり、組織の Microsoft Entra ID として準備しておきたい構成

組織の Microsoft Entra ID として、課金アカウントのプライマリディレクトリとして利用し、サブスクリプションの信頼先としてユーザーやマネージドID・サービスプリンシパルを配置するテナントを決定したら、次に以下の作業を行っていきます。

## ① Microsoft Entra ID 自体のアクセス権の設定

Microsoft Entra ID を管理するにあたり絶対に押さえておかないといけない事項は、**Entra ID のロールやアクセス権設定は Azure の IAM (アクセス設定) や RBAC (ロールベースアクセス制御) とは完全に独立**であることです。

[公式ドキュメント](https://learn.microsoft.com/ja-jp/entra/identity/role-based-access-control/concept-understand-roles)より引用

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/54c8d60b-ca17-ac38-772b-46ccf975410d.png)

そのため、Entra ID を使い始めるにあたり、**そのグローバル管理者権限や諸々の権限設定 (ユーザー管理者やセキュリティ管理者など) を予め構成しておく必要**があります。

特に**グローバル管理者**は Microsoft Entra ID の任意の操作が可能な特権IDとして扱うべきロールになります。[**単独ユーザーのみに付与するのは避け、2-4名程度での複数かつ最小数で運用するのが望ましい**](https://learn.microsoft.com/ja-jp/microsoft-365/admin/add-users/about-admin-roles?view=o365-worldwide#commonly-used-microsoft-365-admin-center-roles)です。

また、認証が機能しない場合用の、[**緊急アクセス用アカウント**](https://learn.microsoft.com/ja-jp/entra/identity/role-based-access-control/security-emergency-access)を用意することも推奨されています。

https://learn.microsoft.com/ja-jp/entra/identity/role-based-access-control/security-emergency-access

## ② Microsoft Entra ID のライセンスの確認・購入

Microsoft 365 を利用していないユーザーが Azure を利用し始める際、多くの場合は Microsoft Entra ID の Free 版で利用を開始されるかと思います。確かに Free 版でも最低限のユーザー・グループ管理や認証・認可、サービスプリンシパルやマネージド ID の利用は可能です。ただ、Azure サブスクリプション内に重要なデータやアプリケーションを置く場合は、**Free 版だとセキュリティ機能が足りないとなることがほとんど**かと思います。

その場合有償版となる、**Microsoft Entra ID (Azure AD) P1 または P2** を検討することになります。Microsoft Entra ID の Free 版と有償版 (P1/P2) の違いは下記にまとめられています。

https://www.microsoft.com/ja-jp/security/business/microsoft-entra-pricing

P1/P2 について特に Azure 利用でのポイントを以下にまとめてみます。セキュリティ要件として P1 または P2 が必要になった場合は購入をご検討ください。

### Microsoft Entra ID P1 に含まれる、最重要なセキュリティ機能

特に P1 に含まれる下記機能は、ビジネス利用のほとんどの場合でセキュリティ担保のために Must Have となってきます。

#### 条件付きアクセス

Microsoft Entra ID 上のユーザーに一括して MFA を強制するだけであれば、Free 版でも可能です。ただ、P1 の条件付きアクセスを利用することで、例えば特定のグループ、アクセス元 IP アドレス、デバイスステータス、といった条件によって**アクセスの許可・ブロック**や **MFA** の要求を行うことができます。また、アクセス先のアプリケーションをポリシーで指定することができるので、例えば Azure の管理ツールや、Azure Virtual Desktop, Azure VPN といった対象にのみ条件付きアクセスのポリシーを利用するといったことも可能です。

#### サインインログの管理

Free 版と有償版 (P1/P2) では、サインインログのディレクトリでの保持期間が異なっています。Free 版では**7日間**のため、検証環境として最低限アクセス履歴を見る程度の利用以外では、ログの保持期間としては不十分です。また、P1/P2 の**30日**も多くの場合保持期間としては短いと感じられるかと思います。

https://learn.microsoft.com/ja-jp/entra/identity/monitoring-health/reference-reports-data-retention#activity-reports

そのため、セキュリティ要件を持つ多くの利用ケースでは、Azure の SIEM のサービスである、**[Microsoft Sentinel](https://learn.microsoft.com/ja-jp/azure/sentinel/overview) にサインインログを取りこんで、セキュリティ分析や長期保持を行う**ことになります。ただ、Sentinel にログ送信する場合にも、P1 のライセンスが必要になります。

https://learn.microsoft.com/ja-jp/azure/sentinel/connect-azure-active-directory#prerequisites

### Microsoft Entra ID P2 に含まれる最高レベルのセキュリティ

最上位のライセンスである、Microsoft Entra ID P2 には不正アクセスや不審なユーザーを検知する **Identity Protection** や特権 ID 管理の仕組みである **PIM**, ID ガバナンスの機能である**アクセスレビュー**などが入ってきます。システムやアプリケーションの要件によっては、P2 の機能が必須になることもあるかと思います。

### Microsoft Entra ID P1/P2 の購入方法

なお、Microsoft Entra ID が Azure ユーザーにとってわかりづらいポイントの一つにライセンスの購入形式が Azure サブスクリプションに含まれていないことが挙げられます。また、Entra ID のライセンスは Microsoft 365 や EMS の中に含まれているものもあります。

もし、P1 または P2 を定価でオンラインでマイクロソフト社から直接購入する場合は、[**Microsoft 365 管理センターのサービスを購入**](https://admin.microsoft.com/AdminPortal/Home?#/catalog) から可能です。

https://learn.microsoft.com/ja-jp/microsoft-365/commerce/licenses/buy-licenses?view=o365-worldwide&preserve-view=true

また、Microsoft Entra ID P1/P2 は利用ユーザーごとに付与する**ユーザーライセンス**のため、**P1/P2 の機能を実際に活用するユーザーに対してそのライセンスを割り当てる必要**があります。

https://learn.microsoft.com/ja-jp/microsoft-365/admin/manage/assign-licenses-to-users?view=o365-worldwide

## ③ その他の基本的な設定

詳細は省きますが、一般的に Microsoft Entra ID を使い始める際は、下記の設定を合わせて行います。

* **グループの追加** - Azure のアクセス設定 (IAM) や Microsoft Entra ID のロールの設定 (要 P1/P2) をグループ単位で行えるようにしておきます。

https://learn.microsoft.com/ja-jp/entra/fundamentals/concept-learn-about-groups

* **カスタムドメインの追加** - カスタムドメインを追加し、自社で利用しているドメインのユーザー名で操作することができます。

https://learn.microsoft.com/ja-jp/entra/fundamentals/add-custom-domain

* **多要素認証の設定** - 多要素認証はライセンスの種別により複数の設定方式があります。多くの場合、P1 の条件付きアクセスを用いることが推奨です。

https://learn.microsoft.com/ja-jp/entra/identity/authentication/concept-mfa-licensing

* **パスワードポリシーの設定** - 組織のポリシーに合わせてパスワードポリシーの設定が可能です。

https://learn.microsoft.com/ja-jp/entra/identity/authentication/concept-password-ban-bad-combined-policy

* **セルフサービスパスワードリセットの構成** - 各ユーザーが自分自身でパスワードリセットをキックできるようにします。

https://learn.microsoft.com/ja-jp/entra/identity/authentication/tutorial-enable-sspr

* **診断設定 (ログの送信)** - Log Analytics (Sentinel) や Blob Storage (ストレージアカウント) に監査ログやサインインログを送信します。(それぞれ Azure サブスクリプションが必要なので、Azure のサインアップ後に行います。)

https://learn.microsoft.com/ja-jp/entra/identity/monitoring-health/howto-integrate-activity-logs-with-azure-monitor-logs

https://learn.microsoft.com/ja-jp/entra/identity/monitoring-health/howto-archive-logs-to-storage-account

* (オンプレミス Active Directory と連携して使いたい場合) **Microsoft Entra Connect** - もしオンプレミスの Active Directory を使用している場合、Microsoft Entra Connect を持ちいて ID の同期ができます。

https://learn.microsoft.com/ja-jp/entra/identity/hybrid/whatis-hybrid-identity

# 組織アカウント (Microsoft Entra ID 上のユーザーアカウント) を利用して、Azure にサインアップ

利用する Microsoft Entra ID の準備ができたら、そのディレクトリ上のユーザーアカウントで Azure にサインアップを行います。それにより、そのディレクトリをプライマリテナントとする課金アカウント (MCA) が作成され、最初の Azure サブスクリプションがそのディレクトリを信頼する形で生成されます。サインアップしたユーザーは、**それぞれ課金アカウントの所有者とサブスクリプションの所有者として、自動的にアクセス制御 (IAM) で設定**されます。また、課金アカウント内には課金プロファイルと請求書セクションも自動的にひとつずつ作成されており、最初のサブスクリプションはそれらに紐づいています。

その様子を図式化すると下記のようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/04965de6-94dc-4b81-f79b-121c17080cd6.png)

[次の記事](https://qiita.com/YoshiakiOi/items/b79634ed50b4edeb2b0f)では、その課金アカウントの管理を見ていきます。

# 最後に

＊本稿は、個人の見解に基づいた内容であり、所属する会社の公式見解ではありません。また、いかなる保証を与えるものでもありません。正式な情報は、各製品の販売元にご確認ください。