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

この記事では、Azure Active Directory のアプリケーション登録、アプリケーション オブジェクト、およびサービス プリンシパルの概要、使用方法、相互関係について説明します。This article describes application registration, application objects, and service principals in Azure Active Directory: what they are, how they're used, and how they are related to each other. アプリケーションのアプリケーション オブジェクトと対応するサービス プリンシパル オブジェクトの間の関係を示すために、マルチテナントのシナリオ例も紹介します。A multi-tenant example scenario is also presented to illustrate the relationship between an application's application object and corresponding service principal objects.

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

ID とアクセスの管理機能を Azure AD に委任するには、アプリケーションを Azure AD のテナントに登録する必要があります。In order to delegate Identity and Access Management functions to Azure AD, an application must be registered with an Azure AD tenant. アプリケーションを Azure AD に登録するときに、アプリケーションの ID 構成を作成します。これによって Azure AD との連携が可能となります。When you register your application with Azure AD, you are creating an identity configuration for your application that allows it to integrate with Azure AD. Azure portal でアプリを登録するときに、それがシングル テナント (自分のテナント内でのみアクセス可能) かマルチテナント (他のテナント内でアクセス可能) かを選択し、必要に応じてリダイレクト URI (アクセス トークンの送信先) を設定します。When you register an app in the Azure portal, you choose whether it's a single tenant (only accessible in your tenant) or multi-tenant (accessible to in other tenants) and can optionally set a redirect URI (where the access token is sent to).

アプリの登録

アプリの登録が完了すると、ホーム テナントまたはディレクトリ内に存在するアプリ (アプリケーション オブジェクト) のグローバルに一意なインスタンスが作成されます。When you've completed the app registration, you have a globally unique instance of the app (the application object) which lives within your home tenant or directory. また、アプリにグローバルに一意な ID (アプリまたはクライアント ID) も割り当てられます。You also have a globally unique ID for your app (the app or client ID). ポータルでは、シークレットまたは証明書とスコープを追加してアプリを機能させることや、サインイン ダイアログでアプリのブランドをカスタマイズすることなどができます。In the portal, you can then add secrets or certificates and scopes to make your app work, customize the branding of your app in the sign-in dialog, and more.

ポータルでアプリケーションを登録すると、ホーム テナントにアプリケーション オブジェクトとサービス プリンシパル オブジェクトが自動的に作成されます。If you register an application in the portal, an application object as well as a service principal object are automatically created in your home tenant. Microsoft Graph API を使用してアプリケーションを登録または作成する場合、サービス プリンシパル オブジェクトの作成は別の手順です。If you register/create an application using the Microsoft Graph APIs, creating the service principal object is a separate step.

アプリケーション オブジェクト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). アプリケーション オブジェクトは、1 つ以上のサービス プリンシパル オブジェクトを作成するためのテンプレートまたはブループリントとして使用されます。An application object is used as a template or blueprint to create one or more service principal objects. サービス プリンシパルは、アプリケーションが使用されるすべてのテナントに作成されます。A service principal is created in every tenant where the application is used. オブジェクト指向プログラミングのクラスと同様に、アプリケーション オブジェクトには、作成されたすべてのサービス プリンシパル (またはアプリケーション インスタンス) に適用されるいくつかの静的プロパティがあります。Similar to a class in object-oriented programming, the application object has some static properties that are applied to all the created service principals (or application instances).

アプリケーション オブジェクトには、サービスからアプリケーションにアクセスする際にトークンを発行する方法、アプリケーションからアクセスする必要があるリソース、アプリケーションで実行できるアクションというアプリケーションの 3 つの側面が記述されています。The application object describes three aspects of an application: how the service can issue tokens in order to access the application, resources that the application might need to access, and the actions that the application can take.

Azure portal[アプリの登録] ブレードは、ホーム テナントのアプリケーション オブジェクトを一覧表示し、管理するために使用されます。The App registrations blade in the Azure portal is used to list and manage the application objects in your 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 requirement 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.

サービス プリンシパルは、単一のテナントまたはディレクトリ内のグローバル アプリケーション オブジェクトのローカル表現、つまりアプリケーション インスタンスです。A service principal is the local representation, or application instance, of a global application object in a single tenant or directory. サービス プリンシパルは、アプリケーション オブジェクトから作成された具象インスタンスであり、そのアプリケーション オブジェクトから特定のプロパティが継承されます。A service principal is a concrete instance created from the application object and inherits certain properties from that application object. サービス プリンシパルは、アプリケーションが使用される各テナントで作成され、グローバルに一意なアプリ オブジェクトが参照されます。A service principal is created in each tenant where the application is used and references the globally unique app object. サービス プリンシパル オブジェクトには、特定のテナント内でアプリが実際に実行できること、アプリにアクセスできるユーザー、アプリからアクセスできるリソースを定義します。The service principal object defines what the app can actually do in the specific tenant, who can access the app, and what resources the app can access.

アプリケーションが (登録または同意によって) テナント内のリソースへのアクセス許可を与えられると、サービス プリンシパル オブジェクトが作成されます。When an application is given permission to access resources in a tenant (upon registration or consent), a service principal object is created. Azure PowerShell、Azure CLI、Microsoft GraphAzure portal、およびその他のツールを使用して、テナントにサービス プリンシパル オブジェクトを作成することもできます。You can also create service principal object in a tenant using Azure PowerShell, Azure CLI, Microsoft Graph, the Azure portal, and other tools. ポータルを使用する場合、アプリケーションを登録すると、サービス プリンシパルが自動的に作成されます。When using the portal, a service principal is created automatically when you register an application.

ポータルの [エンタープライズ アプリケーション] ブレードは、テナントのサービス プリンシパルを一覧表示および管理するために使用されます。The Enterprise applications blade in the portal is used to list and manage the service principals in a tenant. サービス プリンシパルのアクセス許可、ユーザーが同意したアクセス許可、その同意を行ったユーザー、サインイン情報などを確認できます。You can see the service principal's permissions, user consented permissions, which users have done that consent, sign in information, and more.

エンタープライズ アプリ ブレード

サービス プリンシパル オブジェクトのプロパティのスキーマは、Microsoft Graph ServicePrincipal エンティティによって定義されています。The Microsoft Graph ServicePrincipal entity defines the schema for a service principal object's properties.

アプリケーション オブジェクトとサービス プリンシパル間のリレーションシップRelationship between application objects and service principals

アプリケーション オブジェクトは、すべてのテナントで使用するアプリケーションの "グローバル" 表現であり、サービス プリンシパルは、特定のテナントで使用する "ローカル" 表現です。The application object is the global representation of your application for use across all tenants, and the service principal is 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 relationship 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.

Example

次の図は、 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