跳转至

10 权限与安全边界

难度:中级|前置:系统思维、数据库|目标:明确谁能对什么做什么

四个基础问题

任何操作都要回答:

  1. 谁在操作?——身份;
  2. 操作什么?——资源;
  3. 做什么动作?——权限;
  4. 为什么允许?——策略与上下文。

例如:

用户 U
在租户 T
对设备 D
执行 restart

不能只验证“用户已登录”,还要确认 D 属于 T、U 在 T 中拥有控制权限。

认证和授权

  • 认证 Authentication:你是谁;
  • 授权 Authorization:你能做什么。

API Key、JWT、设备证书解决身份问题,但不会自动解决资源级权限。

多租户

典型错误:

SELECT * FROM devices WHERE id = ?;

更安全的查询把租户条件作为强制边界:

SELECT *
FROM devices
WHERE tenant_id = ?
  AND id = ?;

服务、缓存 key、对象存储路径、向量检索 metadata 都需要租户隔离。

最小权限

设备状态查询服务不应该同时拥有删除设备的权限;只读 Agent 工具不应拿到管理员数据库账号。

权限越大,单个 Bug、Prompt Injection 或密钥泄露的影响面越大。

高风险操作

删除、支付、外部发送、设备控制应增加:

  • 二次业务校验;
  • 幂等键;
  • 审批;
  • 速率和批量限制;
  • 操作预览;
  • 审计日志;
  • 可撤销或补偿。

审计

至少记录:

  • 谁;
  • 什么时候;
  • 对什么资源;
  • 做了什么;
  • 参数摘要;
  • 权限判断结果;
  • 最终结果;
  • 关联 trace_id。

审计日志自身需要防篡改、访问控制和保留策略。

完成标准

  • 能区分认证和授权
  • 能为设备查询写出资源级权限条件
  • 能解释最小权限为什么重要
  • 能为高风险工具设计审批和审计

完成后进入:IoT / AIoT 主线AI Agent 主线