テンプレートを使用して Azure 仮想マシン スケール セットで 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 仮想マシン スケール セットで Azure リソースのマネージド ID の次の操作を実行する方法を説明します。

  • Azure 仮想マシン スケール セットでシステム割り当てマネージド ID を有効および無効にする
  • Azure 仮想マシン スケール セットでユーザー割り当てマネージド ID を追加および削除する

前提条件

  • Azure リソースのマネージド ID の基本点な事柄については、概要に関するセクションを参照してください。 システム割り当てマネージド ID とユーザー割り当てマネージド ID の違いを必ず確認してください

  • まだ Azure アカウントを持っていない場合は、無料のアカウントにサインアップしてから先に進んでください。

  • この記事の管理操作を実行するアカウントには、次の Azure のロールベースのアクセス制御の割り当てが必要です。

    Note

    Microsoft Entra ディレクトリ ロールを追加で割り当てる必要はありません。

    • 仮想マシン共同作成者: 仮想マシン スケール セットを作成する、システム割り当てマネージド ID またはユーザー割り当てマネージド ID を有効にする、および仮想マシン スケール セットから削除することができるロールです。
    • マネージド ID 共同作成者ロール。ユーザー割り当てマネージド ID を作成します。
    • マネージド ID オペレーターロール。ユーザー割り当てマネージド ID の仮想マシン スケール セットへの割り当ておよび仮想マシン スケール セットからの削除を実行します。

Azure Resource Manager のテンプレート

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

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

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

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

仮想マシン スケール セットの作成時に、または既存の仮想マシン スケール セットでシステム割り当てマネージド ID を有効にする

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

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

    "identity": {
        "type": "SystemAssigned"
    }
    
  3. 完了すると、次のセクションがテンプレートのリソース セクションに追加され、以下にある例のようになります。

     "resources": [
         {
             //other resource provider properties...
             "apiVersion": "2018-06-01",
             "type": "Microsoft.Compute/virtualMachineScaleSets",
             "name": "[variables('vmssName')]",
             "location": "[resourceGroup().location]",
             "identity": {
                 "type": "SystemAssigned",
             },
            "properties": {
                 //other resource provider properties...
                 "virtualMachineProfile": {
                     //other virtual machine profile properties...
    
                 }
             }
         }
     ]
    

Azure 仮想マシン スケール セットでシステム割り当てマネージド ID を無効にする

システム割り当てマネージド ID が不要になった仮想マシン スケール セットがある場合:

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

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

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

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

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

    お使いの apiVersion が 2017-12-01 であり、仮想マシン スケール セットにシステム割り当てマネージド ID とユーザー割り当てマネージド ID の両方が割り当てられている場合は、ID の種類から SystemAssigned を削除し、ユーザー割り当てマネージド ID の identityIds 配列と共に UserAssigned を保持します。

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

    {
        "name": "[variables('vmssName')]",
        "apiVersion": "2018-06-01",
        "location": "[parameters(Location')]",
        "identity": {
            "type": "None"
         }
    
    }
    

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

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

注意

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

仮想マシン スケール セットにユーザー割り当て マネージド ID を割り当てる

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

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

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

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

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

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

    {
        "name": "[variables('vmssName')]",
        "apiVersion": "2017-03-30",
        "location": "[parameters(Location')]",
        "identity": {
            "type": "userAssigned",
            "identityIds": [
                "[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',variables('<USERASSIGNEDIDENTITY>'))]"
            ]
        }
    }
    
  2. 完了すると、テンプレートは以下の例のようになります。

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

    "resources": [
         {
             //other resource provider properties...
             "apiVersion": "2018-06-01",
             "type": "Microsoft.Compute/virtualMachineScaleSets",
             "name": "[variables('vmssName')]",
             "location": "[resourceGroup().location]",
             "identity": {
                 "type": "UserAssigned",
                 "userAssignedIdentities": {
                     "[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',variables('<USERASSIGNEDIDENTITYNAME>'))]": {}
                 }
             },
            "properties": {
                 //other virtual machine properties...
                 "virtualMachineProfile": {
                     //other virtual machine profile properties...
                 }
             }
         }
     ]
    

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

    "resources": [
         {
             //other resource provider properties...
             "apiVersion": "2017-12-01",
             "type": "Microsoft.Compute/virtualMachineScaleSets",
             "name": "[variables('vmssName')]",
             "location": "[resourceGroup().location]",
             "identity": {
                 "type": "UserAssigned",
                 "identityIds": [
                     "[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',variables('<USERASSIGNEDIDENTITYNAME>'))]"
                 ]
             },
            "properties": {
                 //other virtual machine properties...
                 "virtualMachineProfile": {
                     //other virtual machine profile properties...
                 }
             }
         }
     ]
    

Azure 仮想マシン スケール セットからユーザー割り当てマネージド ID を削除する

ユーザー割り当てマネージド ID が不要になった仮想マシン スケール セットがある場合は、次の手順に従います。

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

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

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

    {
        "name": "[variables('vmssName')]",
        "apiVersion": "2018-06-01",
        "location": "[parameters(Location')]",
        "identity": {
            "type": "None"
         }
    }
    

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

    仮想マシン スケール セットから 1 つのユーザー割り当てマネージド ID を削除するには、userAssignedIdentities ディクショナリからそれを削除します。

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

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

    仮想マシン スケール セットから 1 つのユーザー割り当てマネージド ID を削除するには、identityIds 配列からそれを削除します。

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

次のステップ