PyPI 現在允許您發布包而無需綁定密碼和令牌

的PyPI

PyPI 是 Python 編程語言第三方應用程序的官方軟件存儲庫。

幾天前,官方宣布Python 套件儲存庫 PyPI(Python 套件索引)現在提供了一種新的安全方法來發佈軟體包,從而無需在外部系統(例如 GitHub Actions)上儲存固定密碼和 API 存取權杖。

這種新的身份驗證方法稱為「受信任的發布者」,旨在解決因外部系統遭到入侵以及預定義密碼或令牌落入不法分子手中而導致惡意更新發布的問題。

從今天開始,PyPI 包維護者可以採用一種新的、更安全的發布方法,不需要長期密碼或 API 令牌即可與外部系統共享。

有人提到,與其他傳統的 PyPI 身份驗證方法相比,這種新的身份驗證方法具有顯著的可用性和安全性優勢:

  • 可用性: 通過可信發布,用戶不再需要在 PyPI 中手動創建 API 令牌並將它們複製並粘貼到他們的 CI 提供程序中。 唯一的手動步驟是在 PyPI 中配置編輯器。
  • 安全性: 常規的 PyPI API 令牌是長期存在的,這意味著破壞包發布的攻擊者可以使用它,直到其合法用戶注意到並手動撤銷它。 同樣,使用密碼上傳意味著攻擊者可以上傳與該帳戶關聯的任何項目。 Trusted Publishing 避免了這兩個問題:頒發的令牌自動過期並且僅限於它們被授權上傳到的包。

關於這種新的身份驗證方法,據說它基於 OpenID Connect ( OIDC) 標準,該標準使用外部服務和 PyPI 目錄之間交換的有時限的身份驗證令牌來驗證軟體包發布操作,而不是使用傳統的登入名稱/密碼或透過存取權杖手動產生的持久性 API。

“可信發布”是我們使用 OpenID Connect (OIDC) 標准在可信第三方服務和 PyPI 之間交換短期身份令牌的術語。 此方法可用於自動化環境,無需使用用戶名/密碼組合或手動生成的 API 令牌在發佈時通過 PyPI 進行身份驗證。

另一方面,還提到包維護者可以在 PyPI 端信任提供給外部 OpenID 提供商 (IdP) 的標識符,外部服務將使用這些標識符來請求 PyPI 的非實時令牌。

產生的 OpenID Connect 令牌用於確認專案與驅動程式之間的關係,從而使 PyPI 能夠執行額外的元資料驗證,例如驗證已發布的軟體包是否與特定的程式碼庫關聯。這些令牌並非持久性令牌,而是與特定的 API 綁定,並在短有效期後自動過期。

相反,PyPI 維護者可以將 PyPI 配置為信任給定 OpenID Connect 身份提供者 (IdP) 提供的身份。 這允許 PyPI 驗證身份並將信任委託給該身份,然後該身份被授權從 PyPI 請求有限範圍、短期的 API 令牌。 這些 API 令牌永遠不需要存儲或共享,在快速到期時自動輪換,並在已發布的包及其來源之間提供可驗證的鏈接。

目前, GitHub Actions 中啟動的控制器已經可以啟用Trusted Publishers機制。此外,值得一提的是,未來 Trusted Publishers 也將支援其他外部服務。

最後,如果您有興趣了解更多相關信息,可以點擊以下連結查看詳情。


在 Google 中將其新增為首選來源