OpenAI
此頁面由機器翻譯。查看原文英文文章。

API 金鑰安全最佳做法

透過安全儲存、存取控制、監察、定期更換及 IP 限制,保護您的 API 金鑰。

更新日期:4 days ago

1. 一律為帳戶中的每位團隊成員使用唯一的 API 金鑰。

API 金鑰是用來識別你向 API 發出請求的唯一代碼。你的 API 金鑰旨在供你本人使用。分享 API 金鑰違反使用條款。

當你開始試用時,可能會想將 API 存取權擴展至團隊。OpenAI 不支援分享 API 金鑰。請從成員頁面邀請新成員加入你的帳戶,他們登入後很快便會收到自己的唯一金鑰。你亦可以為個別 API 金鑰指派權限。

2. 建立設有到期日的 API 金鑰,並制定金鑰輪替流程

建立專案金鑰時可設定到期日;到期後,所有使用這些金鑰發出的請求都會被拒絕。我們強烈建議你建立設有到期日的金鑰,並制定定期輪替金鑰的流程。在金鑰到期前,請建立新金鑰,更新應用程式以改用新金鑰,並在確認新金鑰正常運作後撤銷舊金鑰。這些做法可大幅減輕 API 金鑰外洩造成的影響。

管理員可在平台設定中,為機構或專案強制設定 API 金鑰的最長有效期。新金鑰的有效期必須設在允許的期限內,以免金鑰無限期有效。專案的有效期上限不得超過機構的上限。

對於支援的工作負載,請使用工作負載身分聯盟,而非儲存長期有效的 OpenAI API 金鑰。你的工作負載會以受信任供應商提供的身分,換取短期有效的 OpenAI 存取權杖。請設定專用服務帳戶,並僅授予工作負載所需的權限。

3. 切勿將金鑰部署於瀏覽器或流動應用程式等用戶端環境。

在瀏覽器或流動應用程式等用戶端環境中暴露 OpenAI API 金鑰,會讓惡意使用者取得金鑰並以你的名義發出請求,可能導致非預期費用,或危及部分帳戶資料的安全。請求應一律經由你自己的後端伺服器轉送,讓你能在該處安全地保管 API 金鑰。

4. 切勿將金鑰提交至程式碼庫

將 API 金鑰提交至原始碼,是導致憑證外洩的常見途徑。如果使用公開程式碼庫,您可能會在不知情下以這種常見方式將金鑰公開至互聯網。私人程式碼庫較為安全,但資料外洩事故亦可能導致您的金鑰外洩。因此,我們強烈建議使用環境變數,主動保障金鑰安全。

5. 使用環境變數取代 API 金鑰

環境變數是在作業系統而非應用程式內設定的變數。它由名稱和值組成。我們建議將變數名稱設為 OPENAI_API_KEY。團隊統一使用此變數名稱後,便可提交及分享程式碼,而毋須承擔 API 金鑰外洩的風險。


Windows 設定

選項 1:透過 cmd 命令提示字元設定「OPENAI_API_KEY」環境變數

在 cmd 命令提示字元中執行以下指令,並以您的 API 金鑰取代 <yourkey>:

setx OPENAI_API_KEY "<yourkey>"

這項設定會套用至日後開啟的命令提示字元視窗,因此你需要開啟新視窗,才能透過 curl 使用該變數。你可以開啟新的命令提示字元視窗並輸入以下內容,確認此變數已設定

echo %OPENAI_API_KEY%

選項 2:透過控制台設定「OPENAI_API_KEY」環境變數

  1. 開啟系統內容,然後選擇進階系統設定

Windows 10 System settings with Advanced system settings highlighted in Control Panel
  1. 選擇環境變數...

Windows System Properties Advanced tab with Environment Variables button highlighted
  1. 在「使用者變數」區段(上方)選擇新增…。新增名稱/金鑰值配對,並以你的 API 金鑰取代 <yourkey>。

變數名稱:OPENAI_API_KEY
變數值:<yourkey>

Linux/macOS 設定

選項 1:使用 zsh 設定「OPENAI_API_KEY」環境變數

  1. 在終端機執行以下命令,並以你的 API 金鑰取代 yourkey。

echo "export OPENAI_API_KEY='yourkey'" >> ~/.zshrc
  1. 使用新變數更新 shell:

source ~/.zshrc
  1. 使用以下命令確認你已設定環境變數。

echo $OPENAI_API_KEY

API 金鑰的值將會是產生的輸出。


選項 2:使用 bash 設定你的「OPENAI_API_KEY」環境變數

按照選項 1 的指示,將 .zshrc 改為 .bash_profile。

全部設定完成!你現在可以在 curl 中參照該金鑰,或在 Python 中載入它:

import os
import openai

openai.api_key = os.environ["OPENAI_API_KEY"]

6. 使用金鑰管理服務

市面上有多種產品可供安全管理機密 API 金鑰。這些工具讓您控制金鑰的存取權限,並提升整體資料安全。即使您的應用程式發生資料外洩事故,金鑰亦不會受影響,因為金鑰會經過加密,並在完全獨立的位置管理。

對於將應用程式部署至正式環境的團隊,我們建議考慮使用其中一項服務。

7. 監察帳戶用量,並在需要時輪替金鑰

為你的機構或專案設定每月開支上限,並啟用強制執行功能,以助限制金鑰外洩造成的非預期費用。單靠開支提示並不會阻止 API 流量。強制執行開支上限可能會封鎖正常請求;此外,由於此功能並非即時生效,開支仍可能略微超出上限。

API 金鑰一旦外洩,他人便可在未經你同意的情況下使用你的帳戶配額。這可能導致資料遺失、產生非預期費用、耗盡每月配額,以及中斷你的 API 存取。

你可以透過用量頁面追蹤團隊的用量。如果你擔心帳戶遭到濫用,可採取以下措施來保護帳戶:

  • 檢查用量是否與團隊的工作情況相符。若使用者屬於多個機構(例如公司及個人機構),請確保他們已啟用追蹤功能,並設定用於計算和追蹤用量的預設機構。

  • 如果你認為金鑰已外洩,請立即前往 API 金鑰頁面輪替金鑰。若你的應用程式已在正式環境中運行,亦須相應更新當中使用的金鑰值。

  • 請透過 help.openai.com 聯絡我們,以便進一步調查。

8. 透過網絡控制保護 API 存取

IP 允許清單可讓你限制哪些 IP 位址能夠存取你的 OpenAI API。啟用後,系統只會允許來自已設定 IP 位址或範圍的請求,其他請求一律會被拒絕,即使當中包含有效的 API 金鑰也不例外。

這可確保只有受信任的基礎架構(例如你的後端伺服器或雲端環境)才能存取 API,從而增加一層保護。

詳情請參閱〈OpenAI API 的 IP 允許清單〉一文。

對於需要透過私人網絡存取的機構,Private Link 是另一個選項。它可讓 Azure 工作負載透過 Azure Private Link 連線至區域性的 OpenAI API 端點。如需申請存取權,請聯絡你的 OpenAI 代表或銷售團隊。使用 Private Link 仍須進行 API 驗證,而且無法與 IP 允許清單或雙向 TLS(mTLS)兼容。設定詳情請參閱 Private Link 指南。

這篇文章對你有幫助嗎?