
图片资料:官方来源
只查账户账目相关的 Kraken API 密钥,通常不需要交易权限,也不需要提币权限。这里的“账目”指余额、订单历史和账户流水这类读取任务,对应的是只读类权限;下单、改单、撤单和提币属于另一组权限,不在只读范围内。还要先区分公共行情数据和账户私有数据:前者不与具体账户关联,不需要 API 密钥;后者才需要密钥,并受权限设置约束。
权限按任务分组,而不是一个“查询”开关
Kraken 在创建 API 密钥时,把私有接口的权限分成几组。与本文问题相关的主要是:
- Funds 组:Query Funds 用于查询账户余额信息;Deposit Funds 用于充值相关操作;Withdraw Funds 用于提币相关操作。
- Orders & Trades 组:Query Open Orders & Trades 用于查询已存在的订单和仓位;Query Closed Orders & Trades 用于查询已关闭或已撤销的订单;Modify Orders 用于下单和改单;Cancel/Close Orders 用于撤单。
- Data 组:Query Ledger Entries 用于读取账户账本历史;Export Data 用于导出账户账本数据。
由此可见,Query Funds 只是余额查询这一项,不能代表所有只读权限。订单历史、账本流水、数据导出各有各的权限项。只勾 Query Funds,通常读不到账本流水;要查账本,需要另外勾 Query Ledger Entries。查询未成交订单和查询已关闭订单也不是同一个权限。把“只读”理解成“一个 Query 权限管全部”,是常见的误判。
一个最小权限的算例
假设你写了一个本地脚本,每周读取一次账户余额和账本流水,用于核对充值、扣费和交易记账。这是明确假设的场景,不是实测记录。合理的权限组合是:
- Query Funds:读取余额;
- Query Ledger Entries:读取账本流水;
- 如果还要核对已成交订单,再加 Query Closed Orders & Trades。
不需要勾 Modify Orders、Cancel/Close Orders、Withdraw Funds。这样配置后,这把密钥不能用于下单、撤单或提币。需要说明的是,只读权限并不等于“泄露了也没损失”:它能读到账户余额和流水,本身就涉及财务隐私。准确的说法是,只读密钥不能通过该密钥获得未授权的交易或提币操作,但账户信息的暴露仍是风险。
三种容易混淆的情况
第一种,把“查账目”当成“查所有账户数据”。余额、未成交订单、已关闭订单、账本、导出分别对应不同权限。需求写得越笼统,越容易多勾权限。
第二种,把“交易机器人要显示挂单”误认为“查询等于交易”。展示当前挂单可能只需要 Query Open Orders & Trades;真正下单才需要 Modify Orders。查询和修改应分开授予,能只给查询就不给修改。
第三种,给公共行情查询也配上私有密钥。公共市场数据不需要 API 密钥;给不需要账户身份的查询配一把带账户权限的密钥,只会扩大暴露面。
判定方法
拿到一个“只查账目”的需求,按三步判断:
- 列出实际要读取的内容:余额、未成交订单、已关闭订单、账本流水,还是导出文件;
- 对照创建密钥界面的权限分组,找到对应的只读项;
- 只勾选这些只读项,不勾下单、撤单、提币;如果对方说不清要读什么,先不要生成密钥。
另外,API secret 不能公开,也不应写入代码仓库或聊天记录。创建密钥时还可以设置 IP 地址限制和密钥有效期,这些选项能在只读场景下进一步缩小风险,但不改变“查询账目不需要交易或提币权限”这一基本判断。具体权限名称以创建密钥时的界面为准,本文核查于 2026-10-30。