App Service と Azure Functions でマネージド ID を使用する方法How to use managed identities for App Service and Azure Functions

注意

App Service on Linux と Web App for Containers のマネージド ID のサポートは、現在プレビューの段階です。Managed identity support for App Service on Linux and Web App for Containers is currently in preview.

重要

アプリがサブスクリプションやテナント間で移行された場合、App Service と Azure Functions でのマネージド ID は想定されたとおりに動作しません。Managed identities for App Service and Azure Functions will not behave as expected if your app is migrated across subscriptions/tenants. アプリでは、機能を無効にしてから再度有効にすることで、新しい ID を取得する必要があります。The app will need to obtain a new identity, which can be done by disabling and re-enabling the feature. 以下の「ID の削除」を参照してください。See Removing an identity below. また、ダウンストリーム リソースでは、新しい ID を使用するようにアクセス ポリシーを更新する必要があります。Downstream resources will also need to have access policies updated to use the new identity.

このトピックでは、App Service と Azure Functions アプリケーションでマネージド ID を作成し、それを使用して他のリソースにアクセスする方法を説明します。This topic shows you how to create a managed identity for App Service and Azure Functions applications and how to use it to access other resources. アプリで Azure Active Directory のマネージド ID を使用すると、他の AAD で保護されたリソース (Azure Key Vault など) に簡単にアクセスできます。A managed identity from Azure Active Directory allows your app to easily access other AAD-protected resources such as Azure Key Vault. ID は Azure プラットフォームによって管理され、ユーザーがシークレットをプロビジョニングまたはローテーションする必要はありません。The identity is managed by the Azure platform and does not require you to provision or rotate any secrets. AAD のマネージド ID については、「Azure リソースのマネージド ID」を参照してください。For more about managed identities in AAD, see Managed identities for Azure resources.

アプリケーションには 2 種類の ID を付与できます。Your application can be granted two types of identities:

  • システム割り当て ID はアプリケーションに関連付けられているため、アプリが削除されると削除されます。A system-assigned identity is tied to your application and is deleted if your app is deleted. アプリは 1 つのシステム割り当て ID しか持つことはできません。An app can only have one system-assigned identity. システム割り当て ID のサポートは、Windows アプリで一般公開されています。System-assigned identity support is generally available for Windows apps.
  • ユーザー割り当て ID は、アプリに割り当てることができるスタンドアロン Azure リソースです。A user-assigned identity is a standalone Azure resource which can be assigned to your app. アプリは複数のユーザー割り当て ID を持つことができます。An app can have multiple user-assigned identities. ユーザー割り当て ID のサポートは、すべてのアプリの種類でプレビュー段階です。User-assigned identity support is in preview for all app types.

システム割り当て ID の追加Adding a system-assigned identity

システム割り当て ID を持つアプリを作成するには、アプリケーションで追加のプロパティを設定する必要があります。Creating an app with a system-assigned identity requires an additional property to be set on the application.

Azure ポータルの使用Using the Azure portal

ポータルでマネージド ID を設定するには、最初に通常の方法でアプリケーションを作成した後、機能を有効にします。To set up a managed identity in the portal, you will first create an application as normal and then enable the feature.

  1. ポータルを使って通常の方法でアプリを作成します。Create an app in the portal as you normally would. ポータルでアプリに移動します。Navigate to it in the portal.

  2. 関数アプリを使っている場合は、 [プラットフォーム機能] に移動します。If using a function app, navigate to Platform features. 他のアプリの種類の場合は、左側のナビゲーションを下にスクロールして [設定] グループに移動します。For other app types, scroll down to the Settings group in the left navigation.

  3. [マネージド ID] を選択します。Select Managed identity.

  4. [システム割り当て済み] タブで、 [状態][オン] に切り替えます。Within the System assigned tab, switch Status to On. [Save] をクリックします。Click Save.

App Service のマネージド ID

Azure CLI の使用Using the Azure CLI

Azure CLI を使用してマネージド ID を設定するには、既存のアプリケーションに対して az webapp identity assign コマンドを使用する必要があります。To set up a managed identity using the Azure CLI, you will need to use the az webapp identity assign command against an existing application. このセクションの例を実行するためのオプションとして次の 3 つがあります。You have three options for running the examples in this section:

次の手順では、CLI を使用して、Web アプリを作成し、ID を割り当てる方法について説明します。The following steps will walk you through creating a web app and assigning it an identity using the CLI:

  1. ローカルのコンソールで Azure CLI を使用している場合は、最初に az login を使用して Azure にサインインします。If you're using the Azure CLI in a local console, first sign in to Azure using az login. 次のように、アプリケーションをデプロイする Azure サブスクリプションに関連付けられているアカウントを使用します。Use an account that is associated with the Azure subscription under which you would like to deploy the application:

    az login
    
  2. CLI を使用して Web アプリケーションを作成します。Create a web application using the CLI. App Service で CLI を使用する方法の他の例については、App Service の CLI のサンプルに関するページを参照してください。For more examples of how to use the CLI with App Service, see App Service CLI samples:

    az group create --name myResourceGroup --location westus
    az appservice plan create --name myPlan --resource-group myResourceGroup --sku S1
    az webapp create --name myApp --resource-group myResourceGroup --plan myPlan
    
  3. identity assign コマンドを実行してこのアプリケーションの ID を作成します。Run the identity assign command to create the identity for this application:

    az webapp identity assign --name myApp --resource-group myResourceGroup
    

Azure PowerShell の使用Using Azure PowerShell

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

次の手順では、Azure PowerShell を使用して、Web アプリを作成し、ID を割り当てる方法について説明します。The following steps will walk you through creating a web app and assigning it an identity using Azure PowerShell:

  1. 必要に応じて、Azure PowerShell ガイドの手順に従って Azure PowerShell をインストールし、Login-AzAccount を実行して、Azure との接続を作成します。If needed, install the Azure PowerShell using the instruction found in the Azure PowerShell guide, and then run Login-AzAccount to create a connection with Azure.

  2. Azure PowerShell を使用して Web アプリケーションを作成します。Create a web application using Azure PowerShell. App Service で Azure PowerShell を使用する方法の他の例については、App Service の PowerShell のサンプルに関するページを参照してください。For more examples of how to use Azure PowerShell with App Service, see App Service PowerShell samples:

    # Create a resource group.
    New-AzResourceGroup -Name myResourceGroup -Location $location
    
    # Create an App Service plan in Free tier.
    New-AzAppServicePlan -Name $webappname -Location $location -ResourceGroupName myResourceGroup -Tier Free
    
    # Create a web app.
    New-AzWebApp -Name $webappname -Location $location -AppServicePlan $webappname -ResourceGroupName myResourceGroup
    
  3. Set-AzWebApp -AssignIdentity コマンドを実行してこのアプリケーションの ID を作成します。Run the Set-AzWebApp -AssignIdentity command to create the identity for this application:

    Set-AzWebApp -AssignIdentity $true -Name $webappname -ResourceGroupName myResourceGroup 
    

Azure Resource Manager テンプレートの使用Using an Azure Resource Manager template

Azure Resource Manager テンプレートを使って、Azure リソースのデプロイを自動化できます。An Azure Resource Manager template can be used to automate deployment of your Azure resources. App Service および Functions へのデプロイについて詳しくは、「Automating resource deployment in App Service」(App Service でのリソースのデプロイの自動化) および「Azure Functions の関数アプリのリソース デプロイを自動化」をご覧ください。To learn more about deploying to App Service and Functions, see Automating resource deployment in App Service and Automating resource deployment in Azure Functions.

種類が Microsoft.Web/sites であるすべてのリソースは、リソース定義に次のプロパティを含めることにより、ID を使って作成できます。Any resource of type Microsoft.Web/sites can be created with an identity by including the following property in the resource definition:

"identity": {
    "type": "SystemAssigned"
}    

注意

アプリケーションは、システム割り当て ID とユーザー割り当て ID の両方を同時に持つことができます。An application can have both system-assigned and user-assigned identities at the same time. この場合、type プロパティは SystemAssigned,UserAssigned になりますIn this case, the type property would be SystemAssigned,UserAssigned

システム割り当てタイプを追加すると、Azure に対してアプリケーション用の ID を作成して管理するように指示されます。Adding the system-assigned type tells Azure to create and manage the identity for your application.

たとえば、Web アプリは次のようになります。For example, a web app might look like the following:

{
    "apiVersion": "2016-08-01",
    "type": "Microsoft.Web/sites",
    "name": "[variables('appName')]",
    "location": "[resourceGroup().location]",
    "identity": {
        "type": "SystemAssigned"
    },
    "properties": {
        "name": "[variables('appName')]",
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
        "hostingEnvironment": "",
        "clientAffinityEnabled": false,
        "alwaysOn": true
    },
    "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]"
    ]
}

作成されるサイトには、次の追加プロパティが設定されます。When the site is created, it has the following additional properties:

"identity": {
    "type": "SystemAssigned",
    "tenantId": "<TENANTID>",
    "principalId": "<PRINCIPALID>"
}

<TENANTID><PRINCIPALID> は GUID に置き換えられます。Where <TENANTID> and <PRINCIPALID> are replaced with GUIDs. tenantId プロパティは、ID が属している AAD テナントを示します。The tenantId property identifies what AAD tenant the identity belongs to. principalId は、アプリケーションの新しい ID の一意識別子です。The principalId is a unique identifier for the application's new identity. AAD でのサービス プリンシパルの名前は、App Service または Azure Functions のインスタンスに指定したものと同じです。Within AAD, the service principal has the same name that you gave to your App Service or Azure Functions instance.

ユーザー割り当て ID の追加 (プレビュー)Adding a user-assigned identity (preview)

注意

ユーザー割り当て ID は、現在プレビューの段階です。User-assigned identities are currently in preview. ソブリン クラウドはまだサポートされていません。Sovereign clouds are not yet supported.

ユーザー割り当て ID を持つアプリを作成するには、ID を作成してから、そのリソース ID をアプリ構成に追加する必要があります。Creating an app with a user-assigned identity requires that you create the identity and then add its resource identifier to your app config.

Azure ポータルの使用Using the Azure portal

注意

このポータルのエクスペリエンスはデプロイ中であり、まだすべてのリージョンでは利用できない可能性があります。This portal experience is being deployed and may not yet be available in all regions.

最初に、ユーザー割り当て ID リソースを作成する必要があります。First, you'll need to create a user-assigned identity resource.

  1. 以下の手順に従って、ユーザー割り当てマネージド ID リソースを作成します。Create a user-assigned managed identity resource according to these instructions.

  2. ポータルを使って通常の方法でアプリを作成します。Create an app in the portal as you normally would. ポータルでアプリに移動します。Navigate to it in the portal.

  3. 関数アプリを使っている場合は、 [プラットフォーム機能] に移動します。If using a function app, navigate to Platform features. 他のアプリの種類の場合は、左側のナビゲーションを下にスクロールして [設定] グループに移動します。For other app types, scroll down to the Settings group in the left navigation.

  4. [マネージド ID] を選択します。Select Managed identity.

  5. [割り当て済みユーザー (プレビュー)] タブで [追加] をクリックします。Within the User assigned (preview) tab, click Add.

  6. 先ほど作成した ID を検索して選択します。Search for the identity you created earlier and select it. [追加] をクリックします。Click Add.

App Service のマネージド ID

Azure Resource Manager テンプレートの使用Using an Azure Resource Manager template

Azure Resource Manager テンプレートを使って、Azure リソースのデプロイを自動化できます。An Azure Resource Manager template can be used to automate deployment of your Azure resources. App Service および Functions へのデプロイについて詳しくは、「Automating resource deployment in App Service」(App Service でのリソースのデプロイの自動化) および「Azure Functions の関数アプリのリソース デプロイを自動化」をご覧ください。To learn more about deploying to App Service and Functions, see Automating resource deployment in App Service and Automating resource deployment in Azure Functions.

種類が Microsoft.Web/sites であるリソースは、リソース定義に次のブロックを含めて、<RESOURCEID> を目的の ID のリソース ID と置き換えることで、ID を使って作成できます。Any resource of type Microsoft.Web/sites can be created with an identity by including the following block in the resource definition, replacing <RESOURCEID> with the resource ID of the desired identity:

"identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
        "<RESOURCEID>": {}
    }
}    

注意

アプリケーションは、システム割り当て ID とユーザー割り当て ID の両方を同時に持つことができます。An application can have both system-assigned and user-assigned identities at the same time. この場合、type プロパティは SystemAssigned,UserAssigned になりますIn this case, the type property would be SystemAssigned,UserAssigned

ユーザー割り当てタイプを追加すると、Azure に対してアプリケーション用の ID を作成して管理するように指示されます。Adding the user-assigned type and a cotells Azure to create and manage the identity for your application.

たとえば、Web アプリは次のようになります。For example, a web app might look like the following:

{
    "apiVersion": "2016-08-01",
    "type": "Microsoft.Web/sites",
    "name": "[variables('appName')]",
    "location": "[resourceGroup().location]",
    "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
            "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))]": {}
        }
    },
    "properties": {
        "name": "[variables('appName')]",
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
        "hostingEnvironment": "",
        "clientAffinityEnabled": false,
        "alwaysOn": true
    },
    "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
        "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))]"
    ]
}

作成されるサイトには、次の追加プロパティが設定されます。When the site is created, it has the following additional properties:

"identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
        "<RESOURCEID>": {
            "principalId": "<PRINCIPALID>",
            "clientId": "<CLIENTID>"
        }
    }
}

<PRINCIPALID><CLIENTID> は GUID に置き換えられます。Where <PRINCIPALID> and <CLIENTID> are replaced with GUIDs. principalId は、AAD の管理に使用される ID の一意識別子です。The principalId is a unique identifier for the identity which is used for AAD administration. clientId は、ランタイム呼び出し中に使用する ID を指定するために使用されるアプリケーションの新しい ID の一意識別子です。The clientId is a unique identifier for the application's new identity that is used for specifying which identity to use during runtime calls.

Azure リソースのトークンの取得Obtaining tokens for Azure resources

アプリは、その ID を使って、AAD で保護されている他のリソース (Azure Key Vault など) へのトークンを取得できます。An app can use its identity to get tokens to other resources protected by AAD, such as Azure Key Vault. これらのトークンは、アプリケーションの特定のユーザーではなく、リソースにアクセスしているアプリケーションを表します。These tokens represent the application accessing the resource, and not any specific user of the application.

重要

アプリケーションからのアクセスを許可するように、対象のリソースを構成することが必要な場合があります。You may need to configure the target resource to allow access from your application. たとえば、Key Vault に対するトークンを要求する場合、アプリケーションの ID を含むアクセス ポリシーを追加する必要があります。For example, if you request a token to Key Vault, you need to make sure you have added an access policy that includes your application's identity. 追加しないと、トークンを含めた場合でも、Key Vault の呼び出しは拒否されます。Otherwise, your calls to Key Vault will be rejected, even if they include the token. Azure Active Directory トークンをサポートしているリソースの詳細については、「Azure AD 認証をサポートしている Azure サービス」をご覧ください。To learn more about which resources support Azure Active Directory tokens, see Azure services that support Azure AD authentication.

App Service と Azure Functions には、トークンを取得するための簡単な REST プロトコルがあります。There is a simple REST protocol for obtaining a token in App Service and Azure Functions. .NET アプリケーションの場合は、Microsoft.Azure.Services.AppAuthentication ライブラリがこのプロトコルの抽象化を提供し、ローカル開発エクスペリエンスをサポートします。For .NET applications, the Microsoft.Azure.Services.AppAuthentication library provides an abstraction over this protocol and supports a local development experience.

.NET 用の Microsoft.Azure.Services.AppAuthentication ライブラリの使用Using the Microsoft.Azure.Services.AppAuthentication library for .NET

.NET アプリケーションと Functions の場合、マネージド ID を使用する最も簡単な方法は、Microsoft.Azure.Services.AppAuthentication パッケージを利用することです。For .NET applications and functions, the simplest way to work with a managed identity is through the Microsoft.Azure.Services.AppAuthentication package. このライブラリを使うと、Visual Studio、Azure CLI、または Active Directory 統合認証のユーザー アカウントを使って、開発用コンピューターでローカルにコードをテストすることもできます。This library will also allow you to test your code locally on your development machine, using your user account from Visual Studio, the Azure CLI, or Active Directory Integrated Authentication. このライブラリでのローカル開発オプションについて詳しくは、Microsoft.Azure.Services.AppAuthentication のリファレンスに関するページをご覧ください。For more on local development options with this library, see the Microsoft.Azure.Services.AppAuthentication reference. このセクションでは、コードでライブラリを使い始める方法を示します。This section shows you how to get started with the library in your code.

  1. Microsoft.Azure.Services.AppAuthentication とその他の必要な NuGet パッケージに対する参照をアプリケーションに追加します。Add references to the Microsoft.Azure.Services.AppAuthentication and any other necessary NuGet packages to your application. 下の例では Microsoft.Azure.KeyVault も使用されています。The below example also uses Microsoft.Azure.KeyVault.

  2. 次のコードをアプリケーションに追加し、正しいリソースが対象となるように変更します。Add the following code to your application, modifying to target the correct resource. この例では、Azure Key Vault と連携動作するための 2 つの方法が示されています。This example shows two ways to work with Azure Key Vault:

using Microsoft.Azure.Services.AppAuthentication;
using Microsoft.Azure.KeyVault;
// ...
var azureServiceTokenProvider = new AzureServiceTokenProvider();
string accessToken = await azureServiceTokenProvider.GetAccessTokenAsync("https://vault.azure.net");
// OR
var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));

Microsoft.Azure.Services.AppAuthentication およびそれによって公開される操作について詳しくは、Microsoft.Azure.Services.AppAuthentication のリファレンスに関するページおよび「App Service and KeyVault with MSI .NET sample」(MSI .NET での App Service と KeyVault のサンプル) をご覧ください。To learn more about Microsoft.Azure.Services.AppAuthentication and the operations it exposes, see the Microsoft.Azure.Services.AppAuthentication reference and the App Service and KeyVault with MSI .NET sample.

REST プロトコルの使用Using the REST protocol

マネージド ID を使用するアプリでは、2 つの環境変数を定義します。An app with a managed identity has two environment variables defined:

  • MSI_ENDPOINT - ローカル トークン サービスに対する URL。MSI_ENDPOINT - the URL to the local token service.
  • MSI_SECRET - サーバー側のリクエスト フォージェリ (SSRF) 攻撃を回避するために使用されるヘッダー。MSI_SECRET - a header used to help mitigate server-side request forgery (SSRF) attacks. 値は、プラットフォームによってローテーションされます。The value is rotated by the platform.

MSI_ENDPOINT は、アプリがトークンを要求できるローカル URL です。The MSI_ENDPOINT is a local URL from which your app can request tokens. リソースのトークンを取得するには、次のパラメーターを指定して、このエンドポイントに HTTP GET 要求を行います。To get a token for a resource, make an HTTP GET request to this endpoint, including the following parameters:

パラメーター名Parameter name インIn 説明Description
resourceresource QueryQuery トークンを取得する必要のあるリソースの AAD リソース URI。The AAD resource URI of the resource for which a token should be obtained. これは Azure AD 認証をサポートしている Azure サービスの 1 つか、その他のリソース URI になります。This could be one of the Azure services that support Azure AD authentication or any other resource URI.
api-versionapi-version QueryQuery 使うトークン API のバージョン。The version of the token API to be used. 現在サポートされているバージョンは "2017-09-01" だけです。"2017-09-01" is currently the only version supported.
secretsecret ヘッダーHeader MSI_SECRET 環境変数の値。The value of the MSI_SECRET environment variable. このヘッダーは、サーバー側のリクエスト フォージェリ (SSRF) 攻撃を回避するために使用されます。This header is used to help mitigate server-side request forgery (SSRF) attacks.
clientidclientid QueryQuery (省略可能) 使用するユーザー割り当て ID のID。(Optional) The ID of the user-assigned identity to be used. 省略すると、システム割り当て ID が使用されます。If omitted, the system-assigned identity is used.

正常終了の応答である 200 OK には、JSON 本文と次のプロパティが含まれています。A successful 200 OK response includes a JSON body with the following properties:

プロパティ名Property name 説明Description
access_tokenaccess_token 要求されたアクセス トークン。The requested access token. 呼び出し元の Web サービスは、このトークンを使用して受信側の Web サービスに対する認証処理を行うことができます。The calling web service can use this token to authenticate to the receiving web service.
expires_onexpires_on アクセス トークンの有効期限が切れる日時。The time when the access token expires. 日時は 1970-01-01T0:0:0Z UTC から期限切れ日時までの秒数として表されます。The date is represented as the number of seconds from 1970-01-01T0:0:0Z UTC until the expiration time. この値は、キャッシュされたトークンの有効期間を調べるために使用されます。This value is used to determine the lifetime of cached tokens.
resourceresource 受信側の Web サービスのアプリケーション ID URI。The App ID URI of the receiving web service.
token_typetoken_type トークン タイプ値を指定します。Indicates the token type value. Azure AD でサポートされるのは Bearer タイプのみです。The only type that Azure AD supports is Bearer. ベアラー トークンの詳細については、「OAuth 2.0 Authorization Framework: Bearer Token Usage (RFC 6750)」(OAuth 2.0 承認フレームワーク: ベアラー トークンの使用法 (RFC 6750)) をご覧ください。For more information about bearer tokens, see The OAuth 2.0 Authorization Framework: Bearer Token Usage (RFC 6750).

この応答は、AAD のサービス間アクセス トークン要求に対する応答と同じです。This response is the same as the response for the AAD service-to-service access token request.

注意

環境変数はプロセスが初めて開始されるときに設定されます。そのため、アプリケーションのマネージド ID を有効にした後、場合によってはアプリケーションを再起動するか、アプリケーションのコードを再デプロイしないと MSI_ENDPOINTMSI_SECRET をコードで利用できません。Environment variables are set up when the process first starts, so after enabling a managed identity for your application, you may need to restart your application, or redeploy its code, before MSI_ENDPOINT and MSI_SECRET are available to your code.

REST プロトコルの例REST protocol examples

要求の例を次に示します。An example request might look like the following:

GET /MSI/token?resource=https://vault.azure.net&api-version=2017-09-01 HTTP/1.1
Host: localhost:4141
Secret: 853b9a84-5bfa-4b22-a3f3-0b9a43d9ad8a

応答の例は次のようになります。And a sample response might look like the following:

HTTP/1.1 200 OK
Content-Type: application/json

{
    "access_token": "eyJ0eXAi…",
    "expires_on": "09/14/2017 00:00:00 PM +00:00",
    "resource": "https://vault.azure.net",
    "token_type": "Bearer"
}

コード例Code examples

この要求を C# で行うには:To make this request in C#:

public static async Task<HttpResponseMessage> GetToken(string resource, string apiversion)  {
    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Add("Secret", Environment.GetEnvironmentVariable("MSI_SECRET"));
    return await client.GetAsync(String.Format("{0}/?resource={1}&api-version={2}", Environment.GetEnvironmentVariable("MSI_ENDPOINT"), resource, apiversion));
}

ヒント

.NET 言語では、この要求を自作する代わりに、Microsoft.Azure.Services.AppAuthentication を使うこともできます。For .NET languages, you can also use Microsoft.Azure.Services.AppAuthentication instead of crafting this request yourself.

Node.JS の例:In Node.JS:

const rp = require('request-promise');
const getToken = function(resource, apiver, cb) {
    let options = {
        uri: `${process.env["MSI_ENDPOINT"]}/?resource=${resource}&api-version=${apiver}`,
        headers: {
            'Secret': process.env["MSI_SECRET"]
        }
    };
    rp(options)
        .then(cb);
}

PowerShell の例:In PowerShell:

$apiVersion = "2017-09-01"
$resourceURI = "https://<AAD-resource-URI-for-resource-to-obtain-token>"
$tokenAuthURI = $env:MSI_ENDPOINT + "?resource=$resourceURI&api-version=$apiVersion"
$tokenResponse = Invoke-RestMethod -Method Get -Headers @{"Secret"="$env:MSI_SECRET"} -Uri $tokenAuthURI
$accessToken = $tokenResponse.access_token

ID の削除Removing an identity

システム割り当て ID は、ポータル、PowerShell、または CLI を使用して、作成時と同じ方法で機能を無効にすることで、削除できます。A system-assigned identity can be removed by disabling the feature using the portal, PowerShell, or CLI in the same way that it was created. ユーザー割り当て ID は個別に削除することはできません。User-assigned identities can be removed individually. すべての ID を削除するには、REST/ARM テンプレート プロトコルでは、種類を "なし" に設定することでこの削除を実行します。To remove all identities, in the REST/ARM template protocol, this is done by setting the type to "None":

"identity": {
    "type": "None"
}

この方法でシステム割り当て ID を削除すると、AAD からも削除されます。Removing a system-assigned identity in this way will also delete it from AAD. システム割り当て ID は、アプリ リソースが削除されると、AAD からも自動的に削除されます。System-assigned identities are also automatically removed from AAD when the app resource is deleted.

注意

また、単純にローカル トークン サービスを無効にする、設定可能なアプリケーション設定 WEBSITE_DISABLE_MSI もあります。There is also an application setting that can be set, WEBSITE_DISABLE_MSI, which just disables the local token service. ただし、ID はその場所に残り、ツールには引き続きマネージド ID が "オン" または "有効" と表示されます。However, it leaves the identity in place, and tooling will still show the managed identity as "on" or "enabled." そのため、この設定の使用はお勧めしません。As a result, use of this setting is not recommended.

次の手順Next steps