テンプレートを使用して Azure VM で Azure リソースのマネージド ID を構成する

Azure リソース用マネージド ID は、Microsoft Entra ID の機能です。 Azure リソースのマネージド ID をサポートする各 Azure サービスは、それぞれ固有のタイムラインの下で提供されます。 ご利用のリソースに対するマネージド ID の提供状態と既知の問題をあらかじめ確認しておいてください。

Azure リソースのマネージド ID は、Microsoft Entra ID で自動的に管理される ID を Azure サービスに提供します。 この ID を使用すると、コード内に資格情報を記述することなく、Microsoft Entra の認証をサポートする任意のサービスに対して認証を行うことができます。

この記事では、Azure Resource Manager デプロイ テンプレートを使用して、Azure VM で Azure リソースのマネージド ID の次の操作を実行する方法を説明します。

前提条件

Azure Resource Manager のテンプレート

Azure portal とスクリプトを使う場合と同じように、Azure Resource Manager テンプレートを使うと、Azure リソース グループによって定義された新しいリソースまたは変更されたリソースをデプロイすることができます。 ローカルとポータル ベースの両方を含むテンプレートの編集やデプロイでは、次のような複数のオプションが使用できます。

選択するオプションにかかわらず、初めてのデプロイ時も再デプロイ時もテンプレートの構文は同じです。 新規または既存の VM での、システムまたはユーザー割り当てマネージド ID の有効化も同様に行われます。 また、既定で Azure Resource Manager はデプロイに対して増分更新を行います。

システム割り当てマネージド ID

このセクションでは、Azure Resource Manager テンプレートを使用して、システム割り当てマネージド ID を有効および無効にします。

Azure VM の作成時に、または既存の VM でシステム割り当てマネージド ID を有効にする

VM でシステム割り当てマネージド ID を有効にするには、お使いのアカウントに仮想マシン共同作成者ロールの割り当てが必要です。 その他の Microsoft Entra ディレクトリ ロールを割り当てる必要はありません。

  1. Azure にローカルでサインインする場合も、Azure Portal を使用してサインインする場合も、VM が含まれる Azure サブスクリプションに関連付けられているアカウントを使用します。

  2. システム割り当てマネージド ID を有効にするには、テンプレートをエディターに読み込み、resources セクション内で対象の Microsoft.Compute/virtualMachines リソースを探し、"type": "Microsoft.Compute/virtualMachines" プロパティと同じレベルに "identity" プロパティを追加します。 次の構文を使用します。

    "identity": {
        "type": "SystemAssigned"
    },
    
  3. 完了すると、テンプレートの resource セクションに次のセクションが追加され、テンプレートは次のようになります。

     "resources": [
         {
             //other resource provider properties...
             "apiVersion": "2018-06-01",
             "type": "Microsoft.Compute/virtualMachines",
             "name": "[variables('vmName')]",
             "location": "[resourceGroup().location]",
             "identity": {
                 "type": "SystemAssigned",
                 }                        
         }
     ]
    

VM のシステム割り当てマネージド ID にロールを割り当てる

VM でシステム割り当てマネージド ID を有効にしたら、作成先となったリソース グループへの閲覧者アクセス権などのロールを付与することができます。 この手順の詳細については、「Azure Resource Manager テンプレートを使用して Azure でのロールを割り当てる」という記事を参照してください。

Azure VM でシステム割り当てマネージド ID を無効にする

VM からシステム割り当てマネージド ID を削除するには、お使いのアカウントに仮想マシン共同作成者ロールの割り当てが必要です。 その他の Microsoft Entra ディレクトリ ロールを割り当てる必要はありません。

  1. Azure にローカルでサインインする場合も、Azure Portal を使用してサインインする場合も、VM が含まれる Azure サブスクリプションに関連付けられているアカウントを使用します。

  2. テンプレートをエディターに読み込み、resources セクション内で関心のある Microsoft.Compute/virtualMachines リソースを探します。 システム割り当てマネージド ID のみが割り当てられた VM がある場合は、ID の種類を None に変更することで無効にすることができます。

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

    VM にシステム割り当てマネージド ID とユーザー割り当てマネージド ID の両方が割り当てられている場合は、ID の種類から SystemAssigned を削除し、userAssignedIdentities ディクショナリ値と共に UserAssigned を保持します。

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

    apiVersion2017-12-01 であり、VM にシステム割り当てマネージド ID とユーザー割り当てマネージド ID の両方が割り当てられている場合は、ID の種類から SystemAssigned を削除し、ユーザー割り当てマネージド ID の identityIds 配列と共に UserAssigned を保持します。

次の例は、ユーザー割り当てマネージド ID が割り当てられていない VM からシステム割り当てマネージド ID を削除する方法を示しています。

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

ユーザー割り当てマネージド ID

このセクションでは、Azure Resource Manager テンプレートを使用して、Azure VM にユーザー割り当てマネージド ID を割り当てます。

注意

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

Azure VM にユーザー割り当てマネージド ID を割り当てる

ユーザー割り当て ID を VM に割り当てるには、お使いのアカウントにマネージド ID オペレーター ロールの割り当てが必要です。 その他の Microsoft Entra ディレクトリ ロールを割り当てる必要はありません。

  1. ユーザー割り当てマネージド ID を VM に割り当てるには、resources 要素に次のエントリを追加します。 <USERASSIGNEDIDENTITY> は、作成したユーザー割り当てマネージド ID の名前に置き換えてください。

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

    apiVersion2018-06-01 の場合、ユーザー割り当てマネージド ID は userAssignedIdentities ディクショナリ形式で格納されます。<USERASSIGNEDIDENTITYNAME> 値は、テンプレートの variables セクションに定義された変数に格納する必要があります。

     {
         "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-01

    apiVersion2017-12-01 の場合、ユーザー割り当てマネージド ID は identityIds 配列に格納されます。<USERASSIGNEDIDENTITYNAME> 値は、テンプレートの variables セクションに定義された変数に格納する必要があります。

    {
        "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 セクションに次のセクションが追加され、テンプレートは次のようになります。

    Microsoft.Compute/virtualMachines API バージョン 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>'))]": {}
                 }
             }
         }
     ] 
    

    Microsoft.Compute/virtualMachines API バージョン 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>'))]"
                 ]
             }
         }
    ]
    

Azure VM からユーザー割り当てのマネージド ID を削除する

VM からユーザー割り当て ID を削除するには、お使いのアカウントに仮想マシン共同作成者ロールの割り当てが必要です。 その他の Microsoft Entra ディレクトリ ロールを割り当てる必要はありません。

  1. Azure にローカルでサインインする場合も、Azure Portal を使用してサインインする場合も、VM が含まれる Azure サブスクリプションに関連付けられているアカウントを使用します。

  2. テンプレートをエディターに読み込み、resources セクション内で関心のある Microsoft.Compute/virtualMachines リソースを探します。 ユーザー割り当てマネージド ID しか存在しない VM がある場合は、ID の種類を None に変更することによってそれを無効にすることができます。

    次の例は、システム割り当てマネージド ID が割り当てられていない VM からユーザー割り当てマネージド ID をすべて削除する方法を示しています。

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

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

    VM から 1 つのユーザー割り当てマネージド ID を削除するには、useraAssignedIdentities ディクショナリからそれを削除します。

    システム割り当てマネージド ID がある場合は、identity 値の type 値でそれを保持します。

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

    VM から 1 つのユーザー割り当てマネージド ID を削除するには、identityIds 配列からそれを削除します。

    システム割り当てマネージド ID がある場合は、identity 値の type 値でそれを保持します。

次のステップ