針對 Azure Resource Manager 服務連線進行疑難排解
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
本文提供常見的疑難解答案例,可協助您解決建立 Azure Resource Manager 服務連線時可能會遇到的問題。 請參閱 管理服務連線 ,以瞭解如何建立、編輯及保護服務連線。
當您建立 Azure Resource Manager 服務連線時,會發生什麼事
如果您沒有服務連線,您可以建立服務連線,如下所示:
從專案內選取 [項目設定],然後選取 [ 服務連線]。
選取 [ 新增服務連線 ] 以新增服務連線,然後選取 [Azure Resource Manager]。 完成後,請選取 [下一步]。
選取 [應用程式註冊 (自動)] 作為 [身分識別類型],然後選取 [工作負載身分識別同盟] 作為認證。
選取 [ 訂用帳戶],然後從下拉式清單中選取您的訂用帳戶。 填寫表單的其餘部分,然後在完成時選取 [ 儲存 ]。
當您儲存新的 Azure Resource Manager 服務連線時,Azure DevOps 會執行下列動作:
- 連接到所選取訂用帳戶的 Microsoft Entra 租使用者。
- 代表使用者在 Microsoft Entra ID 中建立應用程式。
- 將應用程式指派為所選訂用帳戶的參與者。
- 使用此應用程式的詳細資料建立 Azure Resource Manager 服務連線。
注意
若要建立服務連線,您必須在項目設定中為端點建立者群組指派建立者或系統管理員角色:[項目設定]>[服務連線]>[更多動作]>[安全性]。 項目參與者預設會新增至此群組。
疑難排解案例
當您建立服務連線時,可能會發生下列問題:
- 使用者只有目錄中的來賓許可權
- 使用者未獲授權在目錄中新增應用程式
- 找不到存取令牌或找不到有效的重新整理令牌
- 無法指派參與者角色
- 建立服務連線時未列出訂用帳戶
- 訂用帳戶清單中缺少某些訂用帳戶
- 服務主體的令牌已過期
- 無法使用服務主體用戶端識別碼 取得 JSON Web 令牌 (JWT)
- Azure 訂用帳戶不會從先前的工作輸出傳遞
- 支援哪些驗證機制? 受控識別如何運作?
使用者只有目錄中的來賓許可權
選取 左側導覽列中Microsoft [項目標識符 ]。
請確定您正在編輯對應至使用者訂用帳戶的適當目錄。 如果沒有,請選取 [ 切換目錄 ],並視需要使用適當的認證登入。
從 [管理] 區段選取 [使用者]。
選取 [使用者設定]。
從 [外部使用者] 區段選取 [管理外部共同作業設定]。
將來賓 用戶權力限制 為 [否] 選項。
或者,如果您準備好授與用戶系統管理員層級的許可權,您可以將用戶設為系統管理員角色的成員。 執行下列步驟:
警告
將使用者指派給全域管理員角色,可讓他們讀取和修改您 Microsoft Entra 組織中的每個系統管理設定。 最佳做法是將此角色指派給組織中少於五個人。
從左瀏覽窗格選取 Microsoft Entra 識別碼。
請確定您正在編輯對應至使用者訂用帳戶的適當目錄。 如果沒有,請選取 [ 切換目錄 ],並視需要使用適當的認證登入。
從 [管理] 區段選取 [使用者]。
使用搜尋方塊來搜尋您想要管理的使用者。
從 [管理] 區段選取 [目錄角色],然後變更角色。 當完成時,選擇儲存。
全域套用變更通常需要 15 到 20 分鐘的時間。 然後,用戶可以嘗試重新建立服務連線。
使用者未獲授權在目錄中新增應用程式
您必須具有許可權,才能在目錄中新增整合式應用程式。 目錄管理員有權變更此設定。
選取 左側瀏覽窗格中Microsoft [項目標識符 ]。
請確定您正在編輯對應至使用者訂用帳戶的適當目錄。 如果沒有,請選取 [ 切換目錄 ],並視需要使用適當的認證登入。
選取 [ 使用者],然後選取 [ 用戶設定]。
在 [應用程式註冊] 下,然後將 [用戶可以註冊應用程式] 選項變更為 [是]。
您也可以使用現有使用者建立服務主體,而該使用者已在 Microsoft Entra ID 中具有必要許可權。 如需更多資訊,請參閱以現有服務主體建立 Azure Resource Manager 服務連線。
找不到存取令牌或找不到有效的重新整理令牌
這些錯誤通常會在會話過期時發生。 若要解決這些問題:
- 註銷 Azure DevOps。
- 開啟 InPrivate 或 incognito 瀏覽器視窗,並流覽至 Azure DevOps。
- 使用適當的認證登入。
- 選取您的組織和專案。
- 建立服務連線。
無法指派參與者角色
當您沒有 所選 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 Services 中快取的舊使用者令牌: 如果您在建立 Azure Resource Manager (ARM) 服務連線時未列出您的 Azure 訂用帳戶,可能是因為 Azure DevOps Services 中快取的舊使用者令牌。 此案例並不明顯,因為 Azure 訂用帳戶的清單畫面不會顯示任何錯誤或警告訊息,指出使用者令牌已過期。 若要解決此問題,請執行下列步驟,在 Azure DevOps Services 中手動更新快取的使用者令牌:
- 註銷 Azure DevOps Services 並重新登入。 此動作可以重新整理使用者令牌。
- 清除瀏覽器快取和 Cookie,以確保移除任何舊的令牌。
- 從 Azure DevOps 入口網站移至服務連線,然後重新授權連線至 Azure。 此步驟會提示 Azure DevOps 使用新的令牌。
服務主體的令牌已過期
通常自動建立的服務主體或密鑰會引發的問題,就是令牌到期且需要重新設定。 如果您在重新整理權杖時發生問題,請參閱 無法取得存取權杖或找不到有效的重新整理權杖。
如果您的令牌過期,您可能會看到其中一個錯誤訊息:
AADSTS7000215: Invalid client secret is provided
AADSTS7000222: The provided client secret keys for app '***' are expired
Invalid client id or client secret
若要刷新自動創建的服務主體或機密的存取令牌:
移至 [項目設定>服務連線],然後選取您想要修改的服務連線。
選取 右上角的 [編輯 ],然後選取 [ 驗證]。
選取儲存。
服務主體或秘密的令牌現在會再更新三個月。
注意
即使服務主體的令牌尚未過期,此作業仍可供使用。 請確定執行作業的使用者具有訂用帳戶的適當許可權,並Microsoft Entra ID,因為它會更新為服務主體註冊的應用程式密碼。 如需詳細資訊,請參閱 使用自動化安全性 建立 Azure Resource Manager 服務連線和 建立 Resource Manager 服務連線時會發生什麼事?
無法使用服務主體用戶端識別碼取得 JWT
當您嘗試驗證具有過期秘密的服務連線時,就會發生此問題。
若要解決此問題:
移至 [項目設定>服務連線],然後選取您想要修改的服務連線。
選取 右上角的 [編輯 ],然後對您的服務連線進行任何變更。 最簡單的建議變更是新增描述。
選取 [儲存] 以儲存服務連線。
注意
選取儲存。 請勿嘗試在此步驟中驗證服務連線。
結束服務連線編輯視窗,然後重新整理服務連線頁面。
選取 右上角的 [編輯 ],然後選取 [ 驗證]。
選取 [ 儲存 ] 以儲存服務連線。
Azure 訂用帳戶不會從先前的工作輸出傳遞
當您動態設定發行管線的 Azure 訂用帳戶,並想要取用先前工作的輸出變數時,可能會遇到此問題。
若要解決此問題,請確定值是在管線的 variables 區段中定義。 然後,您可以在管線的工作之間傳遞此變數。
支援哪些驗證機制? 受控識別如何運作?
Azure Resource Manager 服務連線可以使用服務主體驗證 (SPA) 或受控識別驗證來連線到 Azure 訂用帳戶。
Azure Resource Manager 服務連線可以連線到 Azure 訂用帳戶、管理群組或機器學習工作區,使用:
- 應用程式註冊(建議):您可以使用工作負載身分識別聯盟或秘密金鑰來驗證連線。
- 受控識別:適用於 Azure 資源的受控識別為 Azure 服務在 Microsoft Entra ID 中提供自動管理的識別。 您也可以使用由代理指派的受控識別。
若要瞭解虛擬機的受控識別,請參閱 指派角色。
注意
Microsoft裝載的代理程式不支援受控識別。 在此案例中,您必須 在 Azure VM 上設定自我裝載代理程式 ,併為該 VM 設定受控識別。