開發與網路

API Key 應用程式金鑰是什麼?外洩等於把帳單交給別人

API Key 中文叫應用程式介面金鑰,是一串由服務提供商發放的辨識碼。它用來證明你是誰,以及你有權使用這項服務,同時也讓服務商追蹤你的使用量與計費。它不是你的帳號密碼,但外洩的後果同樣嚴重:任何人拿到都能用你的額度呼叫服務,費用算在你頭上。所以金鑰要放在環境變數裡,不能寫進前端或公開的程式碼。
API Key 應用程式金鑰是什麼?外洩等於把帳單交給別人:文章重點卡

API Key 應用程式金鑰是什麼?外洩等於把帳單交給別人

只要你開始用 AI 的 API、串接自動化工具,第一步就是去申請一把 API Key。它會是一串又長又亂的字,複製下來的那一刻起,它就等於你的帳號。

很多人的第一個資安事故就發生在這裡:貼在前端、上傳到公開的程式碼倉庫、丟在群組裡。這一篇把它一次講清楚。

你將學到什麼

定義

服務商發放的辨識碼,證明你是誰以及你有權使用這項服務。

白話比喻

一把鑰匙。門認鑰匙不認人,誰拿到都能開。

怎麼用

通常放在請求的 Header 裡,隨著每次呼叫一起送出。

跟誰容易搞混

常被當成帳號密碼,也常跟 OAuth 授權搞混。

定義

API Key 中文叫應用程式介面金鑰,是一串由服務提供商發放的辨識碼。它用來證明你是誰,以及你有權使用這項服務。

它有四個作用:識別你的身分與應用程式、驗證你是否有權呼叫 API、追蹤你的使用量與計費、防止未經授權的濫用。

白話比喻

你帶著鑰匙去存取服務的寶庫,服務確認鑰匙有效,就開門讓你進去使用。整個過程你不需要提供帳號密碼,只有這把鑰匙。

反過來說,門認鑰匙不認人。誰拿到那把鑰匙,誰就能進去,而帳單還是算在你身上。

運作流程

  1. 在服務商平台註冊並申請 API Key
  2. 把 API Key 放在請求的 Header 中
  3. 程式帶著 API Key 向 API 服務發送請求
  4. 服務端驗證這把金鑰是否有效、是否有權限與額度
  5. 驗證通過後,回傳你要的資料或功能

安全最佳實踐

做法為什麼
不要公開不要寫在前端程式、公開的程式碼倉庫,也不要分享給他人
使用環境變數把金鑰存在環境變數或密鑰管理工具,不要寫死在程式碼裡
設定權限與額度使用最小權限原則,並設定用量限制,避免濫用與高額費用
定期輪替定期更換金鑰,降低外洩風險
監控使用狀況定期檢查使用日誌,發現異常立即處理

實際用例

常見用途包含呼叫 AI 模型、地圖與地點資訊、雲端服務、寄送郵件與簡訊、取得數據與金融資訊。在 資料抓取金字塔思考法 裡,第一順位的官方 API 就是靠它取得權限。

要注意三件事:金鑰等於存取權限,外洩可能導致服務被濫用並產生費用;不同服務的金鑰不通用,請分別管理;部分服務的金鑰有期限,記得留意到期時間。

常見誤解最大的誤解是想用 API Key 去存取別人的私人資料,例如某個使用者的信箱或雲端硬碟。這條路根本走不通,會直接拿到權限錯誤。要代表使用者存取他的資料,需要的是 OAuth 授權,詳見 API Key vs. OAuth 2.0。第二個誤解是以為只有正式上線才需要保護金鑰,實際上開發階段外洩的比例更高。
本文源起本文內容出自酒Ann 的「AI 實戰陪跑班」課程教材,由酒Ann 編寫成彙編條目。想系統性搞懂 AI 名詞,歡迎追蹤 酒Ann 的 Facebook

延伸學習

把這篇文章分享給需要的人FacebookLINEThreadsX

常見問答

API Key 跟帳號密碼一樣嗎?
不一樣。帳號密碼是人類登入網站用的,走的是登入表單,影響整個帳戶。API Key 是程式存取 API 用的,放在 Header 或參數中傳送,權限可以精細控制,而且可以隨時停用或重設,不會影響你的登入密碼。
金鑰不小心外洩怎麼辦?
立刻到服務商後台把那把金鑰停用或重設,再產生一把新的換上去。接著檢查使用紀錄,看有沒有不是你發出的請求。刪掉公開的程式碼還不夠,歷史紀錄裡通常還留著,一定要作廢那把金鑰。
為什麼不能把金鑰寫在前端?
因為前端程式碼是使用者的瀏覽器下載下來執行的,任何人都能打開開發者工具看到內容。寫在前端等於公開發放。正確做法是讓前端呼叫你自己的後端,由後端帶著金鑰去呼叫外部服務。