PowerShell を使用して Azure VM 上の Azure リソースのマネージド ID を構成する
Azure リソース用マネージド ID は、Microsoft Entra ID の機能です。 Azure リソースのマネージド ID をサポートする各 Azure サービスは、それぞれ固有のタイムラインの下で提供されます。 ご利用のリソースに対するマネージド ID の提供状態と既知の問題をあらかじめ確認しておいてください。
Azure リソースのマネージド ID は、Microsoft Entra ID で自動的に管理される ID を Azure サービスに提供します。 この ID を使用すると、コード内に資格情報を記述することなく、Microsoft Entra の認証をサポートする任意のサービスに対して認証を行うことができます。
この記事では、PowerShell を使用して、Azure VM 上に次の Azure リソースのマネージド ID 操作を実行する方法について説明します。
注意
Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、Azure PowerShell のインストールに関する記事を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。
前提条件
- Azure リソースのマネージド ID の基本点な事柄については、概要に関するセクションを参照してください。 システム割り当てマネージド ID とユーザー割り当てマネージド ID の違いを必ず確認してください。
- まだ Azure アカウントを持っていない場合は、無料のアカウントにサインアップしてから先に進んでください。
- サンプル スクリプトを実行するには、次の 2 つのオプションがあります。
- Azure Cloud Shell を使用します。これは、コード ブロックの右上隅にある [試してみる] ボタンを使用して開くことができます。
- 最新バージョンの Azure PowerShell をインストールしてスクリプトをローカルで実行した後、
Connect-AzAccount
を使用して Azure にサインインします。
システム割り当てマネージド ID
このセクションでは、Azure PowerShell を使用してシステム割り当てマネージド ID を有効および無効にする方法について説明します。
Azure VM の作成中にシステム割り当てマネージド ID を有効にする
システム割り当てマネージド ID を有効にして Azure VM を作成するには、お使いのアカウントに仮想マシン共同作成者ロールの割り当てが必要です。 その他の Microsoft Entra ディレクトリ ロールを割り当てる必要はありません。
次のいずれかの Azure VM クイック スタートを参照して、必要なセクション (「Azure へのサインイン」、「リソース グループの作成」、「ネットワーク グループの作成」、「VM の作成」) のみを実行してください。
「VM の作成」セクションに到達したときに、New-AzVMConfig コマンドレットの構文にわずかな変更を加えます。 必ず
-IdentityType SystemAssigned
パラメーターを追加し、システム割り当て ID を有効にして VM のプロビジョニングを行います。次に例を示します。$vmConfig = New-AzVMConfig -VMName myVM -IdentityType SystemAssigned ...
既存の Azure VM 上でシステム割り当てマネージド ID を有効にする
もともとシステム割り当てマネージド ID をプロビジョニングされていなかった VM でシステム割り当てマネージド ID を有効にするには、お使いのアカウントに仮想マシン共同作成者ロールの割り当てが必要です。 その他の Microsoft Entra ディレクトリ ロールを割り当てる必要はありません。
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 をグループに追加します。
VM のサービス プリンシパルの
ObjectID
(返された値のId
フィールドで指定されています) を取得し、メモします。Get-AzADServicePrincipal -displayname "myVM"
グループの
ObjectID
(返された値のId
フィールドで指定されています) を取得し、メモします。Get-AzADGroup -searchstring "myGroup"
VM のサービス プリンシパルをグループに追加します。
New-MgGroupMember -GroupId "<Id of group>" -DirectoryObjectId "<Id of VM service principal>"
Azure VM でシステム割り当てマネージド ID を無効にする
VM でシステム割り当てマネージド ID を無効にするには、お使いのアカウントに仮想マシン共同作成者ロールの割り当てが必要です。 その他の Microsoft Entra ディレクトリ ロールを割り当てる必要はありません。
システム割り当てマネージド ID は不要になったが、ユーザー割り当てマネージド ID はまだ必要な仮想マシンがある場合は、次のコマンドレットを使用します。
Get-AzVM
コマンドレットを使用して VM プロパティを取得し、-IdentityType
パラメーターをUserAssigned
に設定します。$vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM Update-AzVm -ResourceGroupName myResourceGroup -VM $vm -IdentityType "UserAssigned" -IdentityID "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESROURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>..."
システム割り当てマネージド 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 オペレーター ロールの割り当てが必要です。 その他の Microsoft Entra ディレクトリ ロールを割り当てる必要はありません。
次のいずれかの 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 オペレーター ロールの割り当てが必要です。 その他の Microsoft Entra ディレクトリ ロールを割り当てる必要はありません。
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>
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"
次のステップ
完全な Azure VM 作成のクイックスタートについては、次を参照してください。