チュートリアル: VM でユーザー割り当てマネージド ID を使用して Azure Resource Manager にアクセスする

このクイックスタートでは、仮想マシン (VM) の ID としてシステム割り当てマネージド ID を使って Azure Resource Manager API にアクセスする方法について説明します。 Azure リソースのマネージド ID は Azure によって自動的に管理され、資格情報をコードに挿入しなくても、Microsoft Entra 認証をサポートするサービスへの認証を有効にします。

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

学習内容は次のとおりです。

  • 仮想マシン (VM) に Azure Resource Manager 内のリソース グループへのアクセスを許可する
  • 仮想マシン (VM) の ID を使ってアクセス トークンを取得し、それを使って Azure Resource Manager を呼び出す

Windows VM のシステム割り当てマネージド ID を使用して Resource Manager にアクセスする

ヒント

この記事の手順は、開始するポータルに応じて若干異なる場合があります。

このチュートリアルでは、システム割り当て ID を作成し、それを Windows 仮想マシン (VM) に割り当ててから、その ID を使って Azure Resource Manager API にアクセスする方法について説明します。 管理対象サービス ID は Azure によって自動的に管理されます。 管理対象サービス ID を使用すると、コード内に資格情報を埋め込む必要なく、Microsoft Entra の認証をサポートするサービスに認証することができます。

学習内容は次のとおりです。

  • VM に Azure Resource Manager へのアクセスを許可します。
  • VM のシステム割り当てマネージド ID を使って、Resource Manager にアクセスするためのアクセス トークンを取得します。
  1. 管理者アカウントで Azure Portal にサインインします。

  2. [リソース グループ] タブに移動します。

  3. VM のマネージド ID にアクセスを許可するリソース グループを選びます。

  4. 左側のパネルで [アクセス制御 (IAM)] を選択します。

  5. [追加] を選択し、 [ロールの割り当ての追加] を選択します。

  6. [ロール] タブで、[閲覧者] を選択します。 このロールでは、すべてのリソースを表示できますが、変更を加えることはできません

  7. [メンバー] タブの [アクセスの割り当て先] オプションで [マネージド ID] を選んでから、[+ メンバーの選択] を選びます。

  8. [サブスクリプション] ドロップダウンに適切なサブスクリプションが表示されていることを確認します。 [リソース グループ][すべてのリソース グループ] を選びます。

  9. [Manage identity] (ID の管理) ボックスの一覧で [仮想マシン] を選択します。

  10. [選択] のドロップダウンで VM を選んでから、[保存] を選びます。

    マネージド ID への閲覧者ロールの追加を示すスクリーンショット。

アクセス トークンを取得する

VM のシステム割り当てマネージド ID を使って Resource Manager を呼び出し、アクセス トークンを取得します。

これらの手順を完了するには、SSH クライアントが必要です。 Windows を使用している場合は、Linux 用 Windows サブシステムで SSH クライアントを使用することができます。 SSH クライアント キーの構成について支援が必要な場合は、「Azure 上の Windows で SSH キーを使用する方法」または「Azure に Linux VM 用の SSH 公開キーと秘密キーのペアを作成して使用する方法」をご覧ください。

  1. ポータルで Linux VM に移動し、[概要][接続] を選択します。
  2. 任意の SSH クライアントを使用して、VM に接続します。
  3. ターミナル ウィンドウで、curl を使用して、Azure リソース エンドポイントのローカル マネージド ID に、Azure Resource Manager のアクセス トークンを取得するよう要求します。   アクセス トークンの curl 要求を次に示します。
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' -H Metadata:true

Note

resource パラメーターの値は、Microsoft Entra ID で想定されているものと完全に一致している必要があります。 Resource Manager のリソース ID の場合は、URI の末尾にスラッシュを含める必要があります。

応答には、Azure Resource Manager へのアクセスに必要なアクセス トークンが含まれています。

応答:

{
  "access_token":"eyJ0eXAiOi...",
  "refresh_token":"",
  "expires_in":"3599",
  "expires_on":"1504130527",
  "not_before":"1504126627",
  "resource":"https://management.azure.com",
  "token_type":"Bearer"
}

このアクセス トークンを使って Azure Resource Manager にアクセスし、たとえば、以前にこの VM にアクセスを許可したリソース グループの詳細を読み取ります。 <SUBSCRIPTION-ID><RESOURCE-GROUP>、および <ACCESS-TOKEN> の値を先ほど作成したものと置き換えます。

Note

URL は大文字と小文字が区別されるため、前にリソース グループ名の指定で使ったものと同じ大文字と小文字の使い分けになっていること、および "resourceGroup" の "G" が大文字になっていることを確認します。

curl https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>?api-version=2016-09-01 -H "Authorization: Bearer <ACCESS-TOKEN>" 

特定のリソース グループの情報を含む応答が返されます。

{
"id":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/DevTest",
"name":"DevTest",
"location":"westus",
"properties":
{
  "provisioningState":"Succeeded"
  }
} 

Linux VM のシステム割り当てマネージド ID を使用して Resource Manager のリソース グループにアクセスする

ヒント

この記事の手順は、開始するポータルに応じて若干異なる場合があります。

このチュートリアルでは、システム割り当て ID を作成し、それを Linux 仮想マシン (VM) に割り当ててから、その ID を使って Azure Resource Manager API にアクセスする方法について説明します。 管理対象サービス ID は Azure によって自動的に管理されます。 管理対象サービス ID を使用すると、コード内に資格情報を埋め込む必要なく、Microsoft Entra の認証をサポートするサービスに認証することができます。

学習内容は次のとおりです。

  • VM に Azure Resource Manager へのアクセスを許可します。
  • VM のシステム割り当てマネージド ID を使って、Resource Manager にアクセスするためのアクセス トークンを取得します。
  1. 管理者アカウントで Azure Portal にサインインします。

  2. [リソース グループ] タブに移動します。

  3. VM のマネージド ID にアクセスを許可するリソース グループを選びます。

  4. 左側のパネルで [アクセス制御 (IAM)] を選択します。

  5. [追加] を選択し、 [ロールの割り当ての追加] を選択します。

  6. [ロール] タブで、[閲覧者] を選択します。 このロールでは、すべてのリソースを表示できますが、変更を加えることはできません

  7. [メンバー] タブの [アクセスの割り当て先] オプションで [マネージド ID] を選んでから、[+ メンバーの選択] を選びます。

  8. [サブスクリプション] ドロップダウンに適切なサブスクリプションが表示されていることを確認します。 [リソース グループ][すべてのリソース グループ] を選びます。

  9. [ID の管理] ドロップダウンで [仮想マシン] を選びます。

  10. [選択] オプションのドロップダウンで VM を選んでから、[保存] を選びます。

    マネージド ID への閲覧者ロールの追加を示すスクリーンショット。

アクセス トークンを取得する

VM のシステム割り当てマネージド ID を使ってリソース マネージャーを呼び出し、アクセス トークンを取得します。

これらの手順を完了するには、SSH クライアントが必要です。 Windows を使用している場合は、Linux 用 Windows サブシステムで SSH クライアントを使用することができます。 SSH クライアント キーの構成について支援が必要な場合は、「Azure 上の Windows で SSH キーを使用する方法」または「Azure に Linux VM 用の SSH 公開キーと秘密キーのペアを作成して使用する方法」をご覧ください。

  1. Azure portal で Linux VM に移動します。
  2. [概要][接続] を選びます。
  3. 任意の SSH クライアントを使用して、VM に接続します。
  4. ターミナル ウィンドウで、curl を使って、ローカル環境の Azure リソース用マネージド ID エンドポイントに、Azure Resource Manager 用のアクセス トークンの取得を要求します。   アクセス トークンの curl 要求を次に示します。
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' -H Metadata:true

Note

resource パラメーターの値は、Microsoft Entra ID で想定されているものと完全に一致している必要があります。 Resource Manager のリソース ID の場合は、URI の末尾にスラッシュを含める必要があります。

応答に、Azure Resource Manager へのアクセスに必要なアクセス トークンが含まれています。

応答:

{
  "access_token":"eyJ0eXAiOi...",
  "refresh_token":"",
  "expires_in":"3599",
  "expires_on":"1504130527",
  "not_before":"1504126627",
  "resource":"https://management.azure.com",
  "token_type":"Bearer"
}

このアクセス トークンを使って、Azure Resource Manager にアクセスします。 たとえば、以前にこの VM にアクセスを許可したリソース グループの詳細を読み取ります。 <SUBSCRIPTION-ID><RESOURCE-GROUP>、および <ACCESS-TOKEN> の値を先ほど作成したものと置き換えます。

Note

URL は大文字と小文字が区別されるため、前にリソース グループ名の指定で使ったものと同じ大文字と小文字の使い分けになっていること、および resourceGroup の "G" が大文字になっていることを確認します。

curl https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>?api-version=2016-09-01 -H "Authorization: Bearer <ACCESS-TOKEN>" 

特定のリソース グループの情報を含む応答が返されます。

{
"id":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/DevTest",
"name":"DevTest",
"location":"westus",
"properties":
{
  "provisioningState":"Succeeded"
  }
} 

次のステップ

このクイックスタートでは、VM でシステム割り当てマネージド ID を使って Azure Resource Manager API にアクセスする方法を説明しました。 Azure Resource Manager の詳細については、以下を参照してください。