Microsoftプラットフォームにおける様々なRBACシステムの違いを解説

Azure
Microsoft Entra ID

By Daniel Laufenberg on 08/18/2024

By Daniel Laufenberg on 08/18/2024

clouds-connected-RBAC

RBAC(Role-Based Access Control)とは、組織内(例:企業)でリソースのアクセス制御を管理するために使用される仕組みの一つです。RBACを使用してリソースへのアクセスを管理することで、既存のロールを再利用でき、効率的な管理が可能になります。各ユーザーに対してリソースへのアクセスを個別に割り当てるのではなく、あらかじめ定義された権限を持つロールをユーザーに割り当てることができます。RBACのコンセプトに関して解説が必要な方は、こちらのRed Hatのブログをご覧になることをお勧めします。

主要なテクノロジーを積極的に取り入れる一流テクノロジー企業として、MicorsoftもRBACを色々な製品に取り入れております。しかし、製品の提供範囲を拡大する中で一系統のRBACシステムでは管理が困難という状況に陥り、MicrosoftはさまざまなRBACシステムのカテゴリを開発しました。これらの開発は必要不可欠でしたが、日々これらのシステムを扱うIT管理者や開発者の中には、「違いがわかりにくい」と感じる人も少なくありません。 当記事では、Microsoftプラットフォーム上で使用されるさまざまな種類のロール、具体的にはAzureロール、Entra IDロール、Microsoft 365ロール、Appロールの違いを簡潔に説明します。また、これらのロールが必要になる具体的な例をクイズ形式で解説します。

では、短く簡潔に説明いたします。

Microsoft Entra IDロール

Microsoft Entra IDロール(旧称Azure Active Directoryロール)は、Microsoft Entra環境内のリソースへのアクセス管理に使用されます。これらのロールは、ユーザーなどのアイデンティティやディレクトリの管理に重点を置いています。例としては、Billing Administrator(課金管理者)やUser Access Administrator(ユーザー管理者)などのロールがあります。

Microsoft 365ロール

Microsoft 365ロールは厳密にはMicrosoft Entra IDロールの一部と考えられますが、特定のMicrosoft 365製品に特化したアクセス権が定義されています。たとえば、Exchange管理者、Intune管理者、SharePoint管理者など、各製品ごとのロールが含まれます。

Azureロール

Azureロールは、Microsoft Azure上のリソースへのアクセス管理に使用されます。Azureロールには「スコープレベル」という概念があり、管理グループ、サブスクリプション、リソースグループ、リソースといった4つのスコープでアクセス権限の範囲を指定することができます。 たとえば、リソースグループレベルでVirtual Machine Contributor(仮想マシン寄与者)ロールをユーザーに割り当てると、そのユーザーはVMディスクの管理やパスワードの更新などを行うことができます。

Appロール

Appロールは、上記のRBACシステムとは大きく異なります。これらは、Entra IDテナントに登録されたアプリケーションに対して開発者が独自に定義するロールです。Microsoft Entraテナントによって認証トークンが発行される際、ユーザーに割り当てられたAppロールはトークンの「セキュリティロールクレーム」に付与されます。開発者はこれらのクレームを使用して、アプリケーション内で認可を決定することができます。

重要なポイント

Microsoft Entra IDロール、Microsoft 365ロール、およびAzureロールは、Microsoftがあらかじめ定義された権限を持つロールを提供しています。これらの定義済みロールを使用することが推奨されますが、特定のニーズに応じたカスタムロールを作成することも可能です。一方、Appロールでは、どの権限が付与されるかは開発者側がアプリケーション内で決定をします。

実用例

以下のシナリオに対して、どのタイプのRBACが適しているかを選んでみましょう。なお、回答には複数のRBACシステムが含まれる場合もあります。

シナリオ 1:

Azure Blob Storageの「backupexcel」リソースグループに保存されたExcelファイルを削除するために、ジョンさんにアクセス権を割り当てる。

回答: Azureロール この場合、ジョンさんにリソースグループレベルで「Storage Blob Data Contributor」ロールを割り当てます。このロールにより、ジョンさんはAzure Blob Storage内のファイルを見つけ、削除することができます。

シナリオ 2:

トーマスさんは、Azure Web App上でホストされている会社独自のAPIを呼び出すアプリケーションを開発しています。このアプリケーションは会社のEntra IDテナントに既に登録されており、ログインが’必要です。トーマスさんは、ユーザーがAPIから取得した情報にアクセスできるかを制御するロールを作成したいと考えています。

回答: App ロール 

このシナリオでは、アプリケーション内で認可の決定を行うためにAppロールが必要です。 注意点: APIはAzure Web Appにホストされていますが、Azure Web App自体へのアクセス権は必要ありません。しかし、APIを呼び出すために、登録されたアプリケーションにサービスプリンシパルを介して権限を付与する必要があるかもしれません。

シナリオ 3:

エミリー(会計士)さんは、Azureサブスクリプションにおいてユーザーに「所有者」ロールを割り当てる権限が必要です。

回答: Microsoft Entra IDロールまたはAzureロール

この状況では、エミリーさんにAzureサブスクリプションの管理を許可するMicrosoft Entra IDロール「課金管理者」や、サブスクリプションレベルのAzureロール「ユーザーアクセス管理者」を割り当てることができます。

シナリオ 4:

新しく入社したCTOは、Microsoft 365製品が会社のMicrosoftアカウント内でどのように使用され、設定されているかを把握したいと考えていますが、まだ設定変更は行わない予定です。

回答: Microsoft Entra IDロールまたはMicrosoft 365ロール

CTOには、Microsoft Entra ID内の「グローバルリーダー」ロールを割り当てることができます。このロールはMicrosoft 365サービスにも適用されます。また、必要に応じて特定のMicrosoft 365サービスに対する個別のロールを割り当てることも可能です。

まとめ

Microsoftプラットフォーム上のRBACシステムの理解が深まったでしょうか?どのタイプのロールを割り当てるべきか迷ったときは、「このアクセスはどのMicrosoft製品やサービスのためか?」、「ユーザーが必要とする最小限のスコープとアクセスは何か?」を考慮することで、正しい方向に導かれるはずです。

関連投稿


webapp_and_entra_id.png

Microsoft Entra IDをWebアプリケーションに統合

アクセス制御を実施するために、Microsoft Entra IDをウェブアプリケーション(Razor Pages)に統合する方法について詳しく解説します。