币安 API 密钥怎么设才安全?只开交易权限也可能被对敲

在币安创建一把系统生成的 API 密钥,不给它加 IP 访问限制的话,它除了读取什么权限都开不了——这是币安帮助中心《如何在币安创建API密钥》写明的默认规则。平台自己已经把最危险的配法堵了一半,剩下的一半要你自己配:开哪几项权限、IP 填谁的、钱放在主账户还是子账户。
币安自带机器人和第三方机器人,哪种要交 API 密钥
先分清两种机器人,担心的事情不一样:
- 币安自带的机器人(网格、现货 DCA 这些),是在币安自己的系统里跑的,不涉及把 API 密钥交给外人。这部分的「安全」主要是策略本身会不会亏钱的问题,不是账户被盗的问题。
- 第三方机器人/平台,运行在币安之外,要操作你的账户,就必须拿到你的 API 密钥。账户安全的风险出在这一类,本文讲的也是这一类。
所以,如果你只用币安自带的网格、现货 DCA 这类机器人,没有 API 密钥交到外人手里,也就没有密钥泄露这一条风险,你该操心的是策略亏不亏(各类机器人分别怎么亏,见 币安交易机器人有哪几种)。打算把 API 密钥交给第三方工具,或者自己写程序调用,才用得上下面的内容。
API 密钥交出去的是什么
API 密钥不是你的登录密码,但它是一把能按你授予的权限范围操作你账户的钥匙。系统生成的密钥有两部分:API 密钥和加密密钥(Secret Key)。第三方机器人拿到这两样,就能在你授权的范围内替你下单、查数据,不需要你的登录密码;没开提现权限的话,它不能把币转出去。
API 密钥的危险程度,取决于你给它开了哪些权限、加了哪些限制。同一把密钥,只开读取权限,对方能看到你的余额和持仓,下不了单也提不了现;开了提现权限的密钥一旦泄露,币可以被直接转走。所以「机器人安不安全」这个问题,该问的是这把 API 密钥的权限和限制配对了没有。
币安《API 常见问题》写明,加密密钥只在创建 API 密钥时可见,之后会被屏蔽,丢了只能新建一把。所以从生成那一刻起就当场存好,不截图发群、不放在随手能被翻到的地方、不填进来路不明的网站或软件。同一页还有一句:「在任何第三方平台输入您的币安 API 密钥或加密密钥都存在安全风险」。
币安 API 密钥怎么创建:前提和两种密钥类型
帮助中心列的前提有三条:账户启用了双重身份验证(2FA),向现货钱包充值过任意金额以激活账户,完成了身份认证。入口在网页端登录后点个人资料图标、进【账户】,在【API管理】下点【创建API】;App 在币安专业版的【更多】里找【API 管理】。创建时要用 2FA 设备和通行密钥验证。
第一步是选密钥类型,这一步决定了后面的权限规则:
- 系统生成:用的是 HMAC 对称加密算法,你会拿到两样东西,API 密钥和加密密钥(Secret Key)。第三方工具让你「填 Key 和 Secret」的,指的是这一种。
- 自行生成:用的是 Ed25519 或 RSA 非对称加密算法,公钥和私钥由你自己生成,只把公钥交给币安,私钥不经过币安的页面。
币安 API 密钥有哪些权限项
币安开发者文档里「查询用户 API Key 权限」接口返回的字段,就是一把密钥上全部的开关。按后果分成四组看:
| 组 | 接口字段 | 管什么 | 给机器人用时 |
|---|---|---|---|
| 读取 | enableReading | 查余额、持仓、订单 | 只做行情面板、统计、报税的工具,开这一项就够 |
| 交易 | enableSpotAndMarginTrading、enableMargin、enableFutures、enableVanillaOptions、enablePortfolioMarginTrading、enableFixApiTrade | 现货与杠杆、合约、期权、统一账户、FIX 接口的下单 | 只开工具实际用到的那一个市场 |
| 划转 | enableInternalTransfer、permitsUniversalTransfer | 账户之间调拨资金 | 跑策略用不到,不开 |
| 提现 | enableWithdrawals | 把币转出到外部地址 | 不开 |
另有一个 ipRestrict 字段,标的是这把密钥有没有绑 IP。创建页上各项的中文名称,以 API 管理页显示的为准。交易机器人的工作是下单和撤单,把币转出账户不在它的职责里;哪个第三方工具要求你开提现权限,这个要求本身就是放弃它的理由。
没绑定 IP 的 API 密钥有什么限制,IP 白名单怎么设
帮助中心的原文是:「无 IP 访问限制的 HMAC API 密钥除读取权限之外没有任何权限。如果您希望启用其他权限,请添加 IP 访问(IPv4 格式)限制、使用自行生成的密钥(如 Ed25519 或 RSA 密钥)或禁用默认安全控制措施。」另外两条:
- 「要启用提现权限,必须添加 IP 访问(IPv4 格式)限制。」
- API 密钥如果是在启用合约账户之前创建的,或者你已经开通了统一账户,就开不了合约交易权限。
也就是说,系统生成的密钥想开交易权限,正路是先绑 IP。三条出路里的最后一条「禁用默认安全控制措施」,等于自己把这道保护拆掉,不建议走;币安的说法也是强烈建议不要给没有 IP 访问限制的密钥开读取之外的权限。
IP 白名单填的是发出请求的那台机器的公网 IPv4 地址:用第三方平台,填它公布的固定出口 IP;自己跑程序,填你服务器的固定 IP。家用宽带的地址会变,不适合拿来绑。绑了之后,这把密钥只接受从这些地址发来的请求,密钥被人抄走,在他自己的机器上调不动。
只开交易权限,为什么还会被对敲
关掉提现,挡住的是「把币直接转到外部地址」这一条路。还有一条路不需要提现权限:拿到密钥的人用你的账户,在一个成交稀少的交易对上以偏离市价很远的价格下单,对手方是他自己的另一个账户。你的账户高价买进、低价卖出,他的账户反过来,几笔之后钱就从你这边到了他那边,账面上看只是一串「交易亏损」。这就是对敲。全程没有一笔提现,提现权限开没开都不影响它。
IP 白名单能挡住其中一种情况:密钥泄露到白名单以外的机器上。它挡不住另一种:出事的就是白名单里的那台机器,比如第三方平台自己的服务器被人控制,请求本来就从被允许的地址发出。针对这一种,设置上没有能完全挡住的开关,能做的是把损失的上限压低:
- 交易权限只开工具用得到的那一个市场,合约用不到就不开合约。
- 把交给机器人的钱和其余的钱分开放,办法见下一节的子账户。
- 隔一段时间看一遍成交记录,重点是你没下过的单、冷门交易对上的成交、明显偏离市价的成交。
- 停用某个工具,就把对应的密钥删掉,别留着。
用子账户 API 把机器人的钱隔开
子账户是挂在主账户下面的独立账户,资金和交易记录分开记。按币安帮助中心《币安子账户功能及常见问题解答》:
- 完成身份认证并启用 2FA 的所有币安用户都能用子账户功能;普通用户最多创建 5 个,VIP 用户的数量按主账户的 VIP 等级定。
- 子账户的 API 密钥在主账户的【API管理】里创建和编辑,每个子账户最多可以创建 30 个。
- 主账户和子账户之间的划转实时到账、不收费;资产划转只有主账户能管理。
- VIP 等级和手续费折扣按主账户与所有子账户的合计交易量算。
用法是:给要接第三方工具的那套策略单开一个子账户,从主账户只划进去准备交给它跑的那笔钱,API 密钥建在这个子账户名下。这把密钥看得到、动得了的只有子账户里的资金,就算发生上一节说的对敲,损失也以划进去的金额为限;钱要不要追加、什么时候撤回,决定权在主账户。同时跑几套策略时,一套一个子账户,各自的盈亏也分得清。
API 密钥常见问题
忘了加密密钥(Secret Key),还能在币安后台查到吗?
查不到。币安的说明是加密密钥只在创建 API 密钥时可见,之后被屏蔽;弄丢了需要创建一把新的密钥,再把旧的删掉。
API 密钥为什么开不了合约交易权限?
帮助中心给的原因有两个:这把密钥是在你启用合约账户之前创建的,或者你已经开通了统一账户。前一种情况,可以在启用合约账户之后新建一把密钥再试。
程序突然收到 HTTP 403,是密钥被封了吗?
不是密钥的问题。按《API 常见问题》,403 表示违反了 WAF(Web 应用防火墙)规则,常见于请求过于频繁,限制针对的是 IP,一般封禁 5 分钟;改好代码也不能提前解除,要等限制时间结束。
怀疑 API 密钥泄露了怎么办
怀疑 API 密钥泄露了,或者某个第三方平台出了状况,按这个顺序处理:
- 先删掉那把 API 密钥。在币安 API 管理页面把它删除,比改权限、改白名单都直接。
- 检查账户有没有异常活动。看看有没有不是你下的单、有没有异常登录记录。提现权限没开,币不会被直接提走,但钱仍可能通过异常成交亏掉:重点查冷门交易对上的成交、明显偏离市价的成交和你没下过的单。
- 排查泄露源头再重建。如果是某个平台或软件不靠谱,停用它;确认环境干净后,再按前面的做法重新创建一把配好权限和 IP 白名单的新 API 密钥。
- 顺手加固账户:改密码、确认 2FA 还在、检查提现地址白名单。
没开提现、绑了 IP,出状况时不会出现「币被直接提走」这一种局面;交易层面有没有损失,看第 2 步查出来的结果。密钥建在子账户里的,再多一步:把子账户里剩下的资金划回主账户。