共用方式為


教學課程:在 VM 上使用使用者指派的受控識別來存取 Azure Resource Manager

本快速入門說明如何使用系統指派的受控識別作為虛擬機(VM)的身分識別來存取 Azure Resource Manager API。 Azure 資源的受控識別會自動由 Azure 管理,並可讓您向支援 Microsoft Entra 驗證的服務進行驗證,而不需要將認證插入您的程式代碼中。

Azure 資源的受控識別是 Microsoft Entra ID 的功能。 每個支援適用於 Azure 資源的受控識別 Azure 服務均受限於其本身的時間表。 開始之前,請務必檢閱 資源受控識別的可用性 狀態和 已知問題

您將學習如何:

  • 授與虛擬機 (VM) Azure Resource Manager 中資源群組的存取權
  • 使用虛擬機 (VM) 身分識別取得存取令牌,並用它來呼叫 Azure Resource Manager

使用 Windows VM 系統指派的受控識別來存取資源管理員

提示

本文中的步驟可能會根據您從開始的入口網站稍有不同。

本教學課程說明如何建立系統指派的身分識別、將它指派給 Windows 虛擬機(VM),然後使用該身分識別來存取 Azure Resource Manager API。 受控服務識別會自動由 Azure 管理。 它們可對支援 Microsoft Entra 驗證的服務進行驗證,而不需要將認證內嵌至您的程式代碼。

您將學習如何:

  • 將您的 VM 存取權授與 Azure Resource Manager。
  • 使用 VM 的系統指派受控識別來存取 Resource Manager,以取得存取令牌。
  1. 使用系統管理員帳戶登入 Azure 入口網站

  2. 流覽至 [ 資源群組] 索引標籤

  3. 選取您想要授與 VM 受控識別存取權的資源群組

  4. 在左側面板中,選取 [訪問控制][IAM]。

  5. 選取 [新增],然後選取 [新增角色指派]

  6. 在 [角色] 索引標籤中,選取 [讀取者]。 此角色允許檢視所有資源,但不允許您進行任何變更。

  7. 在 [成員] 索引標籤的 [指派存取權] 選項中,選取 [受控識別],然後選取 [+ 選取成員]。

  8. 確定 [訂用帳戶] 下拉式清單中 列出適當的訂 用帳戶。 針對 [ 資源群組],選取 [ 所有資源群組]。

  9. 針對 [ 管理身分識別] 下拉式 清單,選取 [ 虛擬機]。

  10. 針對 [ 選取],選擇下拉式清單中的 VM,然後選取 [ 儲存]。

    顯示將讀取者角色新增至受控識別的螢幕快照。

取得存取權杖

使用 VM 系統指派的受控識別,並呼叫 Resource Manager 以取得存取令牌。

若要完成這些步驟,您需要 SSH 用戶端。 如果您使用 Windows,您可以在 Windows 子系統 Linux 版 中使用 SSH 用戶端。 如果您需要設定 SSH 用戶端金鑰的協助,請參閱 如何在 Azure 上搭配 Windows 使用 SSH 金鑰,或 如何建立和使用 Azure 中 Linux VM 的 SSH 公開和私鑰組。

  1. 在入口網站中,流覽至您的 Linux VM,然後在 [概觀] 中選取 [連線]。
  2. 使用您選擇的 SSH 用戶端連線到 VM。
  3. 在終端機視窗中,使用 curl向 Azure 資源端點的本機受控識別提出要求,以取得 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

注意

參數的值 resource 必須完全符合 Microsoft Entra ID 的預期值。 在 Resource Manager 的資源識別碼的情況下,您必須在 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 存取權的資源群組詳細數據。 將、 <RESOURCE-GROUP><ACCESS-TOKEN> 的值<SUBSCRIPTION-ID>取代為您稍早建立的值。

注意

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 系統指派的受控識別來存取資源管理員中的資源群組

提示

本文中的步驟可能會根據您從開始的入口網站稍有不同。

本教學課程說明如何建立系統指派的身分識別、將它指派給Linux虛擬機(VM),然後使用該身分識別來存取 Azure Resource Manager API。 受控服務識別會自動由 Azure 管理。 它們可對支援 Microsoft Entra 驗證的服務進行驗證,而不需要將認證內嵌至您的程式代碼。

您將學習如何:

  • 將您的 VM 存取權授與 Azure 資源管理員。
  • 使用 VM 系統指派的受控識別來存取資源管理員,以取得存取令牌。
  1. 使用系統管理員帳戶登入 Azure 入口網站

  2. 流覽至 [ 資源群組] 索引標籤

  3. 選取您想要授與 VM 受控識別存取權的資源群組

  4. 在左側面板中,選取 [訪問控制][IAM]。

  5. 選取 [新增],然後選取 [新增角色指派]

  6. 在 [角色] 索引標籤中,選取 [讀取者]。 此角色允許檢視所有資源,但不允許您進行任何變更。

  7. 在 [成員] 索引標籤的 [指派存取權] 選項中,選取 [受控識別],然後選取 [+ 選取成員]。

  8. 確定 [訂用帳戶] 下拉式清單中 列出適當的訂 用帳戶。 針對 [ 資源群組],選取 [ 所有資源群組]。

  9. 在 [ 管理身分識別] 下拉式 清單中,選取 [ 虛擬機]。

  10. 在 [ 選取 ] 選項中,選擇下拉式清單中的 VM,然後選取 [ 儲存]。

    顯示將讀取者角色新增至受控識別的螢幕快照。

取得存取權杖

使用 VM 的系統指派受控識別,並呼叫資源管理員以取得存取令牌。

若要完成這些步驟,您需要 SSH 用戶端。 如果您使用 Windows,您可以在 Windows 子系統 Linux 版 中使用 SSH 用戶端。 如果您需要設定 SSH 用戶端金鑰的協助,請參閱 如何在 Azure 上搭配 Windows 使用 SSH 金鑰,或 如何建立和使用 Azure 中 Linux VM 的 SSH 公開和私鑰組。

  1. 在 Azure 入口網站 中,流覽至您的Linux VM。
  2. 在 [概觀],選取 [連線]。
  3. 使用您選擇的 SSH 用戶端連線到 VM。
  4. 在終端機視窗中,使用 curl向 Azure 資源端點的本機受控識別提出要求,以取得 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

注意

參數的值 resource 必須完全符合 Microsoft Entra ID 的預期值。 在資源管理員資源識別碼的情況下,您必須在 URI 中包含尾端斜線。

回應包含存取 Azure 資源管理員所需的存取令牌。

回應:

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

使用此存取令牌來存取 Azure 資源管理員。 例如,若要讀取您先前授與此 VM 存取權的資源群組詳細數據。 將、 <RESOURCE-GROUP><ACCESS-TOKEN> 的值<SUBSCRIPTION-ID>取代為您稍早建立的值。

注意

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 上使用系統指派的受控識別來存取 Azure Resource Manager API。 若要深入瞭解 Azure Resource Manager,請參閱: