跳到主要内容

访问控制

Ithiltir 有三类访问者:管理员、匿名访客和节点。

管理员

管理员通过:

POST /api/auth/login

使用 monitor_dash_pwd 登录。直接调用登录 API 时,请求体必须包含 passwordpersistence,其中 persistencesessionpersistent。登录后使用 Bearer access token 调用管理 API,refresh/logout 使用 refresh cookie 和 X-CSRF-Token

monitor_dash_pwd 至少包含 8 个可见 ASCII 字符且不得含空白。Refresh cookie 使用 SameSite=Strict

管理 API:

/api/admin/*

都要求:

Authorization: Bearer <access_token>

匿名访客

匿名历史指标、流量统计和 Uptime 分别控制:

设置作用允许值
history_guest_access_mode历史指标匿名访问disabledby_node
流量设置 guest_access_mode流量统计匿名访问disabledby_node
uptime_guest_visible卡片 Uptime 和小时明细匿名访问truefalse,默认 true

三者均受节点 is_guest_visible 限制。Uptime 不继承历史指标或流量的访问设置。

GET /api/statistics/access 将流量设置映射为响应字段 traffic_guest_access_mode

Uptime 设置

管理台系统设置提供游客 Uptime 开关,以及黄色警告和红色错误的 SLA 阈值。按每日在线率判断:低于 uptime_warning_sla 为黄色,低于 uptime_error_sla 为红色;达到警告阈值为绿色,无观测数据为灰色。小时明细使用同一组阈值。

默认阈值分别为 9995,单位是百分数,允许小数,必须满足 0 <= error < warning <= 100。设置写入 PostgreSQL,保存后生效,不需要重启。游客开关和颜色阈值均不影响后台采样。

Bearer 可选端点

这些端点允许匿名请求,也允许 Bearer:

  • /api/front/*
  • /api/metrics/*
  • /api/statistics/*

缺失、格式错误、过期、已撤销或无法通过校验的 Bearer token 会被当作匿名请求处理。客户端不能仅凭 HTTP 200 判断自己拿到了管理员视图。

站点品牌

logo_url 接受同源绝对路径、base64 SVG/PNG/JPEG/GIF/WebP/ICO data URL,或不含用户信息的外部 HTTPS URL。新写入的外部 HTTP URL、非法 data URL 和其他媒体类型会被拒绝。

旧版本保存的外部 HTTP Logo 会继续读取,但 HTTPS 页面可能按 mixed content 规则拦截并回退到内置 Logo。PATCH /api/admin/system/settings 只校验本次提交的字段,因此修改其他设置不会被存量 HTTP Logo 阻断。

节点鉴权

节点调用:

/api/node/identity
/api/node/metrics
/api/node/static

必须携带:

X-Node-Secret: <node-secret>

节点 secret 在管理台创建节点后生成。secret 不应暴露给浏览器。

节点 secret trim 后必须包含 8~128 个 Unicode 字符。每个节点应使用独立 secret。

可见性规则

数据匿名默认可放开方式
品牌信息 /api/front/brand可见不需要配置
前台节点列表和指标只显示游客可见节点节点 is_guest_visible=true
在线率 /api/metrics/online只显示游客可见节点节点 is_guest_visible=true
Uptime /api/metrics/uptime/day只显示游客可见节点uptime_guest_visible=true + 节点可见
历史指标 /api/metrics/history禁止history_guest_access_mode=by_node + 节点可见
流量统计 /api/statistics/traffic/*禁止流量设置 guest_access_mode=by_node + 节点可见