Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022
本文提供常見的疑難排解案例,以協助您解決建立 Azure Resource Manager (ARM) 服務連線時可能遇到的問題。 請參閱 管理服務連線 ,以瞭解如何建立、編輯及保護服務連線。 請參閱 針對 Azure Resource Manager 工作負載身分識別服務連線進行疑難排解, 以瞭解如何修正工作負載身分識別相關問題。
本文會以可能重疊的方式使用術語 “租用戶” 和 “目錄”。 租戶是 Microsoft Entra ID 的專用獨立隔離實例,您的組織會接收此實例,並管理雲端服務中的所有身分識別和存取控制。 目錄是該租用戶內的容器,其中包含用於管理資源存取的使用者、群組和應用程式等物件。
小提示
您可以向 Copilot 尋求疑難排解錯誤訊息的協助。 若要深入瞭解,請參閱 使用 AI 針對 Azure DevOps 服務連線錯誤進行疑難排解。
當您建立 Azure Resource Manager 服務連線時,會發生什麼事
您有多個驗證選項,可 使用 Azure Resource Manager 服務連線到 Azure。 建議您使用工作負載身分識別同盟,搭配應用程式註冊或受控識別。
當服務連線建立程式成功時,Azure DevOps 會自動在您的 Microsoft Entra 租使用者中執行這些步驟。 如果您在此過程中遇到錯誤,請參閱 下面的故障排除場景。
當您儲存新的 Azure Resource Manager 服務連線時,Azure DevOps 會採取下列動作:
- 連線到選定訂閱的 Microsoft Entra 租用戶。
- 代表使用者在 Entra ID 中建立應用程式。
- 將應用程式指派為所選訂用帳戶的參與者。
- 使用此應用程式的詳細資料建立 Azure Resource Manager 服務連線。
注意
若要建立服務連線,您必須在項目設定中為端點建立者群組指派建立者或系統管理員角色:[項目設定]>[服務連線]>[更多動作]>[安全性]。 項目參與者預設會新增至此群組。
使用者只有目錄中的來賓許可權
當 Azure DevOps 嘗試在 Microsoft Entra ID 中建立應用程式並指派許可權時,會在自動服務連線建立程式期間發生此錯誤 ( 建立 Azure Resource Manager 服務連線時會發生什麼情況) 中的步驟 2-3。 當 Microsoft Entra ID 目錄中只有來賓許可權的使用者嘗試在 Azure DevOps 中建立 Azure Resource Manager 服務連線,但許可權不足時,就會發生這種情況。
若要解決此問題:
選取 左側導覽列中Microsoft [項目標識符 ]。
請確定您正在編輯與使用者訂用帳戶相對應的適當目錄。 如果沒有,請選取 [切換目錄] ,並視需要使用適當的認證登入。
從 [管理] 區段選取 [使用者]。
選取 [使用者設定]。
從 [外部使用者] 區段選取 [管理外部共同作業設定]。
將來賓 用戶權力限制 為 [否] 選項。
或者,如果您已準備好授與使用者管理員層級權限,您可以將使用者設為管理員角色的成員。 完成下列步驟:
警告
將使用者指派給全域管理員角色,可讓他們讀取和修改您 Microsoft Entra 組織中的每個系統管理設定。 最佳做法是將此角色指派給組織中少於五個人。
從左瀏覽窗格選取 Microsoft Entra 識別碼。
請確定您正在編輯與使用者訂用帳戶相對應的適當目錄。 如果沒有,請選取 [切換目錄] ,並視需要使用適當的認證登入。
從 [管理] 區段選取 [使用者]。
使用搜尋框尋找您要管理的使用者。
從 [管理] 區段選取 [目錄角色],然後變更角色。 當完成時,選擇儲存。
全域套用變更通常需要 15 到 20 分鐘的時間。 然後,使用者可以嘗試重新建立服務連線。
使用者未獲授權在目錄中新增應用程式
當 Azure DevOps 嘗試代表您在 Microsoft Entra ID 中建立應用程式時,會在自動服務連線建立程式期間發生此錯誤 ( 建立 Azure Resource Manager 服務連線時會發生什麼事) 中的步驟 2。 您沒有在目錄中新增整合應用程式的權限。 目錄管理員有權變更此設定。
若要解決此問題:
選取 左側瀏覽窗格中Microsoft [項目標識符 ]。
請確定您正在編輯與使用者訂用帳戶相對應的適當目錄。 如果沒有,請選取 [切換目錄] ,並視需要使用適當的認證登入。
選取 [使用者],然後選取 [ 使用者設定]。
在 應用程式註冊下,將 使用者可以註冊應用程式 選項變更為 是。
您也可以使用已在 Entra ID 中擁有必要許可權的現有使用者來建立服務主體。 如需更多資訊,請參閱以現有服務主體建立 Azure Resource Manager 服務連線。
找不到存取令牌或找不到有效的重新整理令牌
這些錯誤通常發生在工作階段到期時。
若要解決這些問題:
註銷 Azure DevOps。
開啟 InPrivate 或無記號瀏覽器視窗,然後移至 Azure DevOps。
使用適當的認證登入。
選取您的組織和專案。
請嘗試重新建立服務連線。 如需詳細步驟,請參閱 管理服務連線。
嘗試編輯或建立新的服務連線時,您似乎沒有作用中的 Azure 訂用帳戶
當您是多個 Entra ID 租用戶的一部分時,通常會發生此錯誤。
若要解決此問題:
移至 VS 設定檔。
檢查您是否有多個租戶。
選擇每個租戶,然後再次驗證。
嘗試建立服務連接,然後檢查訂閱是否已載入。
無法指派參與者角色
當 Azure DevOps 嘗試將應用程式指派為訂用帳戶的參與者時,會在自動服務連線建立程式期間發生此錯誤 ( 建立 Azure Resource Manager 服務連線時會發生什麼事) 中的步驟 3。 當您沒有所選 Azure 訂用帳戶的 寫入 許可權時,通常會發生此錯誤。
若要解決此問題,請要求訂用帳戶管理員 在 entra 標識碼Microsoft指派適當的角色 。
建立服務連線時未列出訂用帳戶
造成此問題的可能原因有多種。
超過各種 Azure 訂用帳戶下拉式功能表中列出的最多 50 個 Azure 訂用帳戶 (計費、服務連線等等):如果您要設定服務連線,且您有超過 50 個 Azure 訂用帳戶,則不會列出某些訂用帳戶。 在此案例中,完成下列步驟:
在 Azure 訂用帳戶的 Microsoft Entra 執行個體中建立新的原生 Microsoft Entra 使用者。
設定 Microsoft Entra 使用者,使其具有適當權限而能夠設定計費或建立服務連線。 如需詳細資訊,請參閱新增能夠設定 Azure DevOps 計費的使用者。
將 Microsoft Entra 使用者新增至具有 專案關係人 存取層級的 Azure DevOps 組織,然後將它新增至 Project 集合系統管理員 群組(用於計費),或確定使用者在 Team Project 中有足夠的許可權可建立服務連線。
使用新的使用者認證登入 Azure DevOps,並設定計費。 您只會在清單中看到一個 Azure 訂用帳戶。
舊用戶令牌快取在 Azure DevOps Services 中: 如果您在建立 Azure Resource Manager (ARM) 服務連線時看不到 Azure 訂閱帳戶,可能是因為 Azure DevOps Services 中快取了舊用戶令牌。 此案例並不明顯,因為 Azure 訂用帳戶的清單畫面不會顯示任何錯誤或警告訊息,指出使用者令牌已過期。 若要解決此問題,請執行下列步驟,在 Azure DevOps Services 中手動更新快取的使用者令牌:
- 註銷 Azure DevOps Services 並重新登入。 此動作可以重新整理使用者令牌。
- 清除瀏覽器快取和 Cookie,以確保移除任何舊的令牌。
- 從 Azure DevOps 入口網站移至服務連線,然後重新授權連線至 Azure。 此步驟會提示 Azure DevOps 使用新的令牌。
支援帳戶類型設定不正確: 變更 支援的帳戶類型 設定,並定義誰可以使用您的應用程式,以修正此問題。 執行下列步驟:
登入 Azure 入口網站。
如果您有多個租使用者的存取權,請使用 頂端功能表中的 [目錄 + 訂 用帳戶] 篩選來選取您要在其中註冊應用程式的租使用者。
從左窗格中選取 [Microsoft項目標識符 ]。
選取 應用程式註冊。
從已註冊的應用程式清單中選取您的應用程式。
在 [驗證] 底下,選取 [支持的帳戶類型]。
在 [支持的帳戶類型] 下,誰可以使用此應用程式或存取此 API?選取任何組織目錄中的 [帳戶]。
當完成時,選擇儲存。
服務主體或密鑰已過期
Azure DevOps 自動建立的服務主體或秘密會過期並需要更新。 如果您在重新整理權杖時遇到問題,請參閱無法取得存取權杖或找不到有效的重新整理權杖。 若要避免需要更新秘密,請 搭配 Azure Resource Manager 使用工作負載身分識別同盟。
如果您的權杖過期,您可能會看到下列其中一個錯誤訊息:
AADSTS7000215: Invalid client secret is providedAADSTS7000222: The provided client secret keys for app '***' are expiredInvalid client id or client secret
若要刷新自動創建的服務主體或機密的存取令牌:
移至 [專案設定>] 服務連線,然後選取您要重新整理的服務連線。
選取 [輪替密碼]。
服務主體或秘密的令牌現在會再更新三個月。
注意
即便服務主體的權杖尚未過期,此操作仍然可用。 請確定執行作業的使用者對訂用帳戶和 Microsoft Entra ID 具有適當的許可權,因為它會更新為服務主體註冊之應用程式的秘密。 如需詳細資訊,請參閱使用 秘密建立應用程式註冊 和 建立 Resource Manager 服務連線時會發生什麼事?
無法使用服務主體用戶端識別碼取得 JWT
當您嘗試儲存一個包含已過期密鑰或在 Microsoft Entra ID 層級具有其他問題的服務連線時,就會發生此問題。
若要解決此問題:
移至 [項目設定>服務連線],然後選取您想要修改的服務連線。
選取 右上角的 [編輯 ],然後對您的服務連線進行任何變更。 最簡單的建議變更是新增描述。
選取 [儲存] 以儲存服務連線。
注意
如果您收到類似 Failed to obtain the Json Web Token(JWT) using service principal client ID. Exception message: AADSTS7000112: Application is disabled. 的錯誤,請與您的 Microsoft Entra ID 小組合作,確認服務主體所連結的企業應用程式中的「已啟用使用者登入」選項沒有被停用。
Azure 訂用帳戶不會從先前的工作輸出傳遞
當您動態設定發行管線的 Azure 訂用帳戶,並想要取用先前工作的輸出變數時,可能會遇到此問題。
若要解決此問題,請確定值是在管線的 variables 區段中定義。 然後,您可以在管線的工作之間傳遞此變數。
支援哪些驗證機制? 受控識別如何運作?
Azure Resource Manager 服務連線可以使用服務主體驗證 (SPA) 或受控識別驗證來連線到 Azure 訂用帳戶。
Azure Resource Manager 服務連線可以藉由使用以下方式連線到 Azure 訂用帳戶、管理群組或機器學習工作區:
- 應用程式註冊 (建議):使用工作負載身分識別聯合或密碼來驗證連線。
- 受控識別:適用於 Azure 資源的受控識別為 Azure 服務在 Microsoft Entra ID 中提供自動管理的識別。 您也可以使用由代理指派的受控識別。
當您設定使用受控識別作為驗證方法的服務連線時,程式不會建立新的受控識別。 它只是建立服務連線。 若要讓此驗證方法正常運作,必須符合特定條件。 具體而言,由於受控識別是選擇的驗證方法,因此您使用的虛擬機器應該具有系統指派的身分識別。 另外,這台虛擬機必須作為在管線中的自托管代理,使工作流程能夠完整執行,讓管線能夠透過服務連線部署變更。 VM 上的系統指派身分識別確認該 VM 正在擔任管線代理程式,以啟用驗證。 此設定可讓您利用現有的受控識別。
若要瞭解虛擬機的受控識別,請參閱 指派角色。
注意
Microsoft 裝載的代理程式不支援受控識別。 在此案例中,您必須 在 Azure VM 上設定自我裝載代理程式 ,併為該 VM 設定受控識別。
使用 AI 針對 Azure DevOps 服務連線錯誤進行疑難排解
Copilot Chat 的此範例提示可協助 Copilot 針對您的錯誤碼和訊息進行疑難排解。 將此提示複製並貼到 Copilot Chat 中,將佔位符替換為您的特定錯誤訊息。
I'm getting this Azure DevOps service connection error: [PASTE YOUR ERROR MESSAGE HERE]
Can you help me troubleshoot this issue? Please provide step-by-step instructions to:
1. Identify the root cause
2. Fix the configuration in Azure or Entra ID
3. Verify the solution works
Context: This is for an Azure Resource Manager service connection in Azure DevOps.