NPM 推出「僅限暫存發布」權杖 自動送審與正式上線分離
核心重點
NPM 於近期新增「僅限暫存發布(Stage‑only)」精細度存取權杖,讓自動化流程只能把新套件版本送至審查階段,最終發布仍必須由具備 2FA(雙因素驗證) 的維護者手動核准。此舉同時為即將於 2027 年 1 月 取消可繞過 2FA 的直接發布權杖提供過渡方案。
背景與技術說明
為何要分離送審與發布
GitHub 早前已宣佈逐步限制能繞過 2FA 的精細度存取權杖,預計在 2027 年全面移除「直接發布」功能。若不加以調整,仍依賴權杖自動發布的 CI/CD 流程將失去合法的發佈途徑。NPM 因此推出 Stage‑only 權杖,讓自動化系統只能執行 npm stage publish,將新版本標記為「暫存」狀態,等待具備發布權限且已啟用 2FA 的維護者進行最後審核。
權杖的權限範圍
- 寫入權限:仍可調整套件的發行標籤(tag),或將既有版本標記為棄用(deprecate)。
- 唯讀限制:不同於純唯讀權杖,Stage‑only 權杖仍具備套件寫入能力,但無法直接執行
npm publish。即使原本權杖允許自動化繞過 2FA,NPM 也會拒絕直接發布。
技術需求
使用此權杖的環境必須配合 npm CLI 11.15.0 以上 以及 Node.js 22.14.0 以上 版本,且 NPM 帳號必須先啟用 2FA。
影響與應對策略
-
自動化流程調整
CI/CD pipeline 需要改為先呼叫
npm stage publish,再等待維護者以 2FA 核准後執行正式的npm publish。這樣的兩段式流程不會影響套件的版本號,只是多了一道人工審查的安全關卡。 -
仍依賴權杖的團隊
尚未遷移至 NPM 推薦的 可信任發布機制(Trusted Publishing),可先採用 Stage‑only 權杖作為過渡。可信任發布機制利用 OpenID Connect(OIDC) 直接驗證自動化環境的身分,根本杜絕權杖外洩的風險。
-
安全考量
雖然 Stage‑only 權杖仍具寫入能力,外洩後仍可能修改標籤或標記版本為棄用。因此,團隊仍需妥善管理權杖、限制存取範圍,並持續啟用 2FA。
未來展望
隨著 2027 年 1 月的「直接發布」禁令正式生效,NPM 生態系統將全面走向以身份驗證(OIDC)為核心的可信任發布。在此過渡期間,Stage‑only 權杖提供了既保留自動化便利,又加強安全防護的折衷方案。開發者應盡早評估現有 CI/CD 流程,規劃向 OIDC 轉型的路線圖,同時利用暫存發布作為最後的安全緩衝,確保套件供應鏈不因權杖濫用而受損。
