PowerShell を使用して Azure VM 上の Azure リソースのマネージド ID を構成する

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

Azure リソースのマネージド ID は、Azure Active Directory で自動的に管理される ID を Azure サービスに提供します。 この ID を使用して、コードに資格情報が含まれていなくても、Azure AD の認証をサポートする任意のサービスに認証することができます。

この記事では、PowerShell を使用して、Azure VM 上に次の Azure リソースのマネージド ID 操作を実行する方法について説明します。

注意

Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、Azure PowerShell のインストールに関する記事を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

前提条件

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

このセクションでは、Azure PowerShell を使用してシステム割り当てマネージド ID を有効および無効にする方法について説明します。

Azure VM の作成中にシステム割り当てマネージド ID を有効にする

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

  1. 次のいずれかの Azure VM クイック スタートを参照して、必要なセクション (「Azure へのサインイン」、「リソース グループの作成」、「ネットワーク グループの作成」、「VM の作成」) のみを実行してください。

    「VM の作成」セクションに到達したときに、New-AzVMConfig コマンドレットの構文にわずかな変更を加えます。 必ず -IdentityType SystemAssigned パラメーターを追加し、システム割り当て ID を有効にして VM のプロビジョニングを行います。次に例を示します。

    $vmConfig = New-AzVMConfig -VMName myVM -IdentityType SystemAssigned ...
    

既存の Azure VM 上でシステム割り当てマネージド ID を有効にする

もともとシステム割り当てマネージド ID をプロビジョニングされていなかった VM でシステム割り当てマネージド ID を有効にするには、お使いのアカウントに仮想マシン共同作成者ロールの割り当てが必要です。 その他の Azure AD ディレクトリ ロールを割り当てる必要はありません。

  1. Get-AzVM コマンドレットを使用して VM プロパティを取得します。 システム割り当てマネージド ID を有効にするには、Update-AzVM コマンドレットで -IdentityType スイッチを使用します。

    $vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
    Update-AzVM -ResourceGroupName myResourceGroup -VM $vm -IdentityType SystemAssigned
    

VM のシステム割り当て ID をグループに追加する

VM でシステム割り当て ID を有効にした後は、その ID をグループに追加できます。 以降の手順では、VM のシステム割り当て ID をグループに追加します。

  1. VM のサービス プリンシパルの ObjectID (返された値の Id フィールドで指定されています) を取得し、メモします。

    Get-AzADServicePrincipal -displayname "myVM"
    
  2. グループの ObjectID (返された値の Id フィールドで指定されています) を取得し、メモします。

    Get-AzADGroup -searchstring "myGroup"
    
  3. VM のサービス プリンシパルをグループに追加します。

    Add-AzureADGroupMember -ObjectId "<objectID of group>" -RefObjectId "<object id of VM service principal>"
    

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

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

システム割り当てマネージド ID は不要になったが、ユーザー割り当てマネージド ID はまだ必要な仮想マシンがある場合は、次のコマンドレットを使用します。

  1. Get-AzVM コマンドレットを使用して VM プロパティを取得し、-IdentityType パラメーターを UserAssigned に設定します。

    $vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
    Update-AzVm -ResourceGroupName myResourceGroup -VM $vm -IdentityType "UserAssigned"
    

システム割り当てマネージド ID が不要になり、ユーザー割り当てマネージド ID がない仮想マシンがある場合は、次のコマンドを使用します。

$vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
Update-AzVm -ResourceGroupName myResourceGroup -VM $vm -IdentityType None

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

このセクションでは、Azure PowerShell を使用して、VM との間でユーザー割り当てマネージド ID を追加および削除する方法について説明します。

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

ユーザー割り当て ID を VM に割り当てるには、お使いのアカウントに仮想マシン共同作成者ロールとマネージド ID オペレーター ロールの割り当てが必要です。 その他の Azure AD ディレクトリ ロールを割り当てる必要はありません。

  1. 次のいずれかの Azure VM クイック スタートを参照して、必要なセクション (「Azure へのサインイン」、「リソース グループの作成」、「ネットワーク グループの作成」、「VM の作成」) のみを実行してください。

    「VM の作成」セクションに到達したときに、New-AzVMConfig コマンドレットの構文にわずかな変更を加えます。 -IdentityType UserAssigned および -IdentityID パラメーターを追加し、ユーザー割り当て ID を使用して VM のプロビジョニングを行います。 <VM NAME><SUBSCRIPTION ID><RESROURCE GROUP>、および <USER ASSIGNED IDENTITY NAME> を独自の値に置き換えます。 次に例を示します。

    $vmConfig = New-AzVMConfig -VMName <VM NAME> -IdentityType UserAssigned -IdentityID "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESROURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>..."
    

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

ユーザー割り当て ID を VM に割り当てるには、お使いのアカウントに仮想マシン共同作成者ロールとマネージド ID オペレーター ロールの割り当てが必要です。 その他の Azure AD ディレクトリ ロールを割り当てる必要はありません。

  1. New-AzUserAssignedIdentity コマンドレットを使用して、ユーザー割り当てマネージド ID を作成します。 出力の Id は、次の手順で必要になるため書き留めてください。

    重要

    ユーザー割り当てのマネージド ID の作成では、英数字、下線、およびハイフン (0-9、a-z、A-Z、_、-) 文字のみがサポートされます。 また、VM/VMSS への割り当てを正常に機能させるには、名前の長さを 3 ~ 128 文字に制限する必要があります。 詳しくは、「FAQ と既知の問題」をご覧ください。

    New-AzUserAssignedIdentity -ResourceGroupName <RESOURCEGROUP> -Name <USER ASSIGNED IDENTITY NAME>
    
  2. Get-AzVM コマンドレットを使用して VM プロパティを取得します。 次に、ユーザー割り当てマネージド ID を Azure VM に割り当てるため、Update-AzVM コマンドレットで -IdentityType および -IdentityID スイッチを使用します。 -IdentityId パラメーターの値は、前の手順で書き留めた Id です。 <VM NAME><SUBSCRIPTION ID><RESROURCE GROUP>、および <USER ASSIGNED IDENTITY NAME> を独自の値に置き換えます。

    警告

    以前のユーザー割り当てマネージド ID を VM に割り当てておくには、VM オブジェクト (たとえば $vm.Identity) の Identity プロパティのクエリを実行します。 ユーザー割り当てマネージド ID が返された場合、VM に割り当てる新しいユーザー割り当てマネージド ID とともにこれらを次のコマンドに含めます。

    $vm = Get-AzVM -ResourceGroupName <RESOURCE GROUP> -Name <VM NAME>
    Update-AzVM -ResourceGroupName <RESOURCE GROUP> -VM $vm -IdentityType UserAssigned -IdentityID "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESROURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>"
    

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

VM からユーザー割り当ての ID を削除にするには、お使いのアカウントに仮想マシン共同作成者ロールの割り当てが必要です。

VM に複数のユーザー割り当てマネージド ID がある場合は、次のコマンドを使用して、最後の ID 以外の ID をすべて削除できます。 <RESOURCE GROUP><VM NAME> のパラメーターの値は、必ず実際の値に置き換えてください。 <USER ASSIGNED IDENTITY NAME> はユーザー割り当てマネージド ID の名前プロパティであり、VM 上に残す必要があります。 この情報は、VM オブジェクトの Identity プロパティのクエリを実行することにより見つかります。 例: $vm.Identity

$vm = Get-AzVm -ResourceGroupName myResourceGroup -Name myVm
Update-AzVm -ResourceGroupName myResourceGroup -VirtualMachine $vm -IdentityType UserAssigned -IdentityID <USER ASSIGNED IDENTITY NAME>

VM にシステム割り当てマネージド ID がないときに、その VM からユーザー割り当てマネージド ID をすべて削除する場合は、次のコマンドを使用します。

$vm = Get-AzVm -ResourceGroupName myResourceGroup -Name myVm
Update-AzVm -ResourceGroupName myResourceGroup -VM $vm -IdentityType None

VM にシステム割り当てマネージド ID とユーザー割り当てマネージド ID の両方がある場合は、システム割り当てマネージド ID のみを使用するように切り替えることによって、すべてのユーザー割り当てマネージド ID を削除できます。

$vm = Get-AzVm -ResourceGroupName myResourceGroup -Name myVm
Update-AzVm -ResourceGroupName myResourceGroup -VirtualMachine $vm -IdentityType "SystemAssigned"

次のステップ