針對 ARM 服務連線進行疑難排解

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

本文提供常見的疑難解答案例,可協助您解決建立 Azure Resource Manager 服務連線時可能會遇到的問題。 請參閱 管理服務連線 ,以瞭解如何建立、編輯及保護服務連線。

當您建立 ARM 服務連線時,會發生什麼事?

如果您沒有服務連線,您可以建立服務連線,如下所示:

  1. 從專案內選取 [項目設定],然後選取 [ 服務連線]。

    顯示如何從項目設定存取服務連線的螢幕快照

  2. 選取 [ 新增服務連線 ] 以新增服務連線,然後選取 [Azure Resource Manager]。 完成時,請選取 [下一步 ]。

    顯示服務連線類型的螢幕快照。

  3. 選取 [服務主體][自動],然後選取 [下一步]。

  4. 選取 [ 訂用帳戶],然後從下拉式清單中選取您的訂用帳戶。 填寫表單,然後在完成時選取 [ 儲存 ]。

    顯示新ARM服務連線表單的螢幕快照。

當您儲存新的 ARM 服務連線時,Azure DevOps 接著:

  1. 連線 至所選訂用帳戶的 Microsoft Entra 租使用者。
  2. 代表使用者在 Microsoft Entra ID 中建立應用程式。
  3. 成功建立應用程式之後,將應用程式指派為所選訂用帳戶的參與者。
  4. 使用此應用程式的詳細資料建立 Azure Resource Manager 服務連線。

注意

若要建立服務連線,您必須在項目設定中新增至端點建立者群組:專案設定>服務連線>安全性。 參與者預設會新增至此群組。

疑難排解案例

以下是建立服務連線時可能發生的一些問題:

許可權不足,無法完成作業

當系統嘗試代表您在 Microsoft Entra ID 中建立應用程式時,通常會發生這種情況。

這是許可權問題,可能是因為下列原因所造成:

使用者只有目錄中的來賓許可權

解決此問題的最佳方法,同時只授與使用者的最低額外許可權,是增加來賓用戶許可權,如下所示。

  1. 使用系統管理員帳戶登入 Azure 入口網站。 帳戶應該是 擁有者全域管理員用戶帳戶管理員

  2. 選取 左側導覽列中的 [Microsoft Entra ID ]。

  3. 請確定您正在編輯對應至使用者訂用帳戶的適當目錄。 如果沒有,請選取 [ 切換目錄 ],並視需要使用適當的認證登入。

  4. 從 [管理] 區段選取 [使用者]。

  5. 選取 [ 用戶設定]。

  6. 從 [外部使用者] 區段選取 [管理外部共同作業設定]。

  7. 將來賓 用戶權力限制[否] 選項。

或者,如果您準備為使用者提供額外的許可權(系統管理員層級),您可以將用戶設為全域管理員角色的成員。 若要這樣做,請遵循下列步驟:

警告

指派給全域管理員角色的使用者,可以讀取和修改 Microsoft Entra 組織中的每個系統管理設定。 建議的最佳做法是將此角色指派給組織中的少於五個人員。

  1. 使用系統管理員帳戶登入 Azure 入口網站。 帳戶應該是 擁有者全域管理員用戶帳戶管理員

  2. 從左瀏覽窗格選取 Microsoft Entra 識別碼

  3. 請確定您正在編輯對應至使用者訂用帳戶的適當目錄。 如果沒有,請選取 [ 切換目錄 ],並視需要使用適當的認證登入。

  4. 從 [管理] 區段選取 [使用者]。

  5. 使用搜尋方塊來搜尋您想要管理的使用者。

  6. 從 [管理] 區段選取 [目錄角色],然後將角色變更為全域管理員 完成時選取 [ 儲存 ]。

全域套用變更通常需要 15 到 20 分鐘的時間。 然後,用戶可以嘗試重新建立服務連線。

使用者未獲授權在目錄中新增應用程式

您必須具有許可權,才能在目錄中新增整合式應用程式。 目錄管理員有權變更此設定。

  1. 選取 左側瀏覽窗格中的 [Microsoft 項目識別符 ]。

  2. 請確定您正在編輯對應至使用者訂用帳戶的適當目錄。 如果沒有,請選取 [ 切換目錄 ],並視需要使用適當的認證登入。

  3. 選取 [ 使用者],然後選取 [ 用戶設定]。

  4. [應用程式註冊] 下,然後將 [用戶可以註冊應用程式] 選項變更為 [是]。

您也可以使用已在 Microsoft Entra ID 中具有必要許可權的現有使用者建立服務主體。 如需詳細資訊,請參閱 建立與現有服務主體 的 Azure Resource Manager 服務連線。

找不到存取令牌或找不到有效的重新整理令牌

您的工作階段過期時,通常會發生這些錯誤。 若要解決這些問題:

  1. 註銷 Azure DevOps。
  2. 開啟 InPrivate 或 incognito 瀏覽器視窗,並流覽至 Azure DevOps
  3. 使用適當的認證登入。
  4. 選取您的組織和專案。
  5. 建立服務連線

無法指派參與者角色

當您沒有 所選 Azure 訂用帳戶的寫入 許可權時,通常會發生此錯誤。

若要解決此問題,請要求訂用帳戶管理員 在 Microsoft Entra ID 中指派適當的角色

建立服務連線時未列出訂用帳戶

每個 Azure 訂用帳戶下拉功能表中最多會列出 50 個 Azure 訂用帳戶(計費、服務連線等)。 如果您要設定服務連線,而且您有超過 50 個 Azure 訂用帳戶,則不會列出部分訂用帳戶。 在此案例中,完成下列步驟:

  1. 在 Azure 訂用帳戶的 Microsoft Entra 執行個體中建立新的原生 Microsoft Entra 使用者。

  2. 設定 Microsoft Entra 使用者,使其具有適當權限而能夠設定計費或建立服務連線。 如需詳細資訊,請參閱新增能夠設定 Azure DevOps 計費的使用者

  3. 將 Microsoft Entra 使用者新增至具有專案關係人存取層級的 Azure DevOps 組織,然後將它新增至 Project Collection 管理員 istrators 群組(用於計費),或確保使用者在 Team Project 中有足夠的許可權來建立服務連線。

  4. 使用新的使用者認證登入 Azure DevOps,並設定計費。 您只會在清單中看到一個 Azure 訂用帳戶。

訂用帳戶清單中缺少某些訂用帳戶

您可以變更 支援的帳戶類型 設定,並定義誰可以使用您的應用程式,來修正此問題。 若要這樣,請執行以下步驟:

  1. 登入 Azure 入口網站。

  2. 如果您有多個租使用者的存取權,請使用 頂端功能表中的 [目錄 + 訂 用帳戶] 篩選來選取您要在其中註冊應用程式的租使用者。

    顯示 Azure 入口網站中目錄和訂用帳戶圖示的螢幕快照。

  3. 從左窗格中選取 [Microsoft Entra ID ]。

  4. 選取 應用程式註冊

  5. 從已註冊的應用程式清單中選取您的應用程式。

  6. 在 [驗證] 底下,選取 [支持的帳戶類型]。

  7. [支持的帳戶類型] 下,神秘 可以使用此應用程式或存取此 API?選取任何組織目錄中的 [帳戶]。

    顯示支援的帳戶類型的螢幕快照。

  8. 完成時選取 [ 儲存 ]。

服務主體的令牌已過期

通常由自動建立的服務主體所引發的問題,就是服務主體的令牌過期,而且需要更新。 不過,如果您有重新整理令牌的問題,請參閱 找不到有效的重新整理令牌。

若要更新自動建立之服務主體的存取令牌:

  1. 移至 [項目設定>服務連線],然後選取您想要修改的服務連線。

  2. 選取 右上角的 [編輯 ],然後選取 [ 驗證]。

  3. 選取 [儲存]。

服務主體的令牌現在已更新三個月。

注意

即使服務主體的令牌尚未過期,此作業仍可供使用。

無法使用服務主體用戶端識別碼取得 JWT

當您嘗試驗證具有過期秘密的服務連線時,就會發生此問題。

若要解決此問題:

  1. 移至 [項目設定>服務連線],然後選取您想要修改的服務連線。

  2. 選取 右上角的 [編輯 ],然後對您的服務連線進行任何變更。 最簡單的建議變更是新增描述。

  3. 選取儲存以儲存服務連線。

    注意

    選取 [儲存]。 請勿嘗試在此步驟中驗證服務連線。

  4. 結束服務連線編輯視窗,然後重新整理服務連線頁面。

  5. 選取 右上角的 [編輯 ],然後選取 [ 驗證]。

  6. 選取 [ 儲存 ] 以儲存服務連線。

Azure 訂用帳戶不會從先前的工作輸出傳遞

當您動態設定發行管線的 Azure 訂用帳戶,並想要取用先前工作的輸出變數時,可能會遇到此問題。

若要解決此問題,請確定值是在管線的 variables 區段中定義。 然後,您可以在管線的工作之間傳遞此變數。

支援哪些驗證機制? 受控識別如何運作?

Azure Resource Manager 服務連線可以使用服務主體驗證 (SPA) 或受控識別驗證來連線到 Azure 訂用帳戶。 Azure 資源受控識別會在 Microsoft Entra ID 中為 Azure 服務提供自動受控識別。 您可以使用此身分識別向任何支援 Microsoft Entra 驗證的服務進行驗證,而不需在程式代碼或服務連線中保存認證。

若要瞭解虛擬機的受控識別,請參閱 指派角色

注意

Microsoft 裝載的代理程式不支援受控識別。 在此案例中,您必須 在 Azure VM 上設定自我裝載代理程式 ,併為該 VM 設定受控識別。