Microsoft Entra ID のアプリケーションとサービス プリンシパル オブジェクト
この記事では、Microsoft Entra ID のアプリケーション登録、アプリケーション オブジェクト、およびサービス プリンシパルの概要、使用方法、相互関係について説明します。 アプリケーションのアプリケーション オブジェクトと対応するサービス プリンシパル オブジェクトの間の関係を示すために、マルチテナントのシナリオ例も紹介します。
アプリケーションの登録
ID およびアクセス管理の機能を Microsoft Entra ID に委任するには、アプリケーションを Microsoft Entra テナントに登録する必要があります。 アプリケーションを Microsoft Entra ID に登録するとき、アプリケーションの ID 構成を作成します。これによって Microsoft Entra ID との統合が可能になります。 アプリを登録するときに、そのアプリがシングル テナントかマルチテナントかを選択し、必要に応じてリダイレクト URI を設定します。 アプリを登録する手順については、アプリの登録に関するクイックスタートを参照してください。
アプリの登録が完了すると、ホーム テナントまたはディレクトリ内に存在するアプリ (アプリケーション オブジェクト) のグローバルに一意なインスタンスが作成されます。 また、アプリにグローバルに一意な ID (アプリまたはクライアント ID) も割り当てられます。 シークレットまたは証明書とスコープを追加してアプリを機能させたり、サインイン ダイアログでアプリのブランド化をカスタマイズしたりすることができます。
アプリケーションを登録すると、ホーム テナントにアプリケーション オブジェクトとサービス プリンシパル オブジェクトが自動的に作成されます。 Microsoft Graph API を使用してアプリケーションを登録または作成する場合、サービス プリンシパル オブジェクトの作成は別の手順です。
アプリケーション オブジェクト
Microsoft Entra アプリケーションは、その唯一のアプリケーション オブジェクトによって定義されます。アプリケーション オブジェクトは、アプリケーションの登録先の Microsoft Entra テナント (アプリケーションの "ホーム" テナントという) 内にあります。 アプリケーション オブジェクトは、1 つ以上のサービス プリンシパル オブジェクトを作成するためのテンプレートまたはブループリントとして使用されます。 サービス プリンシパルは、アプリケーションが使用されるすべてのテナントに作成されます。 オブジェクト指向プログラミングのクラスと同様に、アプリケーション オブジェクトには、作成されたすべてのサービス プリンシパル (またはアプリケーション インスタンス) に適用されるいくつかの静的プロパティがあります。
アプリケーション オブジェクトでは、アプリケーションの 3 つの側面について説明します。
- サービスがアプリケーションにアクセスするためにトークンを発行する方法
- アプリケーションがアクセスする必要があるリソース
- アプリケーションが実行できるアクション
Microsoft Entra 管理センターの [アプリの登録] ページを使用して、ホーム テナントのアプリケーション オブジェクトを一覧表示し、管理することができます。
アプリケーション オブジェクトのプロパティのスキーマは、Microsoft Graph Application エンティティによって定義されています。
サービス プリンシパル オブジェクト
Microsoft Entra テナントによってセキュリティ保護されているリソースにアクセスするには、アクセスを必要とするエンティティをセキュリティ プリンシパルで表す必要があります。 この要件は、ユーザー (ユーザー プリンシパル) とアプリケーション (サービス プリンシパル) の両方に当てはまります。 セキュリティ プリンシパルは、その Microsoft Entra テナント内のユーザー/アプリケーションのアクセス ポリシーとアクセス許可を定義します。 これにより、サインイン時のユーザー/アプリケーションの認証、リソースへのアクセス時の承認などのコア機能を利用できるようになります。
サービス プリンシパルには、次の 3 種類があります。
アプリケーション - この種類のサービス プリンシパルは、単一のテナントまたはディレクトリ内のグローバル アプリケーション オブジェクトのローカル表現、つまりアプリケーション インスタンスです。 この場合、サービス プリンシパルは、アプリケーション オブジェクトから作成された具象インスタンスであり、そのアプリケーション オブジェクトから特定のプロパティが継承されます。 サービス プリンシパルは、アプリケーションが使用される各テナントで作成され、グローバルに一意なアプリ オブジェクトが参照されます。 サービス プリンシパル オブジェクトには、特定のテナント内でアプリが実際に実行できること、アプリにアクセスできるユーザー、アプリからアクセスできるリソースを定義します。
アプリケーションが (登録または同意によって) テナント内のリソースへのアクセス許可を与えられると、サービス プリンシパル オブジェクトが作成されます。 アプリケーションを登録すると、サービス プリンシパルが自動的に作成されます。 Azure PowerShell、Azure CLI、Microsoft Graph、およびその他のツールを使用して、テナントにサービス プリンシパル オブジェクトを作成することもできます。
マネージド ID - この種類のサービス プリンシパルは、マネージド ID を表す目的で使用されます。 マネージド ID により、開発者は資格情報を管理する必要がなくなります。 マネージド ID は、Microsoft Entra 認証をサポートするリソースに接続するときに使う ID をアプリケーションに提供します。 マネージド ID が有効になっている場合、そのマネージド ID を表すサービス プリンシパルがテナントに作成されます。 マネージド ID を表すサービス プリンシパルには、権利やアクセス許可を付与できますが、直接更新したり変更を加えたりすることはできません。
レガシ - この種類のサービス プリンシパルは、レガシ アプリを表します。これは、アプリの登録前に作成されたアプリ、またはレガシ エクスペリエンスを使用して作成されたアプリです。 レガシ サービス プリンシパルには、資格情報、サービス プリンシパル名、応答 URL など、許可されているユーザーが編集できるプロパティを割り当てることができますが、アプリの登録は関連付けられません。 このサービス プリンシパルは、その作成元のテナントでのみ使用できます。
サービス プリンシパル オブジェクトのプロパティのスキーマは、Microsoft Graph ServicePrincipal エンティティによって定義されています。
Microsoft Entra 管理センターの [エンタープライズ アプリケーション] ページを使用して、テナントのサービス プリンシパルを一覧表示および管理することができます。 サービス プリンシパルのアクセス許可、ユーザーが同意したアクセス許可、その同意を行ったユーザー、サインイン情報などを確認できます。
アプリケーション オブジェクトとサービス プリンシパル間のリレーションシップ
アプリケーション オブジェクトは、すべてのテナントで使用するアプリケーションの "グローバル" 表現であり、サービス プリンシパルは、特定のテナントで使用する "ローカル" 表現です。 アプリケーション オブジェクトは、対応するサービス プリンシパル オブジェクトの作成に使用するために、一般的な既定のプロパティが派生するテンプレートとして機能します。
アプリケーション オブジェクトには以下があります。
- ソフトウェア アプリケーションとの 1 対 1 の関係
- 対応するサービス プリンシパル オブジェクトとの 1 対多の関係
サービス プリンシパルは、テナントによってセキュリティ保護されているリソースにサインインまたはアクセスするための ID を確立できるように、アプリケーションが使用される各テナントで作成する必要があります。 シングルテナント アプリケーションには、アプリケーション登録中に作成され、使用が同意されたサービス プリンシパルが (そのホーム テナントに) 1 つだけあります。 マルチテナント アプリケーションには、そのテナントのユーザーが使用に同意した各テナントで作成されたサービス プリンシパルもあります。
アプリに関連するサービス プリンシパルを一覧表示する
アプリケーション オブジェクトに関連するサービス プリンシパルを見つけることができます。
Microsoft Entra 管理センターで、アプリケーション登録の概要に移動します。 [ローカル ディレクトリでのマネージド アプリケーション] を選びます。
アプリケーションの変更と削除の結果
アプリケーション オブジェクトに加えたすべての変更は、アプリケーションのホーム テナント (アプリケーションが登録されたテナント) にだけ存在するサービス プリンシパル オブジェクトにも反映されます。 つまり、アプリケーション オブジェクトを削除すると、そのホーム テナントのサービス プリンシパル オブジェクトも削除されます。 ただし、アプリの登録 UI からそのアプリケーション オブジェクトを復元しても、対応するサービス プリンシパルは復元されません。 アプリケーションとそのサービス プリンシパル オブジェクトの削除と復元について詳しくは、アプリケーションとサービス プリンシパル オブジェクトの削除と復元に関する記事を参照してください。
例
次の図は、HR アプリという名前のサンプル マルチテナント アプリケーションを基に、アプリケーションのアプリケーション オブジェクトと、対応するサービス プリンシパル オブジェクトの間のリレーションシップを表しています。 このサンプル シナリオには、次の 3 つの Microsoft Entra テナントがあります。
- Adatum - HR アプリを開発した会社が使用するテナント
- Contoso - HR アプリのコンシューマーである Contoso という組織が使用するテナント
- Fabrikam - Contoso と同じく HR アプリのコンシューマーである Fabrikam という組織が使用するテナント
このサンプル シナリオの内容:
手順 | 説明 |
---|---|
1 | アプリケーションとサービス プリンシパル オブジェクトを、アプリケーションのホーム テナント内に作成するプロセスです。 |
2 | Contoso と Fabrikam の管理者が同意を終えると、それぞれの会社の Microsoft Entra テナント内にサービス プリンシパル オブジェクトが作成され、それに管理者が付与したアクセス許可が割り当てられます。 HR アプリは、個々のユーザー用として、ユーザーによる同意を許可するように構成/設計することができる点にも注目してください。 |
3 | HR アプリケーション (Contoso と Fabrikam) のコンシューマー テナントにそれぞれ独自のサービス プリンシパル オブジェクトが作成されます。 それぞれ実行時におけるアプリケーションのインスタンスの使用を表し、それぞれの管理者によって同意されたアクセス許可によって管理されます。 |
次のステップ
サービス プリンシパルを作成する方法について学習してください。
- Microsoft Entra 管理センターの使用
- Azure PowerShell の使用
- Azure CLI の使用
- Microsoft Graph を使用し、次に Microsoft Graph Explorer を使用して、アプリケーションとサービス プリンシパル オブジェクトの両方にクエリを実行します。