共用方式為


使用個人存取權杖

Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022

個人存取權杖 (PAT) 可作為向 Azure DevOps 進行驗證的替代密碼。 此 PAT 會識別您,並判定您的可存取性和存取範圍。 以相同的謹慎態度對待 PAT,如同對待密碼。

當您使用 Microsoft 工具時,系統會辨識並支援您的 Microsoft 帳戶或 Microsoft Entra ID。 如果您使用不支援Microsoft Entra 帳戶的工具,或不想共用主要認證,請考慮使用 PAT 作為替代驗證方法。 建議您盡可能使用 Microsoft Entra 權杖 ,而不是 PAT。

重要

我們建議使用更安全的 Microsoft Entra 令牌,而不是高風險的 個人存取令牌。 深入了解我們減少 PAT 使用量的努力。 檢 閱我們的驗證指引 ,為您的需求選擇正確的驗證機制。

必要條件

類別 要求
權限 存取及修改用於管理 PAT 之使用者設定的權限。
- 前往您的設定檔,然後選取 [使用者設定>] [個人存取權杖]。 如果您可以在這裡看到及管理您的 PAT,那麼您就擁有必要的權限。
- 移至您的項目,然後選取 [項目設定],>[許可權]。 在清單中尋找您的使用者帳戶,並檢查指派給您的權限。 尋找與管理令牌或用戶設定相關的許可權。
- 如果您的 組織已設定原則,系統管理員可能需要授與您特定許可權,或將您新增至允許清單以建立和管理 PAT。
- PAT 會連結到生成該令牌的用戶帳戶。 根據 PAT 所執行的工作,您自己可能需要更多的權限。
存取層級 至少基本訪問權限。
任務 僅在必要時使用 PAT,並始終定期輪換它們。 請參閱使用 PAT 的最佳做法一節。

建立 PAT

  1. 登入您的組織 (https://dev.azure.com/{Your_Organization})。

  2. 從您的首頁開啟使用者設定 ,然後選取 [個人存取權杖]。

    螢幕擷取畫面顯示選取個人存取權杖。

  3. 選取 + 新增代幣

    顯示選取 [新增權杖] 的螢幕擷取畫面。

  4. 為您的令牌命名、選取您想要使用令牌的組織,然後將令牌設定為在設定天數之後自動到期。

    顯示基本權杖資訊輸入的螢幕擷取畫面。

  5. 選擇此令牌的範圍以授權用於您的特定工作

    例如,若要為組建和發行代理程式建立令牌以向 Azure DevOps 進行驗證,請將令牌的範圍設定為代理程式集區(讀取及管理)。 若要讀取稽核記錄事件及管理或刪除數據流,請選取 [讀取稽核記錄],然後選取 [ 建立]。

    顯示 PAT 選取範圍的螢幕擷取畫面。

    您的系統管理員可能會 限制您建立完整範圍的 PAT,或將您限制為僅限封裝範圍的 PAT。 如果您需要更多範圍的存取權,請連絡系統管理員以取得允許清單。 例如, vso.governance某些範圍如果不供廣泛公開使用,則可能無法在使用者介面 (UI) 中使用。

  6. 完成後,複製令牌並將其儲存在安全位置。 針對您的安全性,它不會再次顯示。

    螢幕擷取畫面,顯示如何將權杖複製到剪貼簿。

您可以在 Azure DevOps 中驗證所需的任何使用者認證位置使用 PAT。 記:

  • 對待 PAT 時要像密碼一樣謹慎,並對其保密。 不要共用 PAT。
  • 對於受 Microsoft Entra ID 支援的組織,您必須在 90 天內使用新的 PAT 登入,否則會變成非作用中。 如需詳細資訊,請參閱 條件式存取的使用者登入頻率

通知

在 PAT 的生命週期期間,使用者會收到兩個通知:一個是建立 PAT 時,另一個是到期前七天。

建立 PAT 之後,您可能會收到類似下列範例的通知。 此通知可確認您的 PAT 已成功新增至您的組織。

顯示 PAT 建立通知的螢幕擷取畫面。

到期通知電子郵件會在到期前三天傳送。 如果您的系統管理員移除了在 組織中建立 PAT 的能力,電子郵件表示您無法再重新產生 PAT。 請連絡您的 專案集合系統管理員 ,以包含在允許清單中,以在該組織中繼續建立 PAT 許可權。

如需詳細資訊,請參閱 設定 SMTP 伺服器並自定義警示和意見反應要求的電子郵件。

未預期的通知

如果您收到非預期的 PAT 通知,這可能表示系統管理員或工具為您建立 PAT。 以下是一些範例:

  • 當您透過 git.exe連線到 Azure DevOps Git 存放庫時,會建立名為的 git: https://dev.azure.com/{Your_Organization} on YourMachine 權杖。
  • 當您或系統管理員設定 Azure App Service Web 應用程式部署時,會建立名為的 Service Hooks: Azure App Service: Deploy web app 權杖。
  • 當您或系統管理員將 Web 負載測試設定為管線的一部分時,會建立名為的 WebAppLoadTestCDIntToken 權杖。
  • 設定 Microsoft Teams 整合傳訊延伸模組時,會建立名為 Microsoft Teams Integration 的權杖。

如果您認為情況嚴重:

  • 如果您懷疑 PAT 存在錯誤,請撤銷 PAT (並變更密碼)。
  • 如果您是 Microsoft Entra 使用者,請洽詢系統管理員,以查看未知的來源或位置是否存取您的組織。
  • 檢閱意外 PAT 簽入至公用 GitHub 存放庫的常見問題。

使用 PAT

您的 PAT 可作為您的數位身分識別,就像密碼一樣。 您可以使用 PAT 作為執行一次性請求或在本機建立應用程式原型的快速方法。 在程式碼中使用 PAT 來驗證 REST API 要求,並在要求的授權標頭中包含 PAT 來自動化工作流程。

應用程式程式碼運作之後,請切換至 Microsoft Entra OAuth 以取得應用程式使用者的權杖,或使用服務主體或受控識別來取得權杖作為應用程式。 我們不建議您長期繼續使用 PAT 執行應用程式或腳本。 您可以在使用 PAT 的任何位置使用 Microsoft Entra 權杖。

請考慮透過 Azure CLI 取得臨機操作要求的 Microsoft Entra 權杖

若要透過 HTTP 標頭提供 PAT,您必須先將它 Base64 轉換成字串。 然後,可以以下列格式將其作為 HTTP 標頭提供:


Authorization: Basic BASE64_USERNAME_PAT_STRING

修改 PAT

請執行下列步驟:

  • 重新生成 PAT 以創建新的令牌,從而使先前的令牌失效。
  • 延長 PAT 以增加其有效期間。
  • 變更 PAT 的範圍以變更其許可權。
  1. 從您的首頁開啟使用者設定 ,然後選取 [個人存取權杖]。

  2. 選取您要修改的權杖,然後選取 [編輯]。

    螢幕擷取畫面,顯示醒目提示的 [編輯] 按鈕來修改 PAT。

  3. 編輯令牌名稱、令牌到期或與令牌相關聯的存取範圍,然後選取 [ 儲存]。

    顯示修改後的 PAT 的螢幕擷取畫面。

撤銷 PAT

您可以隨時撤銷 PAT,原因如下:

  • 安全性漏洞:如果您懷疑 PAT 遭到入侵、外洩或在日誌或公用存放庫中暴露,請立即撤銷 PAT。
  • 不再需要:當為其建立 PAT 的專案、服務或整合完成或停止時,撤銷 PAT。
  • 原則合規性:撤銷 PAT 以強制執行安全策略、合規性需求或組織令牌輪替排程。
  • 用戶變更:當小組成員離開組織或變更角色且不再需要存取權時,撤銷 PAT。
  • 範圍縮小:當您需要限制其存取功能時,撤銷並重新建立具有減少許可權的 PAT。
  • 定期維護:撤銷 PAT 作為例行安全性衛生和令牌生命週期管理的一部分。

若要撤銷 PAT,請遵循下列步驟:

  1. 在您的首頁上,開啟使用者設定,然後選取 [個人存取權杖]。

  2. [安全性] 底下,選取 [個人存取權杖]。 選取您要撤銷存取權的令牌,然後選取 [ 撤銷]。

    螢幕擷取畫面顯示選取撤銷單一權杖或所有權杖。

  3. [確認 ] 對話方塊中,選取 [ 撤銷]。

    螢幕擷取畫面,顯示用來撤銷 PAT 的 [確認] 對話方塊。

PAT 生命週期管理 API

當透過 UI 維護大量權杖不可持續時, PAT 生命週期管理 API 可能很有用。 以程序設計方式管理 PAT 輪替也可讓您定期輪替 PAT,並縮短其預設生命週期。 您可以使用 Microsoft Entra 租使用者和 Azure DevOps 組織來設定 範例 Python 應用程式

這些 API 需要注意的一些事項:

  • 需要 Microsoft Entra 存取權杖才能存取此 API。 建議您在鑄造新權杖時使用更強的驗證形式。
  • 只有使用「代表使用者」流程的使用者或應用程式才能產生 PAT。 使用「代表應用程式」流程或未發行 Microsoft Entra 存取權杖的驗證流程的應用程式無法與此 API 搭配使用。 因此, 服務主體或受控識別 無法建立或管理 PAT。
  • 先前 PAT 生命週期管理 API 僅 user_impersonation 支援範圍,但現在 vso.pats 可供使用,而且是建議與這些 API 搭配使用的範圍。 縮小範圍使用之前依賴 user_impersonation 呼叫這些 API 的所有應用程式。

格式的變更

自 2024 年 7 月起,我們已更新 PAT 字串的格式,以改善我們洩露的 PAT 偵測工具和合作夥伴供應專案中的秘密偵測。 這個新的 PAT 格式包含更多可識別的位,以提高這些偵測工具中的誤判偵測準確性,並更快減少已偵測洩漏的影響。

  • 新代幣現在有 84 個字元長,其中 52 個字元是隨機數據,這提高了整體熵。 代幣現在更能抵抗暴力攻擊。
  • 由我們的服務簽發的令牌包含在第76至80位置的固定AZDO簽章。

如果您使用在該數據之前發出的 PAT,請重新產生您的 PAT。 如果您與 PAT 整合並內建 PAT 驗證,請更新驗證程式代碼以容納新的和現有的令牌長度。

警告

這兩種格式在可預見的未來仍然有效。 隨著新格式的採用增加,我們可能會淘汰較舊的 52 個字元的 PAT。

使用 PAT 的最佳做法

考慮替代方案

建立 PAT

  • 請勿將個人資料放在 PAT 名稱中。 請勿將 PAT 名稱重新命名為包含部分或所有實際 PAT 令牌。
  • 除非所有組織都有必要,否則請避免建立全域 PAT。
  • 在每個流程或使用者情境中使用不同的 token。
  • 只選取每個 PAT 所需的最小範圍。 授予特定任務所需的最低權限。 針對不同的工作流程建立具有有限範圍的個別 PAT,而不是使用單一的廣泛範圍權杖。 如果您的 PAT 需要只讀許可權,除非必要,否則請勿提供寫入許可權。
  • 保持 PAT 壽命短。 (每週一次是理想的,越短越好。

管理 PAT

  • 不要共用您的 PAT!
  • 將您的 PAT 儲存在安全的金鑰管理解決方案中,例如 Azure 金鑰保存庫
  • 透過 UI 或使用 PAT 生命週期管理 API 定期輪替或重新產生 PAT。
  • 當不再需要 PAT 時撤銷它們。
  • 輪換您的 PAT 以使用 新的 PAT 格式 ,以便我們的第一方工具更好地檢測和撤銷洩露的秘密。

適用於系統管理員

常見問題集

Q. 為什麼我無法編輯或重新產生範圍為單一組織的 PAT?

A。 登入 PAT 範圍所在的組織。 當您登入相同 Microsoft Entra ID 中的任何組織時,您可以變更 [ 存取範圍 ] 篩選條件,以檢視您的 PAT。 當您登入特定組織時,您只能編輯組織範圍的權杖。

Q. 如果停用使用者帳戶,PAT 會發生什麼事?

A。 從 Azure DevOps 移除使用者時,PAT 會在一小時內失效。 如果您的組織已連線到 Microsoft Entra ID,則 PAT 也會在 Microsoft Entra ID 中失效,因為它屬於使用者。 建議您將 PAT 輪替到另一個使用者或服務帳戶,以保持服務執行。

Q. 我可以搭配所有 Azure DevOps REST API 使用 PAT 嗎?

A。 否。 您可以搭配大部分的 Azure DevOps REST API 使用 PAT,但 組織和配置檔 以及 PAT 管理生命週期 API 僅支援 Microsoft Entra 權杖

Q. 如果我不小心將 PAT 簽入 GitHub 上的公用存放庫,會發生什麼事?

A。 Azure DevOps 會掃描簽入至 GitHub 上公用存放庫的 PAT。 當我們找到流失的令牌時,我們會立即傳送詳細的電子郵件通知給令牌擁有者,並在 Azure DevOps 組織的 稽核記錄中記錄事件。 我們鼓勵受影響的使用者撤銷洩露的令牌,並將它取代為新的令牌,以減輕問題

除非您停用了自動撤銷洩露的個人存取令牌原則,否則我們會立即撤銷洩露的個人存取令牌。 如需詳細資訊,請參閱 自動撤銷外洩的 PAT

Q. 我可以使用個人存取權杖作為 API 金鑰,使用 dotnet/nuget.exe 命令列將 NuGet 套件發佈至 Azure Artifacts 摘要嗎?

A。 否。 Azure Artifacts 不支援將 PAT 傳遞為 API 金鑰。 當您使用本機開發環境時,建議您安裝 Azure Artifacts 認證提供者 ,以向 Azure Artifacts 進行驗證。 如需詳細資訊,請參閱下列範例: dotnetNuGet.exe。 如果您想要使用 Azure Pipelines 發佈套件,請使用 NuGet 驗證 工作來驗證您的摘要。 如需詳細資訊,請參閱 使用 Azure Pipelines 發佈 NuGet 套件 (YAML/傳統) 中的範例。

Q. 為什麼我的 PAT 停止工作?

A。 PAT 驗證需要您使用完整驗證流程定期登入 Azure DevOps。 每 30 天登入一次就足以供許多使用者使用,但視您的 Microsoft Entra 設定而定,您可能需要更頻繁地登入。 如果您的 PAT 停止運作,請先嘗試登入您的組織,並完成完整的驗證提示。 如果您的 PAT 仍然無法運作,請檢查它是否已過期。

啟用 IIS 基本身份驗證會導致 Azure DevOps Server 的 PAT 無效。 建議您一律關閉 IIS 基本驗證

警告

如果您使用 Git 搭配 IIS 基本身份驗證,Git 會中斷,因為它需要 PAT 來進行用戶驗證。 您可以將額外的標頭新增至 Git 要求,使其與 IIS 基本身份驗證搭配使用,但我們不建議執行此動作。 額外的標頭必須用於所有 Azure DevOps Server 安裝,因為 Windows 驗證也會防止使用 PAT。 額外的標頭也必須包含 的 user:PAT基數 64 編碼。

git -c http.extraheader='Authorization: Basic [base 64 encoding of "user:password"]' ls-remote http://tfsserver:8080/tfs/DefaultCollection/_git/projectName

Q. 如何建立未繫結至人員的存取權杖?

A。 所有 PAT 都與建立它的使用者身分相關聯。 應用程式無法建立 PAT。

在 Azure DevOps 中,您可以產生未連結至特定使用者的存取權杖。 使用 應用程式服務主體或受控識別 所發出的 Microsoft Entra 權杖。 針對管線,使用 服務連線 安全地驗證和授權自動化工作,而不需要依賴使用者特定的認證。

Q. 如何透過 API 重新產生/輪換 PAT? 我在 UI 中看到了該選項,但在 API 中沒有看到類似的方法。

A。 UI 中可用的「 重新產生 」功能實際上會完成一些動作,您可以透過 API 複製這些動作。

若要輪換 PAT,請依照下列步驟操作:

  1. 請參閱 GET 呼叫的 PAT 中繼資料。
  2. 使用 POST 呼叫,使用舊的 PAT 識別碼建立新的 PAT。
  3. 使用 DELETE 呼叫撤銷舊的 PAT。

Q. 過期、撤銷或非作用中的 PAT 會在 Azure DevOps 權杖清單中顯示多久?

A。 您無法再使用或重新產生已過期或撤銷的 PAT。 這些非使用中的令牌會在到期或撤銷后持續顯示數個月,然後自動從顯示器中移除。

Q. 為什麼當我嘗試使用 Microsoft Entra 應用程式呼叫 PAT 生命週期管理 API 時,會看到「需要系統管理員核准」訊息?

A。 租用戶的安全性原則需要系統管理員同意,應用程式才能存取組織中的組織資源。 聯絡您的承租人系統管理員。

Q. 我可以使用服務主體來建立或管理 PAT 嗎?

A。 否。 PAT 屬於使用者身分識別。 Microsoft Entra 服務主體或受控識別 可以產生短暫的 Microsoft Entra 令牌,您可以於大多數接受 PAT 的位置中使用。 深入瞭解 我們在 Azure DevOps 之間減少 PAT 使用量的努力 ,並探索使用 Microsoft Entra 令牌取代 PAT。