Microsoft Entra IDでは、Microsoft Entra リソースを様々な役割の人が管理できるように、多くのビルドインロールが用意されています。これらのロールをユーザーに割り当てる際には、原則として操作に必要な最小特権ロールを割り当てることが推奨されています。
しかし、各ロールで可能な操作の境界が複雑で、詳細を理解しておらず、とりあえず権限の強いロールを割り当ててしまうことはないでしょうか。
そのような事態に陥らないために、本記事ではEntra IDの「アプリの登録」周辺の操作について、ビルドインロールで可能な操作を整理します。
調査・検証の内容
Microsoft Entra IDでの管理対象は多岐にわたりますが、今回は「アプリの登録」や「エンタープライズ アプリケーション」関連の操作に関するロールを整理します。
今回調査および検証したEntra IDの操作は、以下の表の内容です。以降の文章では、「アプリ登録」オブジェクトは「アプリ」や「アプリ登録」と表現し、「エンタープライズアプリ」オブジェクト(サービスプリンシパル)は「エンタープライズアプリ」と記載します。
操作 | 詳細 |
---|---|
新規アプリの登録 | Entra IDのアプリを新規登録します。 |
アプリ登録の設定変更 | 登録されたアプリに対する設定変更を実施します。具体的には、アプリ登録の"管理"で設定できる以下のような操作です。
|
エンタープライズアプリの設定変更 | エンタープライズアプリに対する設定変更を実施します。具体的には、エンタープライズアプリの"管理"で設定できる以下のような操作です。
|
APIアクセス許可に対する管理者の同意 | アプリに追加済みのAPIアクセス許可に対して管理者の同意を与えます。ただし、ここでのAPIアクセス許可の項目は、下の行で記載しているMS Graphのアプリケーション権限のアクセス許可は除きます。 |
MS Graphのアプリケーション権限のAPIアクセス許可に対する管理者の同意 | アプリに追加済みのMicrosoft Graphのアプリケーション権限でのアクセス許可に対して、管理者の同意を与えます。 |
ロールに関しては、以下のロールについて調査や検証をしました。
- ユーザー(特定のロールを何も割り当てていないユーザー)
- アプリケーション開発者
- アプリケーション管理者
- 特権ロール管理者
- グローバル管理者
「アプリケーション管理者」に似たものとして、「クラウドアプリケーション管理者」ロールも存在しますが、アプリプロキシに関する権限以外は同じため、今回は調査対象から省きました。
結果の整理
それぞれの操作に対して各ロールでの実行可能の有無をまとめると、以下の表のようになりました。
ユーザー (ロールなし) | アプリケーション開発者 | アプリケーション管理者 | 特権ロール管理者 | グローバル管理者 | |
---|---|---|---|---|---|
新規アプリの登録 | △ ※1 (テナント設定で許可されている場合は可能) |
◯ | ◯ | △ ※1 (テナント設定で許可されている場合は可能) |
◯ |
アプリ登録の設定変更 | △ ※2 (アプリ所有者の場合は可能) |
△ ※2 (アプリ所有者の場合は可能) |
◯ | △ ※2 (アプリ所有者の場合は可能) |
◯ |
エンタープライズアプリの設定変更 | △ ※3 (エンタープライズアプリ所有者の場合は可能) |
△ ※3 (エンタープライズアプリ所有者の場合は可能) |
◯ | △ ※3 (エンタープライズアプリ所有者の場合は可能) |
◯ |
APIアクセス許可に対する管理者の同意 | X | X | ◯ | ◯ | ◯ |
MS Graphのアプリケーション権限のAPIアクセス許可に対する管理者の同意 | X | X | X ※4 |
◯ | ◯ |
表に記載の注釈について、詳細を以下に整理しました。
※1:ロールを割り当てていないユーザーによる新規アプリ登録
Entra ID テナント全体の "ユーザー設定" にて「ユーザーはアプリケーションを登録できる」を「はい」にしている場合は、ロール割り当てのないユーザー(既定のユーザーロール)であっても、新規アプリの登録が可能です。
- 参考:既定のユーザー アクセス許可 - Microsoft Entra | Microsoft Learn
- 参考:「ユーザーはアプリケーションを登録できる」の設定について | Japan Azure Identity Support Blog
※2:アプリ登録の所有者
「アプリケーション管理者」や「グローバル管理者」でなくとも、対象アプリについて所有者であれば、アプリ登録の設定を変更することが可能です。
また、アプリを登録したユーザーは、アプリの所有者として自動的に追加されます。
ただし、「アプリケーション管理者」や「グローバル管理者」であるユーザーがアプリを登録した場合は、そのユーザーがアプリ所有者に自動的に追加されることはありません。
おそらくこれは、これらの特権ロールではアプリ所有者でなくても、すべてのアプリに対してアプリ所有者と同等の権限を持つため、自動的には追加されない仕様であると考えられます。
※3:エンタープライズアプリの所有者
エンタープライズアプリについてもアプリ登録と同様に、「アプリケーション管理者」や「グローバル管理者」でなくとも、対象のエンタープライズアプリについて所有者であれば、エンタープライズアプリの設定を変更することが可能です。
また、アプリを登録したユーザーは、そのアプリ登録に紐づくエンタープライズアプリの所有者として自動的に追加されます。アプリ登録の場合と同様に、「アプリケーション管理者」や「グローバル管理者」であるユーザーがアプリ登録した場合は、エンタープライズアプリの所有者として自動的に追加されることはないようです。
※4:APIアクセス許可に対する管理者の同意
「アプリケーション管理者」、「クラウドアプリケーション開発者」、「特権ロール管理者」、「グローバル管理者」は、アプリの基本的なAPIアクセス許可に対する管理者の同意を与えることができます。
ただし、Microsoft Graphのアプリケーション権限でのAPIアクセス許可については、「特権ロール管理者」または「グローバル管理者」のみが同意を与えることができます。
この仕様の理由については、「アプリケーション管理者」がアプリ権限のMicrosoft Graph APIのアクセス許可に同意できてしまうと、「特権ロール管理者」や「全体管理者」のみが可能な操作もアプリを経由することで実行できるようになってしまうため、これを防ぐ目的と考えられます。
- 参考:アプリケーションに対してテナント全体の管理者の同意を付与する - Microsoft Entra ID | Microsoft Learn
- 参考:Microsoft Entra ビルトイン ロール - Microsoft Entra ID | Microsoft Learn
最後に
Entra IDにおけるアプリ登録まわりの設定項目は複雑ですが、アプリ登録に関連するEntra ID ロールについてはこの記事で整理できたのではないでしょうか。
様々な役割の関係者間でEntra IDを利用する上で、適切な権限管理をする際の参考になれば幸いです。