この記事では、Microsoft Entra のロールベースのアクセス制御を理解する方法について説明します。 Microsoft Entra ロールを使用すると、最小特権の原則に従って、管理者に詳細なアクセス許可を付与できます。 Microsoft Entra の組み込みロールとカスタム ロールは、Azure リソース (Azure ロール) のロールベースのアクセス制御システム
- Microsoft Entra ロールは、Microsoft Graph API を使用して、ユーザー、グループ、アプリケーションなどの Microsoft Entra リソースへのアクセスを制御します
- Azure ロールは、Azure Resource Management を使用して仮想マシンやストレージなどの Azure リソースへのアクセスを制御します
どちらのシステムにも、同様に使用されるロール定義とロールの割り当てが含まれています。 ただし、Microsoft Entra ロールのアクセス許可は、Azure カスタム ロールでは使用できません。その逆も同様です。
Microsoft Entra のロールベースのアクセス制御について
Microsoft Entra ID では、次の 2 種類のロール定義がサポートされています。
組み込みロールは、一連のアクセス許可が固定された、すぐに使えるロールです。 これらのロール定義は変更できません。 Microsoft Entra ID では多数の組み込みロールがサポートされており、その数は増え続けています。 エッジを切り捨て、高度な要件を満たすために、Microsoft Entra ID はカスタム ロール
カスタム ロール定義を作成 (または組み込みロールを使用) したら、ロールの割り当てを作成してユーザーに割り当てることができます。 ロールの割り当てにより、指定したスコープのロール定義のアクセス許可がユーザーに付与されます。 この 2 段階のプロセスでは、1 つのロール定義を作成し、異なるスコープで何度も割り当てることができます。 スコープは、ロール メンバーがアクセスできる Microsoft Entra リソースのセットを定義します。 最も一般的なスコープは、組織全体のスコープです。 カスタム ロールは組織全体のスコープで割り当てることができます。つまり、ロール メンバーは組織内のすべてのリソースに対するロールのアクセス許可を持ちます。 カスタム ロールは、オブジェクト スコープで割り当てることもできます。 オブジェクト スコープの例として、1 つのアプリケーションがあります。 同じロールを組織内のすべてのアプリケーションの 1 人のユーザーに割り当て、次に Contoso Expense Reports アプリのみのスコープを持つ別のユーザーに割り当てることができます。
ユーザーがリソースにアクセスできるかどうかを Microsoft Entra ID が判断する方法
管理リソースにアクセスできるかどうかを判断するために Microsoft Entra ID が使用する大まかな手順を次に示します。 この情報を使用して、アクセスの問題のトラブルシューティングを行います。
- ユーザー (またはサービス プリンシパル) が Microsoft Graph エンドポイントへのトークンを取得します。
- ユーザーは、発行されたトークンを使用して、Microsoft Graph 経由で Microsoft Entra ID への API 呼び出しを行います。
- 状況に応じて、Microsoft Entra ID は次のいずれかのアクションを実行します。
- ユーザーのアクセス トークン内の wids 要求 に基づいて、ユーザーのロール メンバーシップを評価します。
- ユーザーに適用されるすべてのロールの割り当てを、直接またはグループ メンバーシップを使用して、アクションが実行されているリソースに対して取得します。
- Microsoft Entra ID は、API 呼び出しのアクションがこのリソースに対してユーザーが持っているロールに含まれているかどうかを決定します。
- ユーザーが要求されたスコープでアクションを持つロールを持っていない場合、アクセス権は付与されません。 それ以外の場合は、アクセス権が付与されます。
ロールの割り当て
ロールの割り当ては、Microsoft Entra リソースへのアクセスを許可するために、特定の [スコープ] で [セキュリティ プリンシパル] に [ロールの定義] を関連付ける Microsoft Entra リソースです。 アクセス権はロールの割り当てを作成することによって付与され、アクセスはロールの割り当てを削除することで取り消されます。 その中核となるロールの割り当ては、次の 3 つの要素で構成されます。
- セキュリティ プリンシパル - アクセス許可を取得する ID。 ユーザー、グループ、またはサービス プリンシパルを指定できます。
- ロール定義 - 権限のコレクション。
- スコープ - これらのアクセス許可が適用される場所を制限する方法。
Microsoft Entra 管理センター、Microsoft Graph PowerShell、または Microsoft Graph API を使用して、ロールの割り当てを作成およびロールの割り当てを一覧表示できます。 Azure CLI は、Microsoft Entra ロールの割り当てではサポートされていません。
次の図は、ロールの割り当ての例を示しています。 この例では、Chris に Contoso Widget Builder アプリ登録のスコープでアプリ登録管理者のカスタム ロールが割り当てられています。 この割り当てにより、この特定のアプリ登録に対してのみ、アプリ登録管理者ロールのアクセス許可が Chris に付与されます。
セキュリティ プリンシパル
セキュリティ プリンシパルは、Microsoft Entra リソースへのアクセスが割り当てられているユーザー、グループ、またはサービス プリンシパルを表します。 ユーザーとは、Microsoft Entra ID のユーザー プロファイルを持つ個人です。 グループは、ロール割り当て可能なグループとして設定された新しい Microsoft 365 またはセキュリティ グループです。 サービス プリンシパルは、アプリケーション、ホステッド サービス、および Microsoft Entra リソースにアクセスするための自動化ツールで使用するために作成された ID です。
ロールの定義
ロール定義またはロールは、アクセス許可のコレクションです。 ロール定義には、作成、読み取り、更新、削除など、Microsoft Entra リソースで実行できる操作が一覧表示されます。 Microsoft Entra ID には、次の 2 種類のロールがあります。
- 変更できない Microsoft によって作成された組み込みロール。
- 組織によって作成および管理されるカスタム ロール。
Scope
スコープは、ロールの割り当ての一部として、許可されるアクションを特定のリソース セットに制限する方法です。 たとえば、開発者にカスタム ロールを割り当てるが、特定のアプリケーション登録のみを管理する場合は、ロールの割り当てに特定のアプリケーション登録をスコープとして含めることができます。
ロールを割り当てるときは、次のいずれかの種類のスコープを指定します。
- テナント
- 管理単位
- Microsoft Entra リソース
スコープとして Microsoft Entra リソースを指定する場合は、次のいずれかになります。
- Microsoft Entra グループ
- エンタープライズ アプリケーション
- アプリケーションの登録
テナントや管理単位などのコンテナー スコープにロールが割り当てられると、コンテナー自体には含まれていないオブジェクトに対するアクセス許可が付与されます。 それどころか、ロールがリソース スコープに割り当てられると、リソース自体に対するアクセス許可が付与されますが、それ以上のアクセス許可は付与されません (特に、Microsoft Entra グループのメンバーには拡張されません)。
詳細については、「Microsoft Entra ロールを割り当てる」を参照してください。
ロールの割り当てオプション
Microsoft Entra ID には、ロールを割り当てるための複数のオプションが用意されています。
- ロールをユーザーに直接割り当てることができます。これは、ロールを割り当てる既定の方法です。 アクセス要件に基づいて、組み込みロールとカスタム Microsoft Entra ロールの両方をユーザーに割り当てることができます。 詳細については、「Microsoft Entra ロールを割り当てる」を参照してください。
- Microsoft Entra ID P1 を使用すると、ロール割り当て可能なグループを作成し、これらのグループにロールを割り当てることができます。 個人ではなくグループにロールを割り当てると、ロールからユーザーを簡単に追加または削除でき、グループのすべてのメンバーに対して一貫したアクセス許可が作成されます。 詳細については、「Microsoft Entra ロールを割り当てる」を参照してください。
- Microsoft Entra ID P2 を使用すると、Microsoft Entra Privileged Identity Management (Microsoft Entra PIM) を使用して、ロールへの Just-In-Time アクセスを提供できます。 この機能を使用すると、永続的なアクセス権を付与するのではなく、ロールを必要とするユーザーに時間制限付きアクセス権を付与できます。 また、詳細なレポート機能と監査機能も提供します。 詳細については、「Microsoft Entra の役割を Privileged Identity Managementに割り当てる
」を参照してください。
誰が何にアクセスできるかを理解する
ロールの割り当ての一覧表示は、より広範な質問に答える部分の 1 つです。"誰が自分の組織内の何にアクセスできるか" Microsoft Entra IDには、テナント全体のアクセスを可視化できるツールがいくつか用意されています。
- ロールの割り当て。 テナント、アプリケーション、または管理単位のスコープで Microsoft Entraロールが割り当てられている対象を一覧表示するには、List Microsoft Entra role assignments の手順を使用します。 オフライン分析用の CSV としてロールの割り当てをダウンロードしたり、List unifiedRoleAssignments Microsoft Graph API を使用してプログラムでクエリを実行したりできます。
- アプリ ロールの割り当てと同意の付与。 アプリケーション にユーザーとグループを割り当てて 、特定のエンタープライズ アプリケーションにアクセスできるユーザーとグループを確認します。 アプリケーションに付与されたレビューアクセス許可を使用して、ユーザーまたは管理者が同意した委任されたアクセス許可とアプリケーションのアクセス許可を検査します。
- カスタム セキュリティ属性。 カスタム セキュリティ属性を使用して、テナント用に定義したビジネス固有の属性でユーザーとサービス プリンシパルにタグを付けます。 その後、属性でディレクトリをフィルター処理してクエリを実行し、ロールベースのクエリを補完するアクセスのビジネス属性ビューを作成できます。
- アクセス レビュー。 アクセス レビューを使用して、ユーザーが現在のグループ メンバーシップとエンタープライズ アプリケーションへの割り当てを引き続き必要としていることを定期的に確認します。 Privileged Identity Management (PIM) アクセス レビューを使用して、Microsoft EntraまたはAzureリソース ロールに割り当てられているユーザーとサービス プリンシパルを確認します。 レビュー担当者は、各ユーザーの継続的なアクセスを承認または拒否します。 アクセス レビューにはMicrosoft Entra ID ガバナンスまたはMicrosoft Entra スイートが必要です。一部の機能は Microsoft Entra ID P2 で動作します。 詳細については、「 ライセンス要件」を参照してください。 PIM を使用してサービス プリンシパルを確認するには、Microsoft Entra ワークロード ID Premium も必要です。
- 権限管理。 エンタイトルメント管理を使用して、アクセス パッケージを使用してアクセス権が付与されているユーザーを確認します。 アクセス パッケージは、関連するリソースのコンテナーであるカタログに編成され、アクセスの委任と管理に使用できるアクセス パッケージです。 エンタイトルメント管理には、Microsoft Entra ID ガバナンスまたはMicrosoft Entra スイートが必要です。一部の機能は、Microsoft Entra ID P2 で動作します。 詳細については、「 ライセンス要件」を参照してください。
- サインインログと監査ログ。 サインイン ログを使用して、リソースにアクティブにアクセスしているユーザーと、どのような条件下にあるかを確認します。 監査ログを使用して、ロールの割り当て、グループ メンバーシップ、およびその他のディレクトリ オブジェクトに対する変更を経時的に追跡します。 監査ログは構成の変更を記録し、サインイン ログはサインイン イベントを記録します。これらのイベントは、付与されたアクセスと実際のアクセスを区別するのに役立ちます。 Microsoft Graph API 呼び出しのより豊富なトレースについては、Microsoft Graph アクティビティ ログを参照してください。
Tip
大規模なテナントの場合は、Log Analytics ワークスペースにログをストリーミングして、何千ものユーザーとロールにわたるアクセス パターンのクエリと分析を行うことができます。
ワークロード ID のアクセスを管理する
大規模な完全な承認戦略では、ユーザーだけでなく、アプリケーション、サービス プリンシパル、マネージド ID などのワークロード ID を対象にする必要があります。 Microsoft Entraでは、マシン ID を確立するためのいくつかの方法がサポートされており、それぞれ異なるシナリオに適しています。
- アプリの登録。 アプリケーション オブジェクトを登録して、クライアント シークレット、証明書、またはフェデレーション資格情報で認証するサービス プリンシパルを作成します。 従来のアプリケーションとプラットフォームの統合に使用します。
- マネージドアイデンティティ。 Azureで実行されているワークロードには、システム割り当てマネージド ID またはユーザー割り当てマネージド ID を使用します。 Azureは資格情報を管理するため、シークレットはコードまたは構成に格納されません。
- ワークロード ID フェデレーション。 Microsoft Entraと外部 ID プロバイダーの間の信頼を構成して、Azure外のワークロード (またはアプリ登録として認証されるAzure内のワークロード) が、シークレットを格納せずに保護されたリソースMicrosoft Entraアクセスできるようにします。
- 柔軟なフェデレーション ID の認証情報 (プレビュー). アプリ登録のシークレットレス パターンを、GitHub、GitLab、または Terraform Cloud によって発行されたトークンに対してワイルドカードまたはクレームベースの照合を必要とするシナリオに拡張します。
ユーザーに適用するのと同じ階層化されたコントロールを使用して、これらの ID を大規模に管理します。
- ワークロード ID に条件付きアクセスを適用して、サービス プリンシパルが認証できる場所とタイミングを制限します。 この機能にはワークロード ID Premium ライセンスが必要であり、テナントに登録されているシングルテナント サービス プリンシパルにのみ適用されます。マネージド ID とマルチテナントまたはサード パーティの SaaS アプリはスコープ内にありません。
- グループとアプリケーションのアクセス レビューを実行して、それらのリソースに割り当てられたユーザーが引き続きアクセス権を必要としていることを確認し、PIM アクセス レビューを使用して、Microsoft EntraおよびAzureリソース ロールに割り当てられたサービス プリンシパルを確認します。 グループとアプリケーションのレビューには、Microsoft Entra ID ガバナンスまたはMicrosoft Entra スイートが必要です (一部の機能は Microsoft Entra ID P2 で利用できます)。詳細については、「License の要件を参照してください。 サービス プリンシパルのレビューには、さらに Microsoft Entra ワークロード ID Premium が必要です。
- 登録済みアプリケーションのサービス プリンシパルに カスタム セキュリティ属性 をタグ付けして、フィルター可能なインベントリを構築し、ビジネス属性に基づいて Azure ABAC の決定を行えるようにします。
- マルチテナント アプリのアプリ インスタンス プロパティ ロック を有効にして、アプリが別のテナントでプロビジョニングされた後にサービス プリンシパルの機密性の高いプロパティが不正に変更されないようにします。
ライセンス要件
Microsoft Entra ID での組み込みロールの使用は無料です。 カスタム ロールを使用するには、カスタム ロールの割り当てを持つすべてのユーザーに対して Microsoft Entra ID P1 ライセンスが必要です。 要件に適したライセンスを見つけるには、「Free エディションと Premium エディションの一般提供機能の比較」を参照してください。