跳到正文

访问密钥与密钥组字段

GateLLM 有两类「用户」,务必区分:

  • 控制台用户(ConsoleUser):登录控制台的管理账号(admin / normal_user / monitor)。UI 操作见 控制台用户管理
  • 访问密钥(AccessKey):调用方调用 API 时带的凭证(Bearer <key> 里的那个 key)。本章讲字段。

两者完全独立:控制台用户管的是「谁能进控制台」,访问密钥管的是「谁能调 API」。

访问密钥与密钥组(Access Keys)

入口:控制台 → 访问密钥。该页有两个页签:Access Keys密钥组

关系

text
控制台用户 ──created_by──→ 访问密钥 ──group──→ 密钥组 ──┬→ models[]         (能调哪些模型)
                                                        ├→ load_balancers[] (能调哪些负载均衡器)
                                                        └→ mcp_tool_acl     (能调哪些 MCP 工具)
  • 访问密钥归属一个密钥组group 字段)。
  • 密钥组的权限分三个互相独立的维度——模型、负载均衡器、MCP 工具——各有自己的「全部」开关,互不附带:
    • 模型列表 决定能访问哪些模型:空 = 无权访问任何模型;["*"] = 所有模型;具体模型名 = 只能访问列出的(精确匹配模型名,不是别名)。
    • 负载均衡器列表 决定能访问哪些负载均衡器:空 = 无权访问任何负载均衡器;["*"] = 所有负载均衡器;具体名称 = 只能访问列出的(精确匹配负载均衡器名,不是别名)。
    • 勾选「所有模型」附带负载均衡器权限,反之亦然——两个维度要分别勾选。
    • 负载均衡器是授权单元:放行一个负载均衡器后,网关不再用「模型列表」去逐个校验该负载均衡器内配置的成员(entry)——该组密钥可到达该负载均衡器的每一个成员,哪怕「模型列表」为空或不含这些模型。把敏感或昂贵的模型放进某负载均衡器的成员里,等于向所有持该负载均衡器权限的密钥开放;若要严格限制某密钥只能用某个模型,应把它配成普通模型并加入「模型列表」,而非放进一个已授权的负载均衡器。
  • 没有分组的密钥 = 无权访问任何模型与负载均衡器。

管理访问密钥

操作怎么做说明
新建「Access Keys」页 → 新建填名称、生成或手填 API 密钥、选分组、启用
查看完整密钥列表「复制」按钮/access-keys/{name}/api-key 取完整值(列表里只显示掩码)
轮换编辑 → 改 API 密钥换一把新值,旧值立即失效
吊销编辑 → 取消「启用」标记为已吊销,不再生效,记录保留
删除列表 → 删除彻底移除(建议优先用「吊销」保留审计)

访问密钥字段

字段说明
名称密钥标识,用于管理与审计;编辑时只读
API 密钥客户端实际带的凭证;列表显示掩码(前后 4 位,如 sk-a***xxxx
分组所属密钥组,决定模型/MCP 权限
匿名勾选后该密钥作匿名兜底(见下文),API 密钥字段置空
启用关闭即吊销
创建者哪个控制台用户建的;normal_user 只能看到自己建的
acl_default_actionallow / deny,无规则命中时的 per-key 回退动作
模型映射(model_mappings)该密钥专属的 from → to 重写规则,可带 when 请求头条件分流;优先级高于所属密钥组的规则;空 = 不映射。映射目标须过出口闸(按真实种类查对应清单:普通模型查 models、负载均衡查 load_balancers),源名须在对应清单里(入口闸对真实名按种类查、对虚构名并集回退)。详见 配置身份作用域模型映射

normal_user 角色只能管理自己创建的访问密钥(按 created_by 过滤),admin 能看全部。控制台用户被删除后,其建的密钥 created_by 置空,变成遗留密钥(仅 admin 可见)。

管理密钥组

操作怎么做说明
新建「密钥组」页 → 新建填名称、选模型、选负载均衡器、配 MCP 工具 ACL
编辑列表 → 编辑三个子页签:模型 / 负载均衡器 / MCP
删除列表 → 删除若有密钥引用该组需先改密钥的分组

密钥组字段

字段说明
名称分组标识
模型可访问的模型列表;按上游分组展示,「All Models」= * 全选;空 = 无权限。与负载均衡器维度互不影响
负载均衡器可访问的负载均衡器列表;「All Load Balancers」= * 全选;空 = 无权限。「All Models」不含负载均衡器,需在此单独勾选
MCPallowed_tools / denied_tools / allowed_tags,控制可调用的 MCP 工具(详见 MCP 配置
acl_default_actionallow / deny,无规则命中时的 per-group 回退动作
模型映射(model_mappings)该密钥组共享的 from → to 重写规则(可带 when 请求头条件),作用于组内所有密钥;优先级低于密钥自身规则、高于透传。映射目标须过出口闸(按真实种类查对应清单),源名须在对应清单里(入口闸对真实名按种类查、对虚构名并集回退)。详见 配置身份作用域模型映射

匿名访问密钥

设一个访问密钥的「匿名」= true(全局只能有一个):

  • 客户端请求不带 Authorization / x-api-key / x-goog-api-key 任何头时,匹配这个匿名密钥。
  • 匿名密钥仍需配分组才能获得模型访问权,否则只是「能进门但什么都调不了」。
  • 带了无效密钥的请求也会落到匿名分支(等同没带密钥)。

与负载均衡器的关系

负载均衡器是密钥组里独立于模型的授权维度:密钥组的 load_balancers 列表需包含该负载均衡器的名称(或 "*"),密钥才能通过 LB 调用。models 维度只管普通模型,「所有模型」不会附带放行负载均衡器:

json
{
  "name": "full-access",
  "models": ["*"],
  "load_balancers": ["gpt-4o-ha"]
}

控制台 → 访问密钥 → 密钥组 → 编辑 → 「负载均衡器」子页签勾选对应 LB。详见 负载均衡字段

常见问题

Q:客户端报 403 model_access_denied,但密钥是对的? 密钥所在的密钥组「模型」列表没包含要调的模型。到「密钥组」把该模型加进去,或改成 *。调负载均衡器报 403 同理——负载均衡器是独立维度,检查组里的「负载均衡器」列表(「All Models」不会附带放行负载均衡器)。

Q:怎么让某个密钥只能调某几个模型? 新建一个密钥组,模型列表只填那几个,把密钥的分组指向它。

Q:访问密钥列表里只看到 sk-a***xxxx,怎么拿完整值? 点该行「复制」按钮,会调接口取完整密钥并复制到剪贴板。匿名密钥不支持取完整值。

Q:normal_user 看不到别人建的密钥? 这是设计:normal_user 只能管自己建的密钥。需要管全部让 admin 改你的角色。

Q:想开放免登录访问给内部服务? 配一个匿名访问密钥(anonymous=true),并给它配一个权限受限的密钥组。注意:匿名意味着任何能连到网关的人都能用,仅适用于受信内网。

Q:访问密钥的 acl_default_action 和密钥组的 acl_default_action 怎么用? Header ACL 规则全不命中时的回退动作。详见 Header ACL 规则字段

下一步Header ACL 规则字段 看 Header ACL 规则的完整字段表;配置 Header ACL 访问规则 看操作步骤与常见用法示例;上游与模型字段 看模型配置;负载均衡字段 看 LB 与密钥组的关系;配置身份作用域模型映射 看按 key / group 重写模型名的操作步骤与运维契约。