NSD 控制台
先选定一个 Organization/Network 组合,再执行对应入口。每条只要求一个最短动作和一个可验证结果,避免把 17 个入口捆成一次不可追踪的“大检查”。
1. 登录、作用域与成员可见性(NSDA-01~06)
| 编号 | 操作 | 通过标准 |
|---|---|---|
| NSDA-01 | 登录,等待会话续期,退出后重新登录 | 续期不中断;退出后的旧会话拒绝;重新认证恢复 |
| NSDA-02 | 用一次性批准链接在已登录浏览器打开 | 绑定浏览器实际账号、目标设备和默认网络;空、过期、复用或他人已认领都明确失败 |
| NSDA-03 | 查看左上作用域并切换一个组合 | Organization 在上、Network 在下;多组合可切换,单组合不显示虚假动作 |
| NSDA-04 | 慢速切换时立即打开另一个入口 | 所有数据来自目标 Network;旧请求不得覆盖新 generation |
| NSDA-05 | 分别用管理员、普通成员、获授权成员访问首页和直达 URL/API | 成员只见本人或 Grant 授权的设备、节点、服务/入口;管理能力由服务端拒绝而非只隐藏导航 |
| NSDA-06 | 分别制造空数据、读失败、写失败和权限不足 | 四种状态文案与恢复动作可区分;错误不伪装成空列表或 0 |
2. 17 个导航入口(NSD-01~17)
| 编号 | 入口 | 最短操作 | 通过标准 |
|---|---|---|---|
| NSD-01 | 概览 | 打开页面并与一个资源详情核对 | 摘要、数量和入口均属于当前 Network |
| NSD-02 | 快速开始 | 依次切 macOS、Windows、Linux 并复制执行 | 每个平台先有安装命令,再有 ns --version、连接、ns status;URL 与三 pin 是当前控制面值 |
| NSD-03 | 用户 | 邀请一名用户并调整 Network membership | 状态和成员资格刷新后真实生效,重复邀请有明确结果 |
| NSD-04 | 用户组 | 建组、加成员,再把组用于一个 Grant | 成员投影生效;移出组后权限收敛 |
| NSD-05 | 设备 | 打开一台设备详情并执行可用生命周期动作 | 设备 ID、账号、平台、版本、注册与最近活动准确 |
| NSD-06 | 节点 | 打开节点详情并复制 Node IP/DNS | 所属设备、Node ID/IP/DNS、在线状态与真实运行时一致 |
| NSD-07 | 服务 | 打开一项服务并从客户端访问 | Short DNS、协议、端口、节点和状态准确,未授权不可见/不可达 |
| NSD-08 | 网关与出口 | 核对一台网关并用客户端选择出口 | 指定服务出网与互联网出口不重复表达;能力、节点、运营方、状态清楚且数据面生效 |
| NSD-09 | 公网入口 | 创建最小应用并访问域名 | 域名、TLS、后端服务、认证、状态和失败提示准确 |
| NSD-10 | 访问认证 | 配置一个 OIDC 提供方与组织/角色约束 | 符合身份可登录,不符合身份被拒绝且不泄露内部信息 |
| NSD-11 | 工作负载身份 | 创建一种身份并轮换/撤销凭据 | 方法、一次性凭据显示、生命周期和 ACL 关联准确,旧凭据失效 |
| NSD-12 | 访问授权 | 新建一条当前支持的 Grant,再禁用和删除 | UI 可见性与真实数据面同步放行/撤销,保存条件和摘要准确 |
| NSD-13 | API 令牌 | 创建最小范围 token,调用后撤销 | 密钥只显示一次;范围外拒绝;撤销立即失效 |
| NSD-14 | Webhook | 订阅一个事件并制造成功/失败投递 | 签名、事件过滤、重试、最近结果和禁用准确 |
| NSD-15 | 活动日志 | 完成一次成功和一次失败写操作后搜索 | 页面与导航都叫“活动日志”;主体、动作、结果、时间可查且正文无密钥 |
| NSD-16 | 常规 | 修改一个可回滚的 Network 设置并切换作用域 | 只影响当前 Network;无权限账号不可写;保存失败不显示成功 |
| NSD-17 | 流量 | 切时间范围并与已知请求/流量核对 | 范围、单位、汇总和明细一致;读取失败不显示为 0 |
3. Access Grant 家族(ACL-01~06)
每个正向场景都准备“应放行”和“应拒绝”各一项资源,并在创建后执行禁用或删除;通过标准必须同时包含 UI 可见性 与 真实访问。
| 编号 | family | 主体与资源 | 通过标准 |
|---|---|---|---|
| ACL-01 | node |
用户/用户组/节点主体 → 指定节点 | 只获得指定节点 L3(Node IP/DNS/Ping);不自动获得其它节点 |
| ACL-02 | private_service |
用户/用户组/节点主体 → 指定服务 | 只放行服务的协议端口;不自动获得所在节点完整 L3 |
| ACL-03 | public_application |
OIDC 身份/工作负载身份/匿名主体 → 公开应用 | 只有匹配身份能通过公开入口,后端私网资源不直接暴露 |
| ACL-04 | gateway_egress |
用户/用户组 → 指定网关服务出网 | 只有选中主体可经该服务出网;其它出网能力不随之开放 |
| ACL-05 | internet_exit |
用户/用户组 → 指定互联网出口 | 只有选中主体看到并激活该出口;公网 IP/路由提供数据面证据 |
| ACL-06 | subnet |
尝试选择或提交 Subnet Grant | 当前 family 选择禁用并说明尚未就绪;强行构造提交返回 subnet.notReady 或等价 Not Ready,绝不能创建或放行(fail closed) |
节点侧
ns subnet的发布/绑定仍可单独测试;当前限制只针对 NSD 的 Subnet Access Grant,不要写成正向授权场景。
4. 撤权与错误收敛
对 ACL-01~05 的每条 Grant 执行禁用或删除:列表投影、DNS、现有连接和新连接应在产品约定时间内一起收敛为拒绝。读失败、能力未知、目录未就绪或投影失败必须显示错误/准备中,不能降级成“没有资源”。