1. 页面概览

访问控制页(/gotham/access)实现 Gotham 的 ABAC(属性基访问控制):维护「allow/deny」策略(支持优先级排序、deny 一票否决),并提供前台评估测试台,用主体/资源/环境属性 + 动作现场试算决策,每次评估落「评估留痕(traces)」备查。一句话总结:本页是情报对象访问策略的创建、试算与留痕管理中心。

2. 访问入口

2.1 路由与菜单

path /gotham/access、name GothamAccess、title Gotham 访问控制,挂在父路由 /gotham(GothamLayout)下,侧边栏菜单项「访问控制」。源码 action/web/src/views/GothamAccessPage.vue

2.2 认证与权限

子路由 meta requiresAuth: true;请求经 gothamClient.js 附带 aip_token,401 用 gotham_refresh_token 自动换新。

2.3 端口与 API 前缀

Gotham 后端 18083,前缀 /gotham-api(baseURL /gotham-api/v1,Vite 代理重写为 /api/v1)。

3. 界面布局

Gotham 访问控制(ABAC)                [刷新]
[操作结果提示 alert(可关闭)]
ABAC 评估测试台:roles / user_attrs / resource_attrs / action /
                environment_attrs / user_id   [执行评估][填充机密样例][填充内部样例]
                → 决策 decision(ALLOW/DENY) + reason + 命中策略
创建 ABAC 策略:名称 / 效果 / 优先级 / 动作 / subject_attrs /
               resource_attrs / environment_attrs / 描述   [创建策略]
策略列表(ID/名称/效果/优先级/动作/主体/资源/状态/操作)
评估留痕(traces,ID/时间/用户/决策/命中策略/上下文)

4. 交互元素

控件位置含义与作用
输入「主体(roles,逗号分隔)」等六项评估测试台试算输入;属性类输入为 JSON,默认 {"role":"analyst"}/{"classification":"internal"}
按钮「执行评估」评估测试台POST /access-policies/evaluate,非法 JSON 时提示「属性 JSON 格式错误」
按钮「填充机密样例」「填充内部样例」评估测试台快捷回填 user_attrs/resource_attrs(secret / internal 两档)
输入「名称 *」「效果」「优先级」创建策略卡效果 allow/deny(deny 一票否决);优先级数字越大越先评估
按钮「创建策略」创建策略卡POST /access-policies,name 必填,条件字段非法 JSON 时报错
按钮「停用」/「启用」策略列表PUT /access-policies/:id{enabled} 切换状态
「刷新」按钮页面头部并行重拉策略与留痕两个列表

5. 后端关联

端点表(源码 action/products/gotham/server/server.go,处理器 handlers_abac.go):

方法路径用途
GET/access-policies策略列表
POST/access-policies创建策略(name/description/effect/priority/action/subject_attrs/resource_attrs/environment_attrs/enabled)
PUT/access-policies/:id更新(本页用于启停)
POST/access-policies/evaluate试算:body 含 user_id/roles/user_attrs/resource_attrs/action/environment_attrs,返回 decision+reason+matched_policy_ids
GET/access-policies/traces评估留痕,?limit=50

6. 权限与安全

7. 常见问题与排错

  1. 执行评估提示「属性 JSON 格式错误」:点「执行评估」后无结果直接报错;原因是 user_attrs/resource_attrs/environment_attrs 任一为非合法 JSON;处理:用「填充机密样例/填充内部样例」覆盖回合法样例,或修正手写 JSON。
  2. 评估结果与预期不符:命中 deny 策略却返回 allow,或反之;原因是策略优先级、enabled 状态、条件字段与输入属性不匹配;处理:核对策略列表的优先级与启停状态,检查试算属性是否落在策略条件内;deny 命中即拒绝。
  3. 留痕列表为空:traces 表无数据;原因是尚未执行过评估,或后端留痕服务未启用;处理:先执行一次「执行评估」再刷新;仍空则查后端 abac 日志与 traces 表。
  4. 创建策略失败:提示「创建策略失败」;原因是名称为空,或条件 JSON 非法;处理:确认名称已填;条件字段留空或填合法 JSON(如 {"role":"analyst"})。

8. 已知缺陷与边界

说明
留痕截断traces 仅展示最近 50 条,无分页翻页
试算不落授权评估结果仅展示与留痕,不改变实际访问控制
环境条件无样例前端未提供环境属性快捷样例,需手填 JSON

注:策略删除入口已于 2026-09-06 修复(admin 可见删除按钮,调用后端 DELETE)。