テンプレートを使用して Azure VM で Azure リソースのマネージド ID を構成するConfigure managed identities for Azure resources on an Azure VM using a templates

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.

Azure リソースのマネージド ID は、Azure Active Directory で自動的に管理される ID を Azure サービスに提供します。Managed identities for Azure resources provides Azure services with an automatically managed identity in Azure Active Directory. この ID を使用して、コードに資格情報が含まれていなくても、Azure AD の認証をサポートする任意のサービスに認証することができます。You can use this identity to authenticate to any service that supports Azure AD authentication, without having credentials in your code.

この記事では、Azure Resource Manager デプロイ テンプレートを使用して、Azure VM で Azure リソースのマネージド ID の次の操作を実行する方法を説明します。In this article, using the Azure Resource Manager deployment template, you learn how to perform the following managed identities for Azure resources operations on an Azure VM:

前提条件Prerequisites

Azure Resource Manager のテンプレートAzure Resource Manager templates

Azure portal とスクリプトを使う場合と同じように、Azure Resource Manager テンプレートを使うと、Azure リソース グループによって定義された新しいリソースまたは変更されたリソースをデプロイすることができます。As with the Azure portal and scripting, Azure Resource Manager templates provide the ability to deploy new or modified resources defined by an Azure resource group. ローカルとポータル ベースの両方を含むテンプレートの編集やデプロイでは、次のような複数のオプションが使用できます。Several options are available for template editing and deployment, both local and portal-based, including:

選択するオプションにかかわらず、初めてのデプロイ時も再デプロイ時もテンプレートの構文は同じです。Regardless of the option you choose, template syntax is the same during initial deployment and redeployment. 新規または既存の VM での、システムまたはユーザー割り当てマネージド ID の有効化も同様に行われます。Enabling a system or user-assigned managed identity on a new or existing VM is done in the same manner. また、既定で Azure Resource Manager はデプロイに対して増分更新を行います。Also, by default, Azure Resource Manager does an incremental update to deployments.

システム割り当てマネージド IDSystem-assigned managed identity

このセクションでは、Azure Resource Manager テンプレートを使用して、システム割り当てマネージド ID を有効および無効にします。In this section, you will enable and disable a system-assigned managed identity using an Azure Resource Manager template.

Azure VM の作成時に、または既存の VM でシステム割り当てマネージド ID を有効にするEnable system-assigned managed identity during creation of an Azure VM or on an existing VM

VM でシステム割り当てマネージド ID を有効にするには、お使いのアカウントに仮想マシン共同作成者ロールの割り当てが必要です。To enable system-assigned managed identity on a VM, your account needs the Virtual Machine Contributor role assignment. Azure AD ディレクトリ ロールを追加で割り当てる必要はありません。No additional Azure AD directory role assignments are required.

  1. Azure にローカルでサインインする場合も、Azure Portal を使用してサインインする場合も、VM が含まれる Azure サブスクリプションに関連付けられているアカウントを使用します。Whether you sign in to Azure locally or via the Azure portal, use an account that is associated with the Azure subscription that contains the VM.

  2. システム割り当てマネージド ID を有効にするには、テンプレートをエディターに読み込み、resources セクション内で対象の Microsoft.Compute/virtualMachines リソースを探し、"type": "Microsoft.Compute/virtualMachines" プロパティと同じレベルに "identity" プロパティを追加します。To enable system-assigned managed identity, load the template into an editor, locate the Microsoft.Compute/virtualMachines resource of interest within the resources section and add the "identity" property at the same level as the "type": "Microsoft.Compute/virtualMachines" property. 次の構文を使用します。Use the following syntax:

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

注意

オプションで、Azure リソース VM 拡張機能のマネージド ID をプロビジョニングできます。そのためには、これをテンプレートの resources 要素内に指定します。You may optionally provision the managed identities for Azure resources VM extension by specifying it as a resources element in the template. Azure Instance Metadata Service (IMDS) の ID エンドポイントを使ってトークンを取得することもできるため、このステップは省略可能です。This step is optional as you can use the Azure Instance Metadata Service (IMDS) identity endpoint, to retrieve tokens as well. 詳細については、認証のための VM 拡張機能から Azure IMDS への移行に関するページを参照してください。For more information, see Migrate from VM extension to Azure IMDS for authentication.

  1. 完了すると、テンプレートの resource セクションに次のセクションが追加され、テンプレートは次のようになります。When you're done, the following sections should added to the resource section of your template and it should resemble the following:

    "resources": [
         {
             //other resource provider properties...
             "apiVersion": "2018-06-01",
             "type": "Microsoft.Compute/virtualMachines",
             "name": "[variables('vmName')]",
             "location": "[resourceGroup().location]",
             "identity": {
                 "type": "SystemAssigned",
                 },
             },
    
             //The following appears only if you provisioned the optional VM extension (to be deprecated)
             {
             "type": "Microsoft.Compute/virtualMachines/extensions",
             "name": "[concat(variables('vmName'),'/ManagedIdentityExtensionForWindows')]",
             "apiVersion": "2018-06-01",
             "location": "[resourceGroup().location]",
             "dependsOn": [
                 "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
             ],
             "properties": {
                 "publisher": "Microsoft.ManagedIdentity",
                 "type": "ManagedIdentityExtensionForWindows",
                 "typeHandlerVersion": "1.0",
                 "autoUpgradeMinorVersion": true,
                 "settings": {
                     "port": 50342
                 }
             }
         }
     ]
    

VM のシステム割り当てマネージド ID にロールを割り当てるAssign a role the VM's system-assigned managed identity

VM でシステム割り当てマネージド ID を有効にしたら、作成先となったリソース グループへの閲覧者アクセス権などのロールを付与することができます。After you have enabled system-assigned managed identity on your VM, you may want to grant it a role such as Reader access to the resource group in which it was created.

VM のシステム割り当て ID にロールを割り当てるには、お使いのアカウントにユーザー アクセス管理者ロールの割り当てが必要です。To assign a role to your VM's system-assigned identity, your account needs the User Access Administrator role assignment.

  1. Azure にローカルでサインインする場合も、Azure Portal を使用してサインインする場合も、VM が含まれる Azure サブスクリプションに関連付けられているアカウントを使用します。Whether you sign in to Azure locally or via the Azure portal, use an account that is associated with the Azure subscription that contains the VM.

  2. テンプレートをエディターに読み込み、以下の情報を追加して、それが作成されたリソース グループへの閲覧者アクセス許可をご利用の VM に付与します。Load the template into an editor and add the following information to give your VM Reader access to the resource group in which it was created. テンプレートの構造は、選択したデプロイ モデルとエディターに応じて異なる場合があります。Your template structure may vary depending on the editor and the deployment model you choose.

    parameters セクションの下に、以下を追加します。Under the parameters section add the following:

    "builtInRoleType": {
          "type": "string",
          "defaultValue": "Reader"
        },
        "rbacGuid": {
          "type": "string"
        }
    

    variables セクションの下に、以下を追加します。Under the variables section add the following:

    "Reader": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]"
    

    resources セクションの下に、以下を追加します。Under the resources section add the following:

    {
        "apiVersion": "2017-09-01",
         "type": "Microsoft.Authorization/roleAssignments",
         "name": "[parameters('rbacGuid')]",
         "properties": {
                "roleDefinitionId": "[variables(parameters('builtInRoleType'))]",
                "principalId": "[reference(variables('vmResourceId'), '2017-12-01', 'Full').identity.principalId]",
                "scope": "[resourceGroup().id]"
          },
          "dependsOn": [
                "[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'))]"
            ]
    }
    

Azure VM でシステム割り当てマネージド ID を無効にするDisable a system-assigned managed identity from an Azure VM

VM からシステム割り当てマネージド ID を削除するには、お使いのアカウントに仮想マシン共同作成者ロールの割り当てが必要です。To remove system-assigned managed identity from a VM, your account needs the Virtual Machine Contributor role assignment. Azure AD ディレクトリ ロールを追加で割り当てる必要はありません。No additional Azure AD directory role assignments are required.

  1. Azure にローカルでサインインする場合も、Azure Portal を使用してサインインする場合も、VM が含まれる Azure サブスクリプションに関連付けられているアカウントを使用します。Whether you sign in to Azure locally or via the Azure portal, use an account that is associated with the Azure subscription that contains the VM.

  2. テンプレートをエディターに読み込み、resources セクション内で関心のある Microsoft.Compute/virtualMachines リソースを探します。Load the template into an editor and locate the Microsoft.Compute/virtualMachines resource of interest within the resources section. システム割り当てマネージド ID のみが割り当てられた VM がある場合は、ID の種類を None に変更することで無効にすることができます。If you have a VM that only has system-assigned managed identity, you can disable it by changing the identity type to None.

    Microsoft.Compute/virtualMachines API バージョン 2018-06-01Microsoft.Compute/virtualMachines API version 2018-06-01

    VM にシステム割り当てマネージド ID とユーザー割り当てマネージド ID の両方が割り当てられている場合は、ID の種類から SystemAssigned を削除し、userAssignedIdentities ディクショナリ値と共に UserAssigned を保持します。If your VM has both system and user-assigned managed identities, remove SystemAssigned from the identity type and keep UserAssigned along with the userAssignedIdentities dictionary values.

    Microsoft.Compute/virtualMachines API バージョン 2018-06-01Microsoft.Compute/virtualMachines API version 2018-06-01

    apiVersion2017-12-01 であり、VM にシステム割り当てマネージド ID とユーザー割り当てマネージド ID の両方が割り当てられている場合は、ID の種類から SystemAssigned を削除し、ユーザー割り当てマネージド ID の identityIds 配列と共に UserAssigned を保持します。If your apiVersion is 2017-12-01 and your VM has both system and user-assigned managed identities, remove SystemAssigned from the identity type and keep UserAssigned along with the identityIds array of the user-assigned managed identities.

次の例は、ユーザー割り当てマネージド ID が割り当てられていない VM からシステム割り当てマネージド ID を削除する方法を示しています。The following example shows you how remove a system-assigned managed identity from a VM with no user-assigned managed identities:

{
    "apiVersion": "2018-06-01",
    "type": "Microsoft.Compute/virtualMachines",
    "name": "[parameters('vmName')]",
    "location": "[resourceGroup().location]",
    "identity": { 
        "type": "None"
}

ユーザー割り当てマネージド IDUser-assigned managed identity

このセクションでは、Azure Resource Manager テンプレートを使用して、Azure VM にユーザー割り当てマネージド ID を割り当てます。In this section, you assign a user-assigned managed identity to an Azure VM using Azure Resource Manager template.

注意

Azure Resource Manager テンプレートを使用してユーザー割り当てマネージド ID を作成するには、「Create a user-assigned managed identity (ユーザー割り当てマネージド ID を作成する)」をご覧ください。To create a user-assigned managed identity using an Azure Resource Manager Template, see Create a user-assigned managed identity.

Azure VM にユーザー割り当てマネージド ID を割り当てるAssign a user-assigned managed identity to an Azure VM

ユーザー割り当て ID を VM に割り当てるには、お使いのアカウントに仮想マシン共同作成者ロールとマネージド ID オペレーター ロールの割り当てが必要です。To assign a user-assigned identity to a VM, your account needs the Virtual Machine Contributor and Managed Identity Operator role assignments. Azure AD ディレクトリ ロールを追加で割り当てる必要はありません。No additional Azure AD directory role assignments are required.

  1. ユーザー割り当てマネージド ID を VM に割り当てるには、resources 要素に次のエントリを追加します。Under the resources element, add the following entry to assign a user-assigned managed identity to your VM. <USERASSIGNEDIDENTITY> は、作成したユーザー割り当てマネージド ID の名前に置き換えてください。Be sure to replace <USERASSIGNEDIDENTITY> with the name of the user-assigned managed identity you created.

    Microsoft.Compute/virtualMachines API バージョン 2018-06-01Microsoft.Compute/virtualMachines API version 2018-06-01

    apiVersion2018-06-01 の場合、ユーザー割り当てマネージド ID は userAssignedIdentities ディクショナリ形式で格納されます。<USERASSIGNEDIDENTITYNAME> 値は、テンプレートの variables セクションに定義された変数に格納する必要があります。If your apiVersion is 2018-06-01, your user-assigned managed identities are stored in the userAssignedIdentities dictionary format and the <USERASSIGNEDIDENTITYNAME> value must be stored in a variable defined in the variables section of your template.

    {
        "apiVersion": "2018-06-01",
        "type": "Microsoft.Compute/virtualMachines",
        "name": "[variables('vmName')]",
        "location": "[resourceGroup().location]",
        "identity": {
            "type": "userAssigned",
            "userAssignedIdentities": {
                "[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',variables('<USERASSIGNEDIDENTITYNAME>'))]": {}
            }
         }
    }
    

    Microsoft.Compute/virtualMachines API バージョン 2017-12-01Microsoft.Compute/virtualMachines API version 2017-12-01

    apiVersion2017-12-01 の場合、ユーザー割り当てマネージド ID は identityIds 配列に格納されます。<USERASSIGNEDIDENTITYNAME> 値は、テンプレートの variables セクションに定義された変数に格納する必要があります。If your apiVersion is 2017-12-01, your user-assigned managed identities are stored in the identityIds array and the <USERASSIGNEDIDENTITYNAME> value must be stored in a variable defined in the variables section of your template.

    {
        "apiVersion": "2017-12-01",
        "type": "Microsoft.Compute/virtualMachines",
        "name": "[variables('vmName')]",
        "location": "[resourceGroup().location]",
        "identity": {
            "type": "userAssigned",
            "identityIds": [
                "[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',variables('<USERASSIGNEDIDENTITYNAME>'))]"
            ]
        }
    }
    
  2. 完了すると、テンプレートの resource セクションに次のセクションが追加され、テンプレートは次のようになります。When you're done, the following sections should added to the resource section of your template and it should resemble the following:

    Microsoft.Compute/virtualMachines API バージョン 2018-06-01Microsoft.Compute/virtualMachines API version 2018-06-01

    "resources": [
         {
             //other resource provider properties...
             "apiVersion": "2018-06-01",
             "type": "Microsoft.Compute/virtualMachines",
             "name": "[variables('vmName')]",
             "location": "[resourceGroup().location]",
             "identity": {
                 "type": "userAssigned",
                 "userAssignedIdentities": {
                    "[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',variables('<USERASSIGNEDIDENTITYNAME>'))]": {}
                 }
             }
         },
         //The following appears only if you provisioned the optional VM extension (to be deprecated)                  
         {
             "type": "Microsoft.Compute/virtualMachines/extensions",
             "name": "[concat(variables('vmName'),'/ManagedIdentityExtensionForWindows')]",
             "apiVersion": "2018-06-01-preview",
             "location": "[resourceGroup().location]",
             "dependsOn": [
                 "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
             ],
             "properties": {
                 "publisher": "Microsoft.ManagedIdentity",
                 "type": "ManagedIdentityExtensionForWindows",
                 "typeHandlerVersion": "1.0",
                 "autoUpgradeMinorVersion": true,
                 "settings": {
                     "port": 50342
             }
         }
        }
     ]
    

    Microsoft.Compute/virtualMachines API バージョン 2017-12-01Microsoft.Compute/virtualMachines API version 2017-12-01

    "resources": [
         {
             //other resource provider properties...
             "apiVersion": "2017-12-01",
             "type": "Microsoft.Compute/virtualMachines",
             "name": "[variables('vmName')]",
             "location": "[resourceGroup().location]",
             "identity": {
                 "type": "userAssigned",
                 "identityIds": [
                    "[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',variables('<USERASSIGNEDIDENTITYNAME>'))]"
                 ]
             }
         },
    
         //The following appears only if you provisioned the optional VM extension (to be deprecated)                   
         {
             "type": "Microsoft.Compute/virtualMachines/extensions",
             "name": "[concat(variables('vmName'),'/ManagedIdentityExtensionForWindows')]",
             "apiVersion": "2015-05-01-preview",
             "location": "[resourceGroup().location]",
             "dependsOn": [
                 "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
             ],
             "properties": {
                 "publisher": "Microsoft.ManagedIdentity",
                 "type": "ManagedIdentityExtensionForWindows",
                 "typeHandlerVersion": "1.0",
                 "autoUpgradeMinorVersion": true,
                 "settings": {
                     "port": 50342
             }
         }
        }
     ]
    

Azure VM からユーザー割り当てのマネージド ID を削除するRemove a user-assigned managed identity from an Azure VM

VM からユーザー割り当て ID を削除するには、お使いのアカウントに仮想マシン共同作成者ロールの割り当てが必要です。To remove a user-assigned identity from a VM, your account needs the Virtual Machine Contributor role assignment. Azure AD ディレクトリ ロールを追加で割り当てる必要はありません。No additional Azure AD directory role assignments are required.

  1. Azure にローカルでサインインする場合も、Azure Portal を使用してサインインする場合も、VM が含まれる Azure サブスクリプションに関連付けられているアカウントを使用します。Whether you sign in to Azure locally or via the Azure portal, use an account that is associated with the Azure subscription that contains the VM.

  2. テンプレートをエディターに読み込み、resources セクション内で関心のある Microsoft.Compute/virtualMachines リソースを探します。Load the template into an editor and locate the Microsoft.Compute/virtualMachines resource of interest within the resources section. ユーザー割り当てマネージド ID しか存在しない VM がある場合は、ID の種類を None に変更することによってそれを無効にすることができます。If you have a VM that only has user-assigned managed identity, you can disable it by changing the identity type to None.

    次の例は、システム割り当てマネージド ID が割り当てられていない VM からユーザー割り当てマネージド ID をすべて削除する方法を示しています。The following example shows you how remove all user-assigned managed identities from a VM with no system-assigned managed identities:

     {
       "apiVersion": "2018-06-01",
       "type": "Microsoft.Compute/virtualMachines",
       "name": "[parameters('vmName')]",
       "location": "[resourceGroup().location]",
       "identity": { 
           "type": "None"
     }
    

    Microsoft.Compute/virtualMachines API バージョン 2018-06-01Microsoft.Compute/virtualMachines API version 2018-06-01

    VM から 1 つのユーザー割り当てマネージド ID を削除するには、useraAssignedIdentities ディクショナリからそれを削除します。To remove a single user-assigned managed identity from a VM, remove it from the useraAssignedIdentities dictionary.

    システム割り当てマネージド ID がある場合は、identity 値の type 値でそれを保持します。If you have a system-assigned managed identity, keep it in the in the type value under the identity value.

    Microsoft.Compute/virtualMachines API バージョン 2017-12-01Microsoft.Compute/virtualMachines API version 2017-12-01

    VM から 1 つのユーザー割り当てマネージド ID を削除するには、identityIds 配列からそれを削除します。To remove a single user-assigned managed identity from a VM, remove it from the identityIds array.

    システム割り当てマネージド ID がある場合は、identity 値の type 値でそれを保持します。If you have a system-assigned managed identity, keep it in the in the type value under the identity value.

次の手順Next steps