教學課程:在 VM 上使用系統指派的受控識別來存取 Azure Resource Manager
本快速入門說明如何使用系統指派的受控識別作為虛擬機器 (VM) 身分識別,以存取 Azure Resource Manager API。 Azure 資源受控識別會自動由 Azure 管理,可讓您向支援 Microsoft Entra 驗證的服務進行驗證,而不需要將認證插入程式碼中。
Azure 資源受控識別是 Microsoft Entra ID 的一項功能。 每個支援適用於 Azure 資源的受控識別 Azure 服務均受限於其本身的時間表。 在開始之前,請務必先檢閱資源的受控識別可用性狀態和已知問題。
您將學習如何:
- 在 Azure Resource Manager 中將您的虛擬機器 (VM) 存取權授與資源群組
- 使用虛擬機器 (VM) 身分識別取得存取權杖,並使用它來呼叫 Azure Resource Manager
使用 Windows VM 系統指派的受控識別來存取 Resource Manager
提示
根據您開始使用的入口網站,本文中的步驟可能略有不同。
本教學課程說明如何建立系統指派的身分識別,並將其指派給 Windows 虛擬機器 (VM),然後使用該身分識別來存取 Azure Resource Manager API。 由 Azure 自動管理受控服務身分識別。 它們會啟用對支援 Microsoft Entra 驗證之服務的驗證,而不需要在程式碼中內嵌認證。
您將學習如何:
- 將您的 VM 存取權授與 Azure Resource Manager。
- 使用 VM 系統指派的受控識別取得存取權杖,以存取 Resource Manager。
使用系統管理員帳戶登入 Azure 入口網站。
瀏覽至 [資源群組] 索引標籤。
選取您想要授與 VM 受控識別存取權的資源群組。
從左側面板中,選取 [存取控制 (IAM)]。
選取 [新增],然後選取 [新增角色指派]。
在 [角色] 索引標籤中,選取 [讀者]。 此角色可以檢視所有資源,但無法進行任何變更。
在 [成員] 索引標籤的 [存取權指派對象為] 選項中,選取 [受控識別],然後選取 [+ 選取成員]。
確認 [訂用帳戶] 下拉式清單中已列出適當的訂用帳戶。 針對 [資源群組],請選取 [所有資源群組]。
針對 [管理身分識別] 下拉式清單,選取 [虛擬機器]。
針對 [選取],選擇下拉式清單中的 VM,然後選取 [儲存]。
取得存取權杖
使用 VM 系統指派的受控識別,並呼叫 Resource Manager 以取得存取權杖。
若要完成這些步驟,您需要 SSH 用戶端。 如果您使用 Windows,您可以在 Windows 子系統 Linux 版中使用 SSH 用戶端。 如果您需要設定 SSH 用戶端金鑰的協助,請參閱如何在 Azure 上搭配 Windows 使用 SSH 金鑰,或如何在 Azure 中建立和使用 Linux VM 的 SSH 公開和私密金鑰組。
- 在入口網站中,瀏覽至您的 Linux VM,然後在 [概觀] 中選取 [連線]。
- 使用您所選擇的 SSH 用戶端來連線到 VM。
- 在終端機視窗中,使用
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 資源 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>
。
注意
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 Resource Manager。
- 使用 VM 系統指派的受控識別取得存取權杖,以存取 Resource Manager。
使用系統管理員帳戶登入 Azure 入口網站。
瀏覽至 [資源群組] 索引標籤。
選取您想要授與 VM 受控識別存取權的資源群組。
從左側面板中,選取 [存取控制 (IAM)]。
選取 [新增],然後選取 [新增角色指派]。
在 [角色] 索引標籤中,選取 [讀者]。 此角色可以檢視所有資源,但無法進行任何變更。
在 [成員] 索引標籤中的 [存取權指派對象為] 選項中,選取 [受控識別],然後選取 [+ 選取成員]。
確認 [訂用帳戶] 下拉式清單中已列出適當的訂用帳戶。 針對 [資源群組],請選取 [所有資源群組]。
在 [管理身分識別] 下拉式清單中,選取 [虛擬機器]。
在 [選取] 選項中,選擇下拉式清單中的 VM,然後選取 [儲存]。
取得存取權杖
使用 VM 系統指派的受控識別,並呼叫 Resource Manager 以取得存取權杖。
若要完成這些步驟,您需要 SSH 用戶端。 如果您使用 Windows,您可以在 Windows 子系統 Linux 版中使用 SSH 用戶端。 如果您需要設定 SSH 用戶端金鑰的協助,請參閱如何在 Azure 上搭配 Windows 使用 SSH 金鑰,或如何在 Azure 中建立和使用 Linux VM 的 SSH 公開和私密金鑰組。
- 在 Azure 入口網站中,瀏覽至您的 Linux VM。
- 在 [概觀] 中,選取 [連線]。
- 使用您所選擇的 SSH 用戶端來連線到 VM。
- 在終端機視窗中,使用
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 存取權的資源群組詳細資料。 使用您稍早建立的值來取代 <SUBSCRIPTION-ID>
、<RESOURCE-GROUP>
和 <ACCESS-TOKEN>
。
注意
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,請參閱: