Azure Active Directory のアプリケーション オブジェクトとサービス プリンシパル オブジェクトApplication and service principal objects in Azure Active Directory

「アプリケーション」という用語の意味が、Azure Active Directory (Azure AD) のコンテキストで使用する場合に誤解されることがあります。Sometimes, the meaning of the term "application" can be misunderstood when used in the context of Azure Active Directory (Azure AD). この記事では、Azure AD アプリケーション統合の概念的および具体的な側面を、マルチテナント アプリケーションの登録と同意の例を示しながら明らかにすることです。This article clarifies the conceptual and concrete aspects of Azure AD application integration, with an illustration of registration and consent for a multi-tenant application.


Azure AD と統合されているアプリケーションは、ソフトウェアとしての側面以外の意味を持ちます。An application that has been integrated with Azure AD has implications that go beyond the software aspect. "アプリケーション" は、アプリケーション ソフトウェアだけでなく、実行時の認証/承認の "会話" におけるその Azure AD の登録やロールも指す概念的な用語としてよく使用されます。"Application" is frequently used as a conceptual term, referring to not only the application software, but also its Azure AD registration and role in authentication/authorization "conversations" at runtime.

定義上、アプリケーションは次の役割で作動できます。By definition, an application can function in these roles:

  • クライアントの役割 (リソースを使用する)Client role (consuming a resource)
  • リソース サーバーの役割 (クライアントに API を公開する)Resource server role (exposing APIs to clients)
  • クライアントとリソース サーバー両方の役割Both client role and resource server role

OAuth 2.0 承認付与フローによってメッセージ交換プロトコルが定義されます。これにより、クライアントとリソースが、それぞれリソースのデータにアクセスし、保護できるようになります。An OAuth 2.0 Authorization Grant flow defines the conversation protocol, which allows the client/resource to access/protect a resource's data, respectively.

この後のセクションでは、Azure AD アプリケーション モデルにおいて、デザイン時および実行時にアプリケーションが内部的にはどのように表されるのかを見てみましょう。In the following sections, you'll see how the Azure AD application model represents an application at design-time and run-time.

アプリケーションの登録Application registration

Azure portal で Azure AD アプリケーションを登録すると、Azure AD テナントに次の 2 つのオブジェクトが作成されます。When you register an Azure AD application in the Azure portal, two objects are created in your Azure AD tenant:

  • アプリケーション オブジェクトAn application object, and
  • サービス プリンシパル オブジェクトA service principal object

アプリケーション オブジェクトApplication object

Azure AD アプリケーションは、その唯一のアプリケーション オブジェクトによって定義されます。アプリケーション オブジェクトは、アプリケーションの登録先である Azure AD テナント (アプリケーションの "ホーム" テナントと呼ばれます) 内にあります。An Azure AD application is defined by its one and only application object, which resides in the Azure AD tenant where the application was registered, known as the application's "home" tenant. アプリケーション オブジェクトのプロパティのスキーマは、Microsoft Graph Application エンティティによって定義されています。The Microsoft Graph Application entity defines the schema for an application object's properties.

サービス プリンシパル オブジェクトService principal object

Azure AD テナントによってセキュリティ保護されているリソースにアクセスするためには、アクセスを必要とするエンティティをセキュリティ プリンシパルで表す必要があります。To access resources that are secured by an Azure AD tenant, the entity that requires access must be represented by a security principal. これは、ユーザー (ユーザー プリンシパル) とアプリケーション (サービス プリンシパル) の両方に当てはまります。This is true for both users (user principal) and applications (service principal).

セキュリティ プリンシパルは、その Azure AD テナント内のユーザー/アプリケーションのアクセス ポリシーとアクセス許可を定義します。The security principal defines the access policy and permissions for the user/application in the Azure AD tenant. これにより、サインイン時のユーザー/アプリケーションの認証、リソースへのアクセス時の承認などのコア機能を利用できるようになります。This enables core features such as authentication of the user/application during sign-in, and authorization during resource access.

アプリケーションが (登録または同意によって) テナント内のリソースへのアクセス許可を与えられると、サービス プリンシパル オブジェクトが作成されます。When an application is given permission to access resources in a tenant (upon registration or consent), a service principal object is created. サービス プリンシパル オブジェクトのプロパティのスキーマは、Microsoft Graph ServicePrincipal エンティティによって定義されています。The Microsoft Graph ServicePrincipal entity defines the schema for a service principal object's properties.

アプリケーションとサービス プリンシパルのリレーションシップApplication and service principal relationship

アプリケーション オブジェクトはアプリケーションのグローバルな表現 (すべてのテナント用) であり、サービス プリンシパル オブジェクトはアプリケーションのローカルな表現 (特定のテナント用) と考えることができます。Consider the application object as the global representation of your application for use across all tenants, and the service principal as the local representation for use in a specific tenant.

アプリケーション オブジェクトは、対応するサービス プリンシパル オブジェクトの作成に使用するために、一般的な既定のプロパティが派生するテンプレートとして機能します。The application object serves as the template from which common and default properties are derived for use in creating corresponding service principal objects. そのため、アプリケーション オブジェクトにはソフトウェア アプリケーションとの 1 対 1 の関係と、対応するサービス プリンシパル オブジェクトとの 1 対多の関係が存在します。An application object therefore has a 1:1 relationship with the software application, and a 1:many relationships with its corresponding service principal object(s).

サービス プリンシパルは、テナントによってセキュリティ保護されているリソースにサインインまたはアクセスするための ID を確立できるように、アプリケーションが使用される各テナントで作成する必要があります。A service principal must be created in each tenant where the application is used, enabling it to establish an identity for sign-in and/or access to resources being secured by the tenant. シングルテナント アプリケーションには、アプリケーション登録中に作成され、使用が同意されたサービス プリンシパルが (そのホーム テナントに) 1 つだけあります。A single-tenant application has only one service principal (in its home tenant), created and consented for use during application registration. マルチテナント Web アプリケーション/API には、そのテナントのユーザーが使用に同意した各テナントで作成されたサービス プリンシパルもあります。A multi-tenant Web application/API also has a service principal created in each tenant where a user from that tenant has consented to its use.


アプリケーション オブジェクトに加えたすべての変更は、アプリケーションのホーム テナント (アプリケーションが登録されたテナント) にだけ存在するサービス プリンシパル オブジェクトにも反映されます。Any changes you make to your application object, are also reflected in its service principal object in the application's home tenant only (the tenant where it was registered). マルチテナント アプリケーションの場合は、アプリケーション アクセス パネルを通じてアクセス権を削除し、もう一度アクセス権を付与するまで、そのコンシューマー テナントのサービス プリンシパル オブジェクトにアプリケーション オブジェクトへの変更が反映されることはありません。For multi-tenant applications, changes to the application object are not reflected in any consumer tenants' service principal objects, until the access is removed through the Application Access Panel and granted again.

既定でネイティブ アプリケーションがマルチテナントとして登録されていることにも注意してください。Also note that native applications are registered as multi-tenant by default.


次の図は、 HR アプリという名前のサンプル マルチテナント アプリケーションを基に、アプリケーションのアプリケーション オブジェクトと、対応するサービス プリンシパル オブジェクトの間のリレーションシップを表しています。The following diagram illustrates the relationship between an application's application object and corresponding service principal objects, in the context of a sample multi-tenant application called HR app. このサンプル シナリオには、次の 3 つの Azure AD テナントがあります。There are three Azure AD tenants in this example scenario:

  • Adatum - HR アプリを開発した会社が使用するテナントAdatum - The tenant used by the company that developed the HR app
  • Contoso - HR アプリのコンシューマーである Contoso という組織が使用するテナントContoso - The tenant used by the Contoso organization, which is a consumer of the HR app
  • Fabrikam - Contoso と同じく HR アプリのコンシューマーである Fabrikam という組織が使用するテナントFabrikam - The tenant used by the Fabrikam organization, which also consumes the HR app

アプリ オブジェクトとサービス プリンシパル オブジェクトの間のリレーションシップ

このサンプル シナリオの内容:In this example scenario:

手順Step 説明Description
11 アプリケーションとサービス プリンシパル オブジェクトを、アプリケーションのホーム テナント内に作成するプロセスです。Is the process of creating the application and service principal objects in the application's home tenant.
22 Contoso と Fabrikam の管理者が同意を終えると、それぞれの会社の Azure AD テナント内にサービス プリンシパル オブジェクトが作成され、それに管理者が付与したアクセス許可が割り当てられます。When Contoso and Fabrikam administrators complete consent, a service principal object is created in their company's Azure AD tenant and assigned the permissions that the administrator granted. HR アプリは、個々のユーザー用として、ユーザーによる同意を許可するように構成/設計することができる点にも注目してください。Also note that the HR app could be configured/designed to allow consent by users for individual use.
33 HR アプリケーション (Contoso と Fabrikam) のコンシューマー テナントにそれぞれ独自のサービス プリンシパル オブジェクトが作成されます。The consumer tenants of the HR application (Contoso and Fabrikam) each have their own service principal object. それぞれ実行時におけるアプリケーションのインスタンスの使用を表し、それぞれの管理者によって同意されたアクセス許可によって管理されます。Each represents their use of an instance of the application at runtime, governed by the permissions consented by the respective administrator.

次の手順Next steps