次の方法で共有


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

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

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

[前提条件]

  • Azure リソースのマネージド ID 機能に慣れていない場合は、こちらの概要を参照してください。 Azure アカウントをお持ちでない場合は、無料のアカウントにサインアップしてから先に進んでください。

この記事の Azure PowerShell または Azure CLI の例を使用する場合は、必ず最新バージョンの Azure PowerShell または Azure CLI をインストールしてください。

Von Bedeutung

  • この記事のすべてのサンプル スクリプトでは、Azure リソースのマネージド ID が有効になっている VM でコマンド ライン クライアントが実行されていることを前提としています。 Azure portal で VM の "接続" 機能を使用して、VM にリモート接続します。 VM で Azure リソースのマネージド ID を有効にする方法の詳細については、「Azure Portal を使用して VM 上に Azure リソースのマネージド ID を構成する」、または関連する記事 (PowerShell、CLI、テンプレート、または Azure SDK の使用) のいずれかを参照してください。
  • リソース アクセス中にエラーが発生しないようにするには、VM に対する Azure Resource Manager 操作を許可するために、VM のマネージド ID に適切なスコープ (VM 以上) で少なくとも "閲覧者" アクセス権を付与する必要があります。 詳細については、 Azure portal を使用したリソースへの 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. Azure リソース サービス プリンシパルの VM のマネージド ID で 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

Microsoft Entra ID をサポートし、Azure リソースのマネージド ID とそれぞれのリソース ID でテストされているリソースの一覧については、Microsoft Entra 認証をサポートする Azure サービスを参照してください。

エラー処理に関するガイダンス

次のような応答は、Azure リソースに対する VM のマネージド ID が正しく構成されていないことを示している可能性があります。

  • PowerShell: Invoke-WebRequest: リモート サーバーに接続できません
  • CLI: MSI: 'HTTPConnectionPool(host='localhost', port=50342) というエラーで http://localhost:50342/oauth2/token からトークンを取得できませんでした

これらのエラーのいずれかが発生した場合は、 Azure portal で Azure VM に戻り 、[ID] ページに移動し、[ システム割り当て済み ] が [はい] に設定されていることを確認します。

次のステップ