幣安 API Key 怎麼管?最小許可權配置和定期審查
幣安 API Key 預設只有讀許可權,需要勾選才能開啟現貨交易、合約交易、提幣。最佳實踐是按用途拆分多個 Key + 繫結 IP 白名單 + 90 天輪換。本文記錄我們這次配置 5 個 API Key 的實測過程和踩過的坑。
幣安 API Key 是給程式化交易、行情訂閱、第三方策略平臺用的訪問令牌。登入 幣安官網 → [API 管理] 建立一個 Key 預設只有 [讀許可權],[現貨交易]、[合約交易]、[提幣] 都要單獨勾選才開啟。我們這次為不同用途配了 5 個獨立 Key,每個最小許可權 + 繫結 IP,把單點洩露的最大損失控制在那一個 Key 的許可權範圍。
最重要的紀律:永遠不要給 API Key 開提幣許可權,除非你的程式真的需要自動提幣。99% 的程式用不到提幣,但開了之後一旦 Key 洩露,幣就直接被搬空。即便開了,也必須配合白名單(參考 幣安提幣白名單怎麼開?新增和冷卻期細節)。
5 個許可權位都幹啥
下面這張表是幣安 API Key 的所有許可權選項以及推薦勾選策略:
| 許可權 | 作用 | 風險 | 推薦 |
|---|---|---|---|
| Enable Reading(讀許可權) | 查行情、查餘額、查訂單 | 極低 | 必勾 |
| Enable Spot & Margin Trading(現貨+槓桿交易) | 下單、撤單 | 中(最多被刷單虧) | 按需 |
| Enable Futures(合約交易) | 合約下單、調槓桿 | 中高(槓桿放大虧損) | 按需 |
| Enable Withdrawals(提幣) | 鏈上提幣到指定地址 | 極高(直接搬走) | 幾乎不勾 |
| Permits Universal Transfer(賬戶互轉) | 現貨/合約/資金賬戶之間劃轉 | 低 | 按需 |
讀許可權預設就有不需要勾。現貨和合約許可權按你程式用途勾。提幣許可權只在萬不得已時勾,且必須勾完之後繫結提幣地址(這一步在白名單裡做,不在 API Key 設定裡)。
第 1 步:建立 API Key
[API 管理] 入口在 [賬戶中心] → [API 管理],App 也在同樣路徑。點 [建立 API] → 選 [System generated] 或 [Self-generated]:
| 型別 | 區別 | 推薦場景 |
|---|---|---|
| System generated(系統生成) | 幣安生成 secret,你只能看一次 | 99% 場景 |
| Self-generated(自簽名) | 用 Ed25519/RSA 公鑰,secret 永遠不上傳 | 高安全場景 |
普通使用者選 [System generated] 就夠。給 Key 起名(30 字內,例 bot-spot-grid-arb),點 [建立]。系統會要求 2FA 碼 + 郵箱驗證碼 + 簡訊驗證碼(如果綁了),三碼全過才會生成。
生成完會顯示 API Key(公鑰,64 位)和 Secret Key(私鑰,64 位)。Secret Key 只顯示這一次,關掉頁面就再也看不到了。立刻複製 Secret 存到密碼管理器或加密筆記裡,丟了只能刪 Key 重創。
第 2 步:勾許可權
新建立的 Key 預設只有讀許可權。要開交易許可權要點 [Edit restrictions] → 勾選對應許可權 → 輸 2FA 碼確認。每次改許可權都會觸發一次 2FA + 郵件驗證。
我們這次的 5 個 Key 配置:
| Key 名 | 用途 | 許可權 | IP 限制 |
|---|---|---|---|
bot-spot-grid |
現貨網格機器人 | 讀 + 現貨交易 | 限定 1 個 IP |
bot-futures-trend |
合約趨勢策略 | 讀 + 合約交易 | 限定 1 個 IP |
tax-export |
報稅匯出工具 | 只讀 | 限定 2 個 IP |
dashboard-only |
自己看監控面板 | 只讀 | 不限(僅在家 WiFi 用) |
manual-transfer |
手動賬戶互轉工具 | 讀 + 賬戶互轉 | 限定 1 個 IP |
全部 5 個都沒開提幣許可權。如果哪天洩露任何一個,最大損失也就是被對手刷單(但還要符合該 Key 的現貨/合約許可權),幣本身搬不走。
第 3 步:綁 IP 白名單 — 關鍵一步
[Edit restrictions] 頁面下方有 [Restrict access to trusted IPs only]。點開輸入 IP 地址(多個用逗號分隔,最多 30 個)。
為什麼必須綁 IP:
- API Key + Secret 即便洩露,盜用方的伺服器 IP 也不在白名單裡
- 幣安服務端會拒絕來自其他 IP 的所有請求,返回 -2015 錯誤
- 等於多加一道『地理位置』層的認證
不綁 IP 的代價:
- 沒有 IP 限制的 Key,幣安會強制 90 天后自動失效(這是幣安 2024 年起的硬規則)
- 綁了 IP 的 Key 不會自動過期,可以長期使用
怎麼找自己伺服器的 IP:
- 自託管機器人:在那臺機器上跑
curl ifconfig.me看出口 IP - 雲函式或 PaaS:看服務商提供的固定出口 IP(很多 PaaS 出口 IP 不固定,要單獨配 NAT)
- 家裡跑:自己寬頻的公網 IP(動態 IP 每天變會很麻煩,不推薦家用繫結)
如果你的程式部署在動態 IP 環境(例如家用寬頻、移動辦公),不綁 IP 會強制 90 天失效,綁了又會因為 IP 變動失敗。這種情況要麼上 VPS(固定 IP),要麼換內網穿透方案。
我們這次 5 個 Key 裡 4 個都綁了 IP,剩下的 [dashboard-only] 那個因為只讀用途,許可權本身就低,沒綁也安全。
第 4 步:測試 Key 是否工作
建立完用 curl 測試:
curl -H "X-MBX-APIKEY: 你的API Key" \
https://api.binance.com/api/v3/account?timestamp=1234567890&signature=xxx
如果返回賬戶資訊,Key 工作正常。如果返回:
| 錯誤碼 | 含義 | 處理 |
|---|---|---|
| -2014 | API Key 無效 | 檢查 Key 是否複製完整,是否有空格 |
| -2015 | IP 不在白名單 | 檢查當前出口 IP,加進白名單 |
| -1022 | 簽名錯誤 | 檢查 Secret Key 和簽名演算法 |
| -1021 | 時間戳超出視窗 | 伺服器時間不同步,校時 |
| -2010 | 沒有這個許可權 | 該 Key 沒勾對應許可權,去 [Edit] 加 |
| -4007 | 提幣地址不在白名單 | 提幣 API 才會遇到,加白名單 |
最常踩的是 -2015 IP 不在白名單,因為很多人不知道自己的真實出口 IP(例如用了 VPN、用了 Cloudflare、用了某些公司網路)。開啟 幣安官方App 裡的 [API 管理] 也可以看到 [最後訪問 IP],對比和你以為的 IP 是否一致。
第 5 步:定期審查 + 輪換
每 90 天做一次 API Key 體檢:
1. 列出所有 Key: [API 管理] 主頁能看到全部 Key 列表,每個 Key 的建立時間、最後訪問時間、許可權、IP 限制都一目瞭然。
2. 找出可疑的 Key:
- 已經不知道是給哪個程式用的 → 刪
- 30 天沒有 [最後訪問] 記錄的 → 刪
- 沒綁 IP 的 → 加 IP 或刪
- 許可權超出實際需要的 → 改許可權到最小
3. 主動輪換: 重要 Key(接觸大額資產的)建議每 90 天主動重創一次:刪舊 Key → 創新 Key → 更新到程式裡 → 驗證工作 → 完成。這個過程會讓程式短暫下線 1-5 分鐘,要選低活躍時段做。
4. 刪除前的檢查: 刪除 API Key 立刻生效不可恢復。刪之前確認:
- 這個 Key 不在任何執行中的程式裡被引用
- 這個 Key 不在任何 cron job、定時任務裡
- Git 倉庫的
.env、配置檔案裡沒殘留(這些應該早就在.gitignore但要再確認)
API Key 洩露應急
如果發現 Key 可能洩露(例如不小心 push 到了公開 Git 倉庫),立刻:
- 第一秒:在 [API 管理] 刪除這個 Key
- 第二秒:檢查這個 Key 之前 24 小時的所有交易記錄,看是否有可疑訂單
- 第三秒:如果開過提幣許可權,檢查是否有可疑提幣(應該被白名單攔了,但還是看一下)
- 第四秒:改賬號密碼 + 重置 2FA(即便沒證據其他憑據也洩露,全部清洗一遍)
- 後續:如果 Git 倉庫已 push,光刪 Key 不夠,還要把 Git 歷史裡的 secret 用
git filter-branch或 BFG 工具刪掉,否則有人能從 commit 歷史裡翻出來
GitHub 和 GitLab 都有自動掃描 secret 的服務,幣安 API Secret 一旦被推到公開倉庫,幣安會在幾小時內收到平臺通知主動作廢這個 Key,但這只是兜底,不能依賴這個。
第三方平臺用 API Key 的坑
很多第三方策略平臺、報稅工具、組合管理工具都讓你填 API Key。原則:
| 第三方型別 | 應該給什麼許可權 | 紅旗訊號 |
|---|---|---|
| 報稅匯出工具 | 只讀 | 要你開提幣許可權 → 跑 |
| 組合監控面板 | 只讀 | 要你開交易許可權 → 想想清楚 |
| 跟單 / 訊號 / 策略平臺 | 讀 + 現貨/合約 交易 | 要你開提幣許可權 → 絕對跑 |
| 槓桿代付 / 借貸工具 | 不要碰這種,繞開 | 任何要提幣的都跑 |
紅線:如果一個第三方工具理直氣壯要你開提幣許可權,99% 是想走人。報稅、監控、跟單都不需要提幣許可權,他們只需要讀、最多加交易許可權。
我們這次給一家做合約跟單的平臺開了 [讀 + 合約交易],他們要求開 [提幣] 我們拒絕,他們也接受了——說明這個許可權本來就是可選的,他們要是必須就走人。
常見問答
Q:API Key 和 Secret Key 哪個更敏感? A:Secret Key 更敏感。API Key 只是使用者標識可以告訴他人,Secret Key 是簽名金鑰,洩露等於全部許可權被盜用。Secret 永遠不要寫進任何郵件、聊天、Issue。
Q:如何安全儲存 API Key 和 Secret?
A:本地用 1Password / Bitwarden / KeePass 這種密碼管理器;伺服器用環境變數 + Docker secrets 或 K8s Secret,不要硬編碼在程式碼裡。Git 倉庫一定有 .env in .gitignore。
Q:從幣安獲取 API Key 之後我能改名嗎? A:能改。[API 管理] → 找到 Key → [Edit restrictions] 裡能改名。改名不影響 Key/Secret 本身,只是給你自己看的標籤。
Q:API Key 數量上限是多少? A:單賬號最多 30 個 API Key。一般用 5-10 個就夠細分用途了,30 個是為大量子賬戶、量化團隊設計的。
Q:Sub-Account(子賬戶)的 API 和主賬戶 API 有區別嗎? A:有區別。子賬戶 API 只能操作子賬戶內的資產,不能動主賬戶。子賬戶之間也彼此隔離。子賬戶特別適合策略隔離 + 風險隔離,量化團隊常用。
Q:API Key 有訪問頻率限制嗎? A:有。幣安所有介面都有 weight(權重)限制,簡單介面 weight=1,複雜介面 weight=20。每個 IP 每分鐘有 1200 weight 的總額度,超了返回 -1003 限流。讀餘額、查訂單這種介面很輕,下單也輕;查所有 K 線、查所有幣對會很快用完額度。
Q:API Key 刪除後歷史交易記錄會丟嗎? A:不會。交易記錄、訂單歷史都屬於賬戶層面,和具體哪個 Key 下的單無關。刪 Key 只是停掉那個訪問憑證,賬戶裡的資料全部保留。
Q:白名單 IP 支援 IPv6 嗎? A:支援。幣安 API 白名單同時接受 IPv4 和 IPv6 地址,輸入格式和正常一樣。如果你的伺服器既有 v4 也有 v6 出口,建議兩個都加進來。
Q:API 自動 90 天失效是什麼意思? A:沒綁 IP 白名單的 API Key,幣安會從建立之日起 90 天自動失效,需要重創。綁了 IP 的不會自動失效。幣安官方公告裡有這條規則,是 2024 年開始執行的,主要為了清理長期不維護的 Key。