Azure リソースの管理対象サービス ID (MSI)Managed Service Identity (MSI) for Azure resources

管理対象サービス ID (MSI) は、Azure Active Directory のプレビュー機能です。Managed Service Identity (MSI) is a preview feature of Azure Active Directory. ご利用の前に、あらかじめ既知の問題を確認しておいてください。Make sure you review the known issues before you begin. 詳細については、「Microsoft Azure プレビューの追加使用条件」を参照してください。For more information about previews, see Supplemental Terms of Use for Microsoft Azure Previews.

クラウド アプリケーションの構築時における一般的な課題は、クラウド サービスへの認証用のコードに必要な資格情報を管理する方法です。A common challenge when building cloud applications is how to manage the credentials that need to be in your code for authenticating to cloud services. これらの資格情報を安全に保つことは重要なタスクです。Keeping these credentials secure is an important task. こうした資格情報が開発者ワークステーションに表示されず、ソース管理で検査されないことが理想的です。Ideally, they never appear on developer workstations or get checked into source control. Azure Key Vault は、資格情報およびその他のキーやシークレットを安全に保管する方法を提供しますが、コードは Key Vault に認証してそれらを取得する必要があります。Azure Key Vault provides a way to securely store credentials and other keys and secrets, but your code needs to authenticate to Key Vault to retrieve them. 管理対象サービス ID (MSI) は、Azure Active Directory (Azure AD) で自動的に管理されている ID を Azure サービスに付与することで、この問題を簡単に解決します。Managed Service Identity (MSI) makes solving this problem simpler by giving Azure services an automatically managed identity in Azure Active Directory (Azure AD). この ID を使用して、コードに資格情報が含まれていなくても、Key Vault を含む Azure AD の認証をサポートする任意のサービスに認証することができます。You can use this identity to authenticate to any service that supports Azure AD authentication, including Key Vault, without having any credentials in your code.

それはどのように機能しますか?How does it work?

Azure サービスで管理対象サービス ID を有効にすると、Azure は、Azure サブスクリプションで使用される Azure AD テナントのサービス インスタンスの ID を自動的に作成します。When you enable Managed Service Identity on an Azure service, Azure automatically creates an identity for the service instance in the Azure AD tenant used by your Azure subscription. Azure は背後で、サービス インスタンスに ID の資格情報をプロビジョニングします。Under the covers, Azure provisions the credentials for the identity onto the service instance. コードは、Azure AD 認証をサポートするサービスのアクセス トークンを取得するためのローカル要求を行うことができるようになります。Your code can then make a local request to get access tokens for services that support Azure AD authentication. Azure は、サービス インスタンスによって使用される資格情報のローリングを実行します。Azure takes care of rolling the credentials used by the service instance. サービス インスタンスが削除された場合、Azure は Azure AD の資格情報および ID を自動的にクリーンアップします。If the service instance is deleted, Azure automatically cleans up the credentials and the identity in Azure AD.

管理対象サービス ID が Azure Virtual Machines で動作する方法の例を次に示します。Here's an example of how Managed Service Identity works with Azure Virtual Machines.

仮想マシン MSI の例

  1. Azure Resource Manager は、VM で MSI を有効にするメッセージを受け取ります。Azure Resource Manager receives a message to enable MSI on a VM.
  2. Azure Resource Manager は、Azure AD で VM の ID を表すサービス プリンシパルを作成します。Azure Resource Manager creates a Service Principal in Azure AD to represent the identity of the VM. このサブスクリプションによって信頼されている Azure AD テナントで、サービス プリンシパルが作成されます。The Service Principal is created in the Azure AD tenant that is trusted by this subscription.
  3. Azure Resource Manager は、VM の MSI VM 拡張機能でサービス プリンシパルの詳細を構成します。Azure Resource Manager configures the Service Principal details in the MSI VM Extension of the VM. この手順には、拡張機能で使用されるクライアント ID と証明書を構成して、Azure AD からアクセス トークンを取得することが含まれます。This step includes configuring client ID and certificate used by the extension to get access tokens from Azure AD.
  4. これで、VM のサービス プリンシパル ID が認識され、Azure リソースへのアクセスを付与することができます。Now that the Service Principal identity of the VM is known, it can be granted access to Azure resources. たとえば、コードが Azure Resource Manager を呼び出す必要がある場合、Azure AD でロールベースのアクセス制御 (RBAC) を使用して、VM のサービス プリンシパルに適切な役割を割り当てることができます。For example, if your code needs to call Azure Resource Manager, then you would assign the VM’s Service Principal the appropriate role using Role-Based Access Control (RBAC) in Azure AD. コードが Key Vault を呼び出す必要がある場合、Key Vault 内の特定のシークレットまたはキーへのアクセスをコードに付与します。If your code needs to call Key Vault, then you would grant your code access to the specific secret or key in Key Vault.
  5. VM で実行されているコードは、次のように MSI VM 拡張機能によってホストされているローカル エンドポイントからトークンを要求します。http://localhost:50342/oauth2/tokenYour code running on the VM requests a token from a local endpoint that is hosted by the MSI VM extension: http://localhost:50342/oauth2/token. リソース パラメーターは、トークンの送信先のサービスを指定します。The resource parameter specifies the service to which the token is sent. たとえば、Azure Resource Manager に認証するようにコードを設定する場合は、resource=https://management.azure.com/ を使用します。For example, if you want your code to authenticate to Azure Resource Manager, you would use resource=https://management.azure.com/.
  6. MSI VM 拡張機能は、構成したクライアント ID と証明書を使用して Azure AD からアクセス トークンを要求します。The MSI VM Extension uses its configured client ID and certificate to request an access token from Azure AD. 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 サービスには、アクセス トークンを取得するためのコードの独自のメソッドがあります。Each Azure service that supports Managed Service Identity has its own method for your code to obtain an access token. トークンを取得する特定のメソッドを検索するには、各サービスのチュートリアルをご覧ください。Check out the tutorials for each service to find out the specific method to get a token.

管理対象のサービス ID を試行するTry Managed Service Identity

さまざまな Azure リソースにアクセスするためのエンド ツー エンドのシナリオについては、管理対象サービス ID のチュートリアルを試してください。Try a Managed Service Identity tutorial to learn end-to-end scenarios for accessing different Azure resources:

アクセス元の MSI 対応リソースFrom MSI-enabled resource 説明内容Learn how to
Azure VM (Windows)Azure VM (Windows) Windows VM 管理対象サービス ID (MSI) を使用して Azure Data Lake Store にアクセスするAccess Azure Data Lake Store with a Windows VM Managed Service Identity
Windows VM 管理対象サービスID (MSI) を使用して Azure Resource Manager にアクセスするAccess Azure Resource Manager with a Windows VM Managed Service Identity
Windows VM 管理対象サービス ID を使用して Azure SQL にアクセスするAccess Azure SQL with a Windows VM Managed Service Identity
Windows VM 管理対象サービス ID を使用してアクセス キーで Azure Storage にアクセスするAccess Azure Storage via access key with a Windows VM Managed Service Identity
Windows VM の管理対象サービス ID を使用して SAS で Azure Storage にアクセスするAccess Azure Storage via SAS with a Windows VM Managed Service Identity
Windows VM 管理対象サービス ID (MSI) および Azure Key Vault を使用して Azure AD 以外のリソースにアクセスするAccess a non-Azure AD resource with a Windows VM Managed Service Identity and Azure Key Vault
Azure VM (Linux)Azure VM (Linux) Linux VM 管理対象サービス ID (MSI) を使用して Azure Data Lake Store にアクセスするAccess Azure Data Lake Store with a Linux VM Managed Service Identity
Linux VM 管理対象サービスID (MSI) を使用して Azure Resource Manager にアクセスするAccess Azure Resource Manager with a Linux VM Managed Service Identity
Linux VM 管理対象サービス ID を使用してアクセス キーで Azure Storage にアクセスするAccess Azure Storage via access key with a Linux VM Managed Service Identity
Linux VM 管理対象サービス ID を使用して SAS で Azure Storage にアクセスするAccess Azure Storage via SAS with a Linux VM Managed Service Identity
Linux VM 管理対象サービス ID と Azure Key Vault を使用して Azure AD 以外のリソースにアクセスするAccess a non-Azure AD resource with a Linux VM Managed Service Identity and Azure Key Vault
Azure App ServiceAzure App Service Azure App Service または Azure Functions で管理対象サービス ID を使用するUse Managed Service Identity with Azure App Service or Azure Functions
Azure 関数Azure Function Azure App Service または Azure Functions で管理対象サービス ID を使用するUse Managed Service Identity with Azure App Service or Azure Functions

Azure サービスは管理対象サービス ID をサポートしますか。Which Azure services support Managed Service Identity?

管理対象サービス ID をサポートする Azure サービスでは、MSI を使用して Azure AD 認証をサポートするサービスを認証できます。Azure services that support Managed Service Identity can use MSI to authenticate to services that support Azure AD authentication. Azure 全体で MSI と Azure AD 認証を統合する処理を行っています。We are in the process of integrating MSI and Azure AD authentication across Azure. 更新プログラムがないかどうか、頻繁に確認してください。Check back often for updates.

管理対象サービス ID をサポートする Azure サービスAzure services that support Managed Service Identity

次の Azure サービスは管理対象サービス ID をサポートします。The following Azure services support Managed Service Identity.

サービスService 状態Status 日付Date 構成Configure トークンを取得するGet a token
Azure Virtual MachinesAzure Virtual Machines PreviewPreview 2017 年 9 月September 2017 Azure ポータルAzure portal
PowerShellPowerShell
Azure CLIAzure CLI
Azure リソース マネージャーのテンプレートAzure Resource Manager templates
REST ()REST
.NET.NET
Bash/CurlBash/Curl
GoGo
PowerShellPowerShell
Azure App ServiceAzure App Service PreviewPreview 2017 年 9 月September 2017 Azure ポータルAzure portal
Azure Resource Manager テンプレートAzure Resource Manager template
.NET.NET
REST ()REST
Azure FunctionsAzure Functions PreviewPreview 2017 年 9 月September 2017 Azure ポータルAzure portal
Azure Resource Manager テンプレートAzure Resource Manager template
.NET.NET
REST ()REST

Azure AD 認証をサポートしている Azure サービスAzure services that support Azure AD authentication

次のサービスは、Azure AD 認証をサポートしており、管理対象サービス ID を使用するクライアント サービスでテストされています。The following services support Azure AD authentication, and have been tested with client services that use Managed Service Identity.

サービスService Resource IDResource ID 状態Status 日付Date アクセス権を割り当てるAssign access
Azure Resource ManagerAzure Resource Manager https://management.azure.com/https://management.azure.com/ 使用可能Available 2017 年 9 月September 2017 Azure ポータルAzure portal
PowerShellPowerShell
Azure CLIAzure CLI
Azure Key VaultAzure Key Vault https://vault.azure.net/https://vault.azure.net/ 使用可能Available 2017 年 9 月September 2017
Azure Data LakeAzure Data Lake https://datalake.azure.net/https://datalake.azure.net/ 使用可能Available 2017 年 9 月September 2017
Azure SQLAzure SQL https://database.windows.net/https://database.windows.net/ 使用可能Available 2017 年 10 月October 2017

管理対象サービス ID にはどれくらいのコストがかかりますか。How much does Managed Service Identity cost?

管理対象サービス ID は、Azure サブスクリプションの既定値である Azure Active Directory Free に付属しています。Managed Service Identity comes with Azure Active Directory Free, which is the default for Azure subscriptions. 管理対象サービス ID のための追加コストはありません。There is no additional cost for Managed Service Identity.

サポートとフィードバックSupport and feedback

お気軽にお問い合わせください。We would love to hear from you!