次の方法で共有


サインインに Azure VM 上のAzure リソースにマネージド ID を使用する方法

この記事では、Azure リソース サービス プリンシパルのマネージド ID を使用してサインインするための PowerShell および CLI スクリプトの例と、エラー処理などの重要なトピックに関するガイダンスを提供します。

Azure Az PowerShell モジュールを使用してAzureを操作することをお勧めします。 開始するには、Install Azure PowerShell を参照してください。 Az PowerShell モジュールに移行する方法については、「AzRM から Azを参照してください。

[前提条件]

  • 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 は、サービス プリンシパル オブジェクトを提供します。これは、VM でAzure リソースのマネージド ID を有効にすると作成されます。 サービス プリンシパルには、Azure リソースへのアクセス権を付与し、サインインおよびリソース アクセス用のスクリプト/コマンド ライン クライアントによって ID として使用できます。 従来、セキュリティで保護されたリソースに独自の ID でアクセスするには、スクリプト クライアントで次の操作を行う必要があります。

  • Microsoft Entra IDに機密/Web クライアント アプリケーションとして登録および同意する
  • アプリの資格情報 (スクリプトに埋め込まれている可能性が高い) を使用して、サービス プリンシパルとしてサインインします。

Azure リソースのマネージド ID では、スクリプト クライアントは、Azure リソース サービス プリンシパルのマネージド ID でサインインできるため、どちらも行う必要がなくなります。

Azure CLI

次のスクリプトは、次の方法を示しています。

  1. Azure リソース用サービス プリンシパルの VM におけるマネージド IDとして Microsoft Entra ID にサインインします。

  2. 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

次のスクリプトは、次の方法を示しています。

  1. VM のマネージド ID を使用して、Azure リソース サービス プリンシパルの Microsoft Entra ID にサインインします

  2. 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