開發與網路
API Key 應用程式金鑰是什麼?外洩等於把帳單交給別人
API Key 中文叫應用程式介面金鑰,是一串由服務提供商發放的辨識碼。它用來證明你是誰,以及你有權使用這項服務,同時也讓服務商追蹤你的使用量與計費。它不是你的帳號密碼,但外洩的後果同樣嚴重:任何人拿到都能用你的額度呼叫服務,費用算在你頭上。所以金鑰要放在環境變數裡,不能寫進前端或公開的程式碼。
API Key 應用程式金鑰是什麼?外洩等於把帳單交給別人
只要你開始用 AI 的 API、串接自動化工具,第一步就是去申請一把 API Key。它會是一串又長又亂的字,複製下來的那一刻起,它就等於你的帳號。
很多人的第一個資安事故就發生在這裡:貼在前端、上傳到公開的程式碼倉庫、丟在群組裡。這一篇把它一次講清楚。
你將學到什麼
定義
服務商發放的辨識碼,證明你是誰以及你有權使用這項服務。
白話比喻
一把鑰匙。門認鑰匙不認人,誰拿到都能開。
怎麼用
通常放在請求的 Header 裡,隨著每次呼叫一起送出。
跟誰容易搞混
常被當成帳號密碼,也常跟 OAuth 授權搞混。
定義
API Key 中文叫應用程式介面金鑰,是一串由服務提供商發放的辨識碼。它用來證明你是誰,以及你有權使用這項服務。
它有四個作用:識別你的身分與應用程式、驗證你是否有權呼叫 API、追蹤你的使用量與計費、防止未經授權的濫用。
白話比喻
你帶著鑰匙去存取服務的寶庫,服務確認鑰匙有效,就開門讓你進去使用。整個過程你不需要提供帳號密碼,只有這把鑰匙。
反過來說,門認鑰匙不認人。誰拿到那把鑰匙,誰就能進去,而帳單還是算在你身上。
運作流程
- 在服務商平台註冊並申請 API Key
- 把 API Key 放在請求的 Header 中
- 程式帶著 API Key 向 API 服務發送請求
- 服務端驗證這把金鑰是否有效、是否有權限與額度
- 驗證通過後,回傳你要的資料或功能
安全最佳實踐
| 做法 | 為什麼 |
|---|---|
| 不要公開 | 不要寫在前端程式、公開的程式碼倉庫,也不要分享給他人 |
| 使用環境變數 | 把金鑰存在環境變數或密鑰管理工具,不要寫死在程式碼裡 |
| 設定權限與額度 | 使用最小權限原則,並設定用量限制,避免濫用與高額費用 |
| 定期輪替 | 定期更換金鑰,降低外洩風險 |
| 監控使用狀況 | 定期檢查使用日誌,發現異常立即處理 |
實際用例
常見用途包含呼叫 AI 模型、地圖與地點資訊、雲端服務、寄送郵件與簡訊、取得數據與金融資訊。在 資料抓取金字塔思考法 裡,第一順位的官方 API 就是靠它取得權限。
要注意三件事:金鑰等於存取權限,外洩可能導致服務被濫用並產生費用;不同服務的金鑰不通用,請分別管理;部分服務的金鑰有期限,記得留意到期時間。
常見誤解最大的誤解是想用 API Key 去存取別人的私人資料,例如某個使用者的信箱或雲端硬碟。這條路根本走不通,會直接拿到權限錯誤。要代表使用者存取他的資料,需要的是 OAuth 授權,詳見 API Key vs. OAuth 2.0。第二個誤解是以為只有正式上線才需要保護金鑰,實際上開發階段外洩的比例更高。
本文源起本文內容出自酒Ann 的「AI 實戰陪跑班」課程教材,由酒Ann 編寫成彙編條目。想系統性搞懂 AI 名詞,歡迎追蹤 酒Ann 的 Facebook。
延伸學習
常見問答
API Key 跟帳號密碼一樣嗎?
不一樣。帳號密碼是人類登入網站用的,走的是登入表單,影響整個帳戶。API Key 是程式存取 API 用的,放在 Header 或參數中傳送,權限可以精細控制,而且可以隨時停用或重設,不會影響你的登入密碼。
金鑰不小心外洩怎麼辦?
立刻到服務商後台把那把金鑰停用或重設,再產生一把新的換上去。接著檢查使用紀錄,看有沒有不是你發出的請求。刪掉公開的程式碼還不夠,歷史紀錄裡通常還留著,一定要作廢那把金鑰。
為什麼不能把金鑰寫在前端?
因為前端程式碼是使用者的瀏覽器下載下來執行的,任何人都能打開開發者工具看到內容。寫在前端等於公開發放。正確做法是讓前端呼叫你自己的後端,由後端帶著金鑰去呼叫外部服務。
