跳转到主要内容

Documentation Index

Fetch the complete documentation index at: https://docs.skrmir.com/llms.txt

Use this file to discover all available pages before exploring further.

认证与授权模型

适用对象

本页面向平台安全设计者、后端实现者、CLI/Agent 集成方,以及需要理解生产环境门禁的运维团队。

目标与范围

本页定义三件事:
  1. AuthN、AuthZ、Approval 的职责边界
  2. 统一执行链与错误语义
  3. 生产环境变更为何需要 step-up 与 approval

核心概念

AuthN

AuthN 只负责:身份验证、会话和 token 管理、输出标准化 Principal

AuthZ

AuthZ 根据 principal / env / resource / action / context 做授权决策,输出统一为 allow / deny / require_approval

Approval

Approval 负责审批票据创建与流转、审批绑定校验、审批记录与审计。

Task

Task 负责记录执行状态、进度与结果。 它不是 Approval 的别名,也不替代 Approval 的决策语义。 Approval 记录的是“是否允许某个高风险动作进入执行链”,Task 记录的是“进入执行后发生了什么”。

标准流程

AuthN -> AuthZ -> Approval(if required) -> Execute -> Audit

当前控制面状态与审批写入面

在正式 OpenAPI 接入前,当前冻结的最小控制面接口为:
  • GET /api/v1/system/info
  • GET /api/v1/authn/status
  • GET /api/v1/authz/status
  • POST /api/v1/approvals
边界约束:
  • /api/v1/system/info 是平台级聚合状态入口,不替代 /healthz/readyz
  • authn/authz status 只做状态可见性,不返回 token、session 明细、原始策略表或实时授权结果。
  • POST /api/v1/approvals 当前已交付为 approval ticket 创建入口;在 approval repository 已配置时成功返回 201 Created,未配置时返回结构化 503 Service Unavailable
  • 当前 status surface 的目标行为是返回 200 OK 的 JSON 状态对象,并明确区分 placeholder / ready / degraded,而不是继续返回 501 Not Implemented
approval ticket 创建面必须至少固化以下绑定语义:
  • 必绑:subject_idenvresource_hashaction
  • 推荐绑定:command_hash
  • nonce 必须存在,且 ticket 成功消费后必须失效

规划中的 CLI 示例(尚未实现)

当前仓库尚未交付这个 approval request 子命令;HTTP approval 写面当前同样仍处于保留状态,而不是已可执行的正式入口。
aios approval request \
  --action deploy.app.update \
  --resource app:project/prod/my-api

Web UI 路径

  • 登录与身份上下文
  • 生产审批
  • 授权失败与审批要求提示

常见问题 / 风险提示

  • Better Auth 只负责 AuthN,不负责最终业务授权。
  • 长生命周期 JWT 不应承载可变授权状态。
  • 任何 prod 写操作若绕过审批链,都应视为架构违规。
  • 平台级边界上的 AI 与自动化访问必须继续受 AuthZ、Approval 和审计约束,而不是变成绕过治理的高权限入口。
  • AiOS 负责平台级边界,不负责 DevBox 内每条编码工具命令的细粒度审批。

相关页面