この記事では、Azure リソース サービス プリンシパルのマネージド ID を使用してサインインするための PowerShell および CLI スクリプトの例と、エラー処理などの重要なトピックに関するガイダンスを提供します。
注
Azure Az PowerShell モジュールを使用してAzureを操作することをお勧めします。 開始するには、Install Azure PowerShell を参照してください。 Az PowerShell モジュールに移行する方法については、「
[前提条件]
- Azure リソースのマネージド ID 機能に慣れていない場合は、このoverviewを参照してください。 Azureアカウントをお持ちでない場合は、続行する前に無料アカウントにサインアップしてください。
この記事のAzure PowerShellまたはAzure CLIの例を使用する場合は、必ず最新バージョンの Azure PowerShell または Azure CLI をインストールしてください。
Von Bedeutung
- この記事のすべてのサンプル スクリプトでは、Azure リソースのマネージド ID が有効になっている VM でコマンド ライン クライアントが実行されていることを前提としています。 Azure ポータルで VM の "接続" 機能を使用して、VM にリモート接続します。 VM でAzure リソースのマネージド ID を有効にする方法の詳細については、「Azure ポータルを使用して VM 上のAzure リソースのマネージド ID を構成する
またはバリアント記事の 1 つ (PowerShell、CLI、テンプレート、またはAzure SDKを使用) を参照してください。 - リソース アクセス中にエラーが発生しないようにするには、VM でAzure Resource Manager操作を許可するために、適切なスコープ (VM 以上) で VM のマネージド ID に少なくとも "閲覧者" アクセス権を付与する必要があります。 詳細については、「Azure ポータルを使用して Azure リソースにアクセスするためのマネージド ID の割り当て」を参照してください。
概要
Azure リソースのマネージド ID は、
- Microsoft Entra IDに機密/Web クライアント アプリケーションとして登録および同意する
- アプリの資格情報 (スクリプトに埋め込まれている可能性が高い) を使用して、サービス プリンシパルとしてサインインします。
Azure リソースのマネージド ID では、スクリプト クライアントは、Azure リソース サービス プリンシパルのマネージド ID でサインインできるため、どちらも行う必要がなくなります。
Azure CLI
次のスクリプトは、次の方法を示しています。
Azure リソース用サービス プリンシパルの VM におけるマネージド IDとして Microsoft Entra ID にサインインします。
Azure Resource Managerを呼び出し、VM のサービス プリンシパル ID を取得します。 CLI は、トークンの取得/使用を自動的に管理します。 仮想マシン名は必ず
<VM-NAME>に置き換える必要があります。az login --identity $spID=$(az resource list -n <VM-NAME> --query [*].identity.principalId --out tsv) echo The managed identity for Azure resources service principal ID is $spID
Azure PowerShell
次のスクリプトは、次の方法を示しています。
VM のマネージド ID を使用して、Azure リソース サービス プリンシパルの Microsoft Entra ID にサインインします
Azure Resource Manager コマンドレットを呼び出して、VM に関する情報を取得します。 PowerShell では、トークンの使用を自動的に管理します。
Add-AzAccount -identity # Call Azure Resource Manager to get the service principal ID for the VM's managed identity for Azure resources. $vmInfoPs = Get-AzVM -ResourceGroupName <RESOURCE-GROUP> -Name <VM-NAME> $spID = $vmInfoPs.Identity.PrincipalId echo "The managed identity for Azure resources service principal ID is $spID"
Azure サービスのリソース ID
Azure リソースのマネージド ID でテストされた Microsoft Entra ID をサポートするリソースの一覧およびそれぞれのリソース ID については、Microsoft Entra 認証をサポートする Azure サービス を参照してください。
エラー処理に関するガイダンス
次のような応答は、Azure リソースの VM のマネージド ID が正しく構成されていないことを示している可能性があります。
- PowerShell: Invoke-WebRequest: リモート サーバーに接続できません
- CLI: MSI: 'HTTPConnectionPool(host='localhost', port=50342) というエラーで
http://localhost:50342/oauth2/tokenからトークンを取得できませんでした
これらのエラーのいずれかが発生した場合は、Azure ポータルでAzure VM に戻り、Identity ページに移動し、System assigned が "Yes" に設定されていることを確認します。
次のステップ
- Azure VM 上のAzure リソースのマネージド ID を有効にするには、「
PowerShell を使用してAzure VM 上のAzure リソースのマネージド ID を構成する 、またはAzure CLI