Azure リソースのマネージド ID とはWhat is managed identities for Azure resources?

Azure リソースのマネージドID は、Azure Active Directory の機能です。Managed identities for Azure resources is a feature of Azure Active Directory. Azure リソースのマネージド ID をサポートする各 Azure サービスは、それぞれ固有のタイムラインの下で提供されます。Each of the Azure services that support managed identities for Azure resources are subject to their own timeline. ご利用のリソースに対するマネージド ID の提供状態と既知の問題をあらかじめ確認しておいてください。Make sure you review the availability status of managed identities for your resource and known issues before you begin.

クラウド アプリケーションの構築時における一般的な課題は、クラウド サービスへの認証用のコードで資格情報をどのように管理するかです。A common challenge when building cloud applications is how to manage the credentials in your code for authenticating to cloud services. 資格情報を安全に保つことは重要な課題です。Keeping the credentials secure is an important task. 資格情報は開発者のワークステーションに表示されないこと、またソース管理にチェックインされないことが理想です。Ideally, the credentials never appear on developer workstations and aren't checked into source control. 資格情報やシークレットなど、各種キーを安全に保管する手段としては Azure Key Vault がありますが、それらを取得するためには、コードから Key Vault に対して認証を行わなければなりません。Azure Key Vault provides a way to securely store credentials, secrets, and other keys, but your code has to authenticate to Key Vault to retrieve them.

この問題を解決するのが、Azure Active Directory (Azure AD) の Azure リソースのマネージド ID 機能です。The managed identities for Azure resources feature in Azure Active Directory (Azure AD) solves this problem. Azure AD で自動的に管理される ID を Azure サービスに提供する機能となります。The feature provides Azure services with an automatically managed identity in Azure AD. この ID を使用すれば、コードに資格情報を追加しなくても、Azure AD の認証をサポートするさまざまなサービス (Key Vault を含む) に対して認証を行うことができます。You can use the identity to authenticate to any service that supports Azure AD authentication, including Key Vault, without any credentials in your code.

Azure リソースのマネージド ID は、Azure サブスクリプションを対象とした Azure AD の無料の機能です。The managed identities for Azure resources feature is free with Azure AD for Azure subscriptions. 追加コストはかかりません。There's no additional cost.

注意

Azure リソースのマネージド ID は、以前のマネージドサービス ID (MSI) の新しい名前です。Managed identities for Azure resources is the new name for the service formerly known as Managed Service Identity (MSI).

用語集Terminology

Azure リソースのマネージド ID のドキュメント セット全体で、次の用語が使用されます。The following terms are used throughout the managed identities for Azure resources documentation set:

  • クライアント ID - Azure AD によって生成される一意識別子で、初期プロビジョニングの間にアプリケーションおよびサービス プリンシパルと結び付けられます。Client ID - a unique identifier generated by Azure AD that is tied to an application and service principal during its initial provisioning.
  • プリンシパル ID - マネージド ID に対するサービス プリンシパル オブジェクトのオブジェクト ID であり、Azure リソースへのロールベースのアクセス権を付与するために使用されます。Principal ID - the object ID of the service principal object for your managed identity that is used to grant role-based access to an Azure resource.
  • Azure Instance Metadata Service (IMDS) - Azure Resource Manager を使用して作成されたすべての IaaS VM にアクセスできる REST エンドポイントです。Azure Instance Metadata Service (IMDS) - a REST endpoint accessible to all IaaS VMs created via the Azure Resource Manager. このエンドポイントは、VM からのみアクセスできる、よく知られているルーティング不可 IP アドレス (169.254.169.254) で使用できます。The endpoint is available at a well-known non-routable IP address (169.254.169.254) that can be accessed only from within the VM.

Azure リソースのマネージド ID のしくみHow does the managed identities for Azure resources work?

マネージド ID には、次の 2 種類があります。There are two types of managed identities:

  • システム割り当てマネージド ID は、Azure サービス インスタンス上で直接有効にされます。A system-assigned managed identity is enabled directly on an Azure service instance. この ID を有効にすると、そのインスタンスのサブスクリプションによって信頼されている Azure AD テナントに対し、対応するインスタンスの ID が Azure によって作成されます。When the identity is enabled, Azure creates an identity for the instance in the Azure AD tenant that's trusted by the subscription of the instance. ID が作成されると、その資格情報がインスタンスにプロビジョニングされます。After the identity is created, the credentials are provisioned onto the instance. システム割り当て ID のライフサイクルは、その ID が有効にされた Azure サービス インスタンスに直接関連付けられます。The lifecycle of a system-assigned identity is directly tied to the Azure service instance that it's enabled on. インスタンスが削除された場合、Azure は Azure AD の資格情報および ID を自動的にクリーンアップします。If the instance is deleted, Azure automatically cleans up the credentials and the identity in Azure AD.
  • ユーザー割り当てマネージド ID は、スタンドアロン Azure リソースとして作成されます。A user-assigned managed identity is created as a standalone Azure resource. 作成プロセスで、使用されているサブスクリプションによって信頼されている Azure AD テナントに、Azure が ID を作成します。Through a create process, Azure creates an identity in the Azure AD tenant that's trusted by the subscription in use. 作成された ID は、1 つまたは複数の Azure サービス インスタンスに割り当てることができます。After the identity is created, the identity can be assigned to one or more Azure service instances. ユーザー割り当て ID のライフサイクルは、その ID が割り当てられている Azure サービス インスタンスのライフサイクルとは個別に管理されます。The lifecycle of a user-assigned identity is managed separately from the lifecycle of the Azure service instances to which it's assigned.

内部的には、マネージド ID は特別な種類のサービス プリンシパルであり、Azure リソースとだけ使用されるようにロックされています。Internally, managed identities are service principals of a special type, which are locked to only be used with Azure resources. マネージド ID が削除されると、対応するサービス プリンシパルが自動的に削除されます。When the managed identity is deleted, the corresponding service principal is automatically removed.

Azure AD Authentication をサポートするサービスのアクセス トークンは、コードからマネージド ID を使用して要求できます。Your code can use a managed identity to request access tokens for services that support Azure AD authentication. Azure は、サービス インスタンスによって使用される資格情報のローリングを実行します。Azure takes care of rolling the credentials that are used by the service instance.

次の図は、マネージド サービス ID と Azure 仮想マシン (VM) が連携するようすを示したものです。The following diagram shows how managed service identities work with Azure virtual machines (VMs):

マネージド サービス ID と Azure VM

プロパティProperty システム割り当てマネージド IDSystem-assigned managed identity ユーザー割り当てマネージド IDUser-assigned managed identity
作成Creation Azure リソース (たとえば、Azure 仮想マシンまたは Azure App Service) の一部として作成されますCreated as part of an Azure resource (for example, an Azure virtual machine or Azure App Service) スタンドアロンの Azure リソースとして作成されますCreated as a stand-alone Azure resource
ライフサイクルLifecycle マネージド ID の作成に使用された Azure リソースとの共有ライフサイクル。Shared lifecycle with the Azure resource that the managed identity is created with.
親リソースが削除されると、マネージド ID も削除されます。When the parent resource is deleted, the managed identity is deleted as well.
独立したライフサイクルです。Independent life-cycle.
明示的に削除する必要があります。Must be explicitly deleted.
Azure リソース間で共有されますSharing across Azure resources 共有できません。Cannot be shared.
1 つの Azure リソースにのみ関連付けることができます。It can only be associated with a single Azure resource.
共有できますCan be shared
同じユーザー割り当てマネージド ID を、複数の Azure リソースに関連付けることができます。The same user-assigned managed identity can be associated with more than one Azure resource.
一般的なユース ケースCommon use cases 1 つの Azure リソース内に含まれるワークロードWorkloads that are contained within a single Azure resource
独立した ID が必要なワークロード。Workloads for which you need independent identities.
たとえば、1 つの仮想マシンで実行されるアプリケーションFor example, an application that runs on a single virtual machine
複数のリソースで実行され、1 つの ID を共有できるワークロード。Workloads that run on multiple resources and which can share a single identity.
プロビジョニング フローの一部として、セキュリティで保護されたリソースへの事前承認が必要なワークロード。Workloads that need pre-authorization to a secure resource as part of a provisioning flow.
リソースが頻繁にリサイクルされるものの、アクセス許可は一貫性を保つ必要があるワークロード。Workloads where resources are recycled frequently, but permissions should stay consistent.
たとえば、複数の仮想マシンが同じリソースにアクセスする必要があるワークロードFor example, a workload where multiple virtual machines need to access the same resource

システム割り当てマネージド ID と Azure VM の連携How a system-assigned managed identity works with an Azure VM

  1. Azure Resource Manager は、VM 上でシステム割り当てマネージド ID を有効にするための要求を受け取ります。Azure Resource Manager receives a request to enable the system-assigned managed identity on a VM.

  2. Azure Resource Manager は、VM の ID を表すサービス プリンシパルを Azure AD に作成します。Azure Resource Manager creates a service principal in Azure AD for the identity of the VM. このサブスクリプションによって信頼されている Azure AD テナントに、サービス プリンシパルが作成されます。The service principal is created in the Azure AD tenant that's trusted by the subscription.

  3. Azure Resource Manager では、Azure Instance Metadata Service の ID エンドポイントをサービス プリンシパルのクライアント ID と証明書を使用して更新することによって、VM 上に ID が構成されます。Azure Resource Manager configures the identity on the VM by updating the Azure Instance Metadata Service identity endpoint with the service principal client ID and certificate.

  4. VM に ID が設定された後、Azure リソースにアクセスする権利を VM に与えるには、そのサービス プリンシパル情報を使用します。After the VM has an identity, use the service principal information to grant the VM access to Azure resources. Azure Resource Manager を呼び出すには、Azure AD のロールベースのアクセス制御 (RBAC) を使用して、VM のサービス プリンシパルに適切なロールを割り当てます。To call Azure Resource Manager, use role-based access control (RBAC) in Azure AD to assign the appropriate role to the VM service principal. Key Vault を呼び出すには、Key Vault 内の特定のシークレットまたは特定のキーにアクセスする権利をコードに与えます。To call Key Vault, grant your code access to the specific secret or key in Key Vault.

  5. VM 上で実行されているコードは、VM 内からのみアクセスできる Azure Instance Metadata サービス エンドポイントにトークン (http://169.254.169.254/metadata/identity/oauth2/token) を要求できます。Your code that's running on the VM can request a token from the Azure Instance Metadata service endpoint, accessible only from within the VM: http://169.254.169.254/metadata/identity/oauth2/token

    • リソース パラメーターは、トークンの送信先のサービスを指定します。The resource parameter specifies the service to which the token is sent. Azure Resource Manager に対して認証を行うには、resource=https://management.azure.com/ を使用します。To authenticate to Azure Resource Manager, use resource=https://management.azure.com/.
    • API バージョン パラメーターは、IMDS バージョンを指定します。api-version=2018-02-01 以降を使用してください。API version parameter specifies the IMDS version, use api-version=2018-02-01 or greater.
  6. 手順 3. で構成したクライアント ID と証明書を使用して、手順 5. で指定したアクセス トークンを要求する呼び出しが Azure AD に対して行われます。A call is made to Azure AD to request an access token (as specified in step 5) by using the client ID and certificate configured in step 3. Azure AD は、JSON Web トークン (JWT) アクセス トークンを返します。Azure AD returns a JSON Web Token (JWT) access token.

  7. コードは、Azure AD 認証をサポートするサービスへの呼び出しでアクセス トークンを送信します。Your code sends the access token on a call to a service that supports Azure AD authentication.

ユーザー割り当てマネージド ID と Azure VM の連携How a user-assigned managed identity works with an Azure VM

  1. Azure Resource Manager が、ユーザー割り当てマネージド ID を作成するための要求を受け取ります。Azure Resource Manager receives a request to create a user-assigned managed identity.

  2. Azure Resource Manager が、ユーザー割り当てマネージド ID を表すサービス プリンシパルを Azure AD に作成します。Azure Resource Manager creates a service principal in Azure AD for the user-assigned managed identity. このサブスクリプションによって信頼されている Azure AD テナントに、サービス プリンシパルが作成されます。The service principal is created in the Azure AD tenant that's trusted by the subscription.

  3. ユーザーが割り当てたマネージド ID を VM 上に構成する要求が Azure Resource Manager によって受信され、Azure Instance Metadata Service の ID エンドポイントがサービス プリンシパルのクライアント ID と証明書を使用して更新されます。Azure Resource Manager receives a request to configure the user-assigned managed identity on a VM and updates the Azure Instance Metadata Service identity endpoint with the user-assigned managed identity service principal client ID and certificate.

  4. ユーザー割り当てマネージド ID が作成された後、Azure リソースにアクセスする権利をその ID に与えるには、そのサービス プリンシパル情報を使用します。After the user-assigned managed identity is created, use the service principal information to grant the identity access to Azure resources. Azure Resource Manager を呼び出すには、Azure AD の RBAC を使用して、ユーザー割り当て ID のサービス プリンシパルに適切なロールを割り当てます。To call Azure Resource Manager, use RBAC in Azure AD to assign the appropriate role to the service principal of the user-assigned identity. Key Vault を呼び出すには、Key Vault 内の特定のシークレットまたは特定のキーにアクセスする権利をコードに与えます。To call Key Vault, grant your code access to the specific secret or key in Key Vault.

    注意

    この手順は、手順 3. の前に行ってもかまいません。You can also do this step before step 3.

  5. VM 上で実行されているコードは、VM 内からのみアクセスできる Azure Instance Metadata Service ID エンドポイントにトークン (http://169.254.169.254/metadata/identity/oauth2/token) を要求できます。Your code that's running on the VM can request a token from the Azure Instance Metadata Service identity endpoint, accessible only from within the VM: http://169.254.169.254/metadata/identity/oauth2/token

    • リソース パラメーターは、トークンの送信先のサービスを指定します。The resource parameter specifies the service to which the token is sent. Azure Resource Manager に対して認証を行うには、resource=https://management.azure.com/ を使用します。To authenticate to Azure Resource Manager, use resource=https://management.azure.com/.
    • クライアント ID パラメーターは、トークンの要求先の ID を指定します。The client ID parameter specifies the identity for which the token is requested. この値は、1 つの VM 上に複数のユーザー割り当て ID がある場合に、あいまいさを解消するために必要です。This value is required for disambiguation when more than one user-assigned identity is on a single VM.
    • Azure Instance Metadata Service のバージョンは、API バージョン パラメーターで指定します。The API version parameter specifies the Azure Instance Metadata Service version. api-version=2018-02-01 以降を使用してください。Use api-version=2018-02-01 or higher.
  6. 手順 3. で構成したクライアント ID と証明書を使用して、手順 5. で指定したアクセス トークンを要求する呼び出しが Azure AD に対して行われます。A call is made to Azure AD to request an access token (as specified in step 5) by using the client ID and certificate configured in step 3. Azure AD は、JSON Web トークン (JWT) アクセス トークンを返します。Azure AD returns a JSON Web Token (JWT) access token.

  7. コードは、Azure AD 認証をサポートするサービスへの呼び出しでアクセス トークンを送信します。Your code sends the access token on a call to a service that supports Azure AD authentication.

Azure リソースのマネージド ID を使用する方法How can I use managed identities for Azure resources?

マネージド ID を使って各種 Azure リソースにアクセスする方法については、以下のチュートリアルを参考にしてください。To learn how to use managed identities to access different Azure resources, try these tutorials.

注意

マネージド ID の詳細については、「Implementing Managed Identities for Microsoft Azure Resources (Microsoft Azure リソースのマネージド ID を導入する)」コースをご覧ください。サポートされるいくつかのシナリオについて、詳しいビデオ チュートリアルも用意されています。Check out the Implementing Managed Identities for Microsoft Azure Resources course for more information about managed identities, including detailed video walkthroughs of several supported scenarios.

Windows VM でマネージド ID を使用する方法については、以下のページをご覧ください。Learn how to use a managed identity with a Windows VM:

Linux VM でマネージド ID を使用する方法については、以下のページをご覧ください。Learn how to use a managed identity with a Linux VM:

その他の Azure サービスでマネージド ID を使用する方法については、以下のページをご覧ください。Learn how to use a managed identity with other Azure services:

この機能をサポートする Azure サービスは?What Azure services support the feature?

Azure リソースのマネージド ID は、Azure AD 認証をサポートするサービスの認証に使用することができます。Managed identities for Azure resources can be used to authenticate to services that support Azure AD authentication. Azure リソースのマネージド ID 機能をサポートする Azure サービスの一覧については、「Services that support managed identities for Azure resources (Azure リソースのマネージド ID をサポートするサービス)」を参照してください。For a list of Azure services that support the managed identities for Azure resources feature, see Services that support managed identities for Azure resources.

次の手順Next steps

以下のクイック スタートを使用して、Azure リソースのマネージド ID 機能を使ってみましょう。Get started with the managed identities for Azure resources feature with the following quickstarts: