若要讓 NuGet 成為更安全的套件散發環境,您可以新增範圍來控制 API 金鑰。
提供 API 金鑰範圍的能力可讓您更好地控制 API。 您可以:
- 建立多個範圍的 API 金鑰,這些金鑰可用於具有不同到期時間範圍的不同套件。
- 安全地取得 API 金鑰。
- 編輯現有的 API 金鑰以變更套件適用性。
- 重新整理或刪除現有的 API 金鑰,而不會妨礙使用其他金鑰的作業。
為什麼我們支援限定範圍的 API 金鑰?
我們支援 API 金鑰的範圍,讓您擁有更精細的權限。 先前,NuGet 會為帳戶提供單一 API 金鑰,而該方法有數個缺點:
- 一個 API 密匙可控制所有套件。 使用單一 API 金鑰來管理所有套件,當多個開發人員涉及不同的套件,以及共用發佈者帳戶時,很難安全地共用金鑰。
- 要嘛是所有權限,要嘛是沒有任何權限. 任何有權存取 API 金鑰的人都擁有套件的所有權限 (發佈、推送和取消列出)。 在具有多個團隊的環境中,這通常是不可取的。
- 單點故障。 單一 API 金鑰也意味著單點故障。 如果金鑰遭到入侵,與帳戶相關聯的所有套件都可能遭到入侵。 重新整理 API 金鑰是堵塞洩漏並避免 CI/CD 工作流程中斷的唯一方法。 此外,在某些情況下,您可能想要撤銷個人 API 金鑰的存取權 (例如,當員工離開組織時)。 今天沒有一個乾淨的方法來處理這個問題。
使用限定範圍的 API 金鑰,我們會嘗試解決這些問題,同時確保現有的工作流程不會中斷。
取得 API 金鑰
登入您的 nuget.org 帳戶,或建立帳戶(如果您還沒有帳戶)。
選取右上角的使用者名稱,然後選取 API 金鑰。
選取 [建立],然後提供金鑰的名稱。
在 [選取範圍] 底下,選取 [推送]。
在 [選取套件>] 底下,輸入 *。
選取 ,創建。
選取 [複製] 以複製新金鑰。
這很重要
- 始終將您的 API 金鑰保密。 API 金鑰就像一個密碼,允許任何人代表您管理套件。 如果意外洩露了您的 API 金鑰,請刪除或重新產生它。
- 請將金鑰儲存在安全的位置,因為您以後無法再次複製金鑰。 如果您返回 API 金鑰頁面,則需要重新產生金鑰才能複製它。 如果您不想再推送套件,也可以移除 API 金鑰。
範圍界定可讓您為不同目的建立個別的 API 金鑰。 每個金鑰都有到期時間範圍,您可以將金鑰限定為特定套件或 glob 模式。 您也可以將每個金鑰的範圍定義為特定作業:推送新套件和套件版本、僅限推送新套件版本,或將其取消列出。
透過範圍設定,您可以為管理組織套件的不同人員建立 API 金鑰,以便他們只擁有所需的權限。
建立限定範圍的 API 金鑰
您可以根據需求建立多個 API 金鑰。 API 金鑰可以套用至一或多個套件、具有授與特定權限的不同範圍,以及與之相關聯的到期日。
在下列範例中,您有一個名為的 Contoso service CI API 金鑰,可用來推送特定 Contoso.Service 套件的套件,且有效期為 365 天。 這是一般案例,其中同一組織內的不同小組處理不同的套件,而小組成員會獲得金鑰,以僅授與他們正在處理的套件的專用權。 過期可作為防止過時或忘記金鑰的機制。
使用glob模式
如果您正在處理多個套件,且有大量套件要管理,您可以選擇使用通配符來同時選取多個套件。 例如,如果您想將特定範圍授予所有其 ID 以Fabrikam.Service開頭的套件鍵,您可以在 Glob 型樣文字方塊中指定fabrikam.service.*。
使用 glob 模式來判斷 API 金鑰權限也適用於符合 glob 模式的新套件。 例如,如果您嘗試推送名為 Fabrikam.Service.Framework的新套件,您可以使用先前建立的金鑰來執行此操作,因為該套件符合 glob 模式 fabrikam.service.*。
安全地取得 API 金鑰
為了安全起見,新建立的金鑰永遠不會顯示在螢幕上,只能使用 「複製」 按鈕使用。 同樣地,在頁面重新整理後,無法存取鑰匙。
編輯現有的 API 金鑰
您可能也想要更新金鑰許可權和範圍,而不變更金鑰本身。 如果您有單一套件具有特定範圍的金鑰,您可以選擇在一或多個其他套件上套用相同的範圍。
重新整理或刪除現有的 API 金鑰
帳戶擁有者可以選擇重新整理金鑰,在此情況下,權限 (對套件)、範圍和到期時間保持不變,但會發出新金鑰,使舊金鑰無法使用。 這有助於管理過時的金鑰或可能發生 API 金鑰洩漏的情況。
如果不再需要這些金鑰,您也可以選擇刪除它們。 刪除金鑰會移除該金鑰並使其無法使用。
FAQs
我的舊 (舊) API 金鑰會怎樣?
您的舊 API 金鑰 (舊版) 會繼續運作,只要您希望它運作,就可以運作。 但是,如果這些金鑰超過 365 天未用於推送套件,則它們將被淘汰。 如需詳細資訊,請參閱部落格文章變更 即將到期的 API 金鑰。 您無法再重新整理此金鑰。 您必須刪除舊版金鑰,並改為建立新的範圍金鑰。
備註
此金鑰具有所有套件的所有權限,而且永遠不會過期。 您應該考慮刪除此金鑰,並建立具有範圍許可權和明確到期的新金鑰。
我可以建立多少個 API 金鑰?
您可以建立的 API 金鑰數量沒有限制。 然而,我們建議您將其保持在可控的數量內,這樣您就不會擁有許多過時或未使用的密鑰,而不知道它們在哪裡或由誰使用。
我可以刪除舊版 API 金鑰或立即停止使用嗎?
是的。 您可以 (而且您可能應該) 刪除舊版 API 金鑰。
我可以取回我錯誤刪除的 API 密鑰嗎?
否。 刪除後,您只能建立新金鑰。 意外刪除的密鑰無法恢復。
舊的 API 金鑰在 API 金鑰重新整理後是否繼續運作?
否。 重新整理金鑰之後,會產生一個新金鑰,其範圍、許可權和到期時間與舊金鑰相同。 舊鑰匙不復存在。
我可以為現有的 API 金鑰授予更多權限嗎?
您無法修改範圍,但可以編輯其適用的套件清單。
我如何知道我的任何金鑰是否已過期或即將過期?
如果任何密鑰過期,我們將通過頁面頂部的警告消息通知您。 我們還會在密鑰到期前十天向帳戶持有人發送一封警告電子郵件,以便您可以提前採取行動。