4. 访问控制基本模型

在机器人系统中,访问控制模型决定了“谁在什么条件下能对哪个节点、话题、服务或参数执行什么操作”。如果只靠用户名和密码,无法应对多机器人协作、远程运维、第三方算法接入等复杂场景。本节从四种经典模型出发,说明它们如何回答同一个问题:授权决策依据是什么。

核心区别:DAC 看“资源所有者意愿”,MAC 看“系统强制标签”,RBAC 看“用户角色”,ABAC 看“属性与策略组合”。四者不是简单替代关系,而是适用于不同安全等级和运维复杂度的机器人系统。

一、四种模型的核心原理

自主访问控制(DAC)是最直观的模型:资源的所有者可以自行决定把权限授予谁。例如机器人上的地图文件由建图节点创建,该节点或管理员可以把读取权限授予导航节点。DAC 的优点是灵活、易实现,Linux 文件权限就是典型代表;缺点是权限可能被层层转授,难以全局约束,一旦某个节点被攻破,攻击者可能继承其全部权限。

强制访问控制(MAC)由系统统一制定安全策略,用户和资源都被打上安全标签,访问是否允许由标签比较决定,而不是由资源所有者决定。例如把“运动控制指令”标记为机密-控制级,只有同等级或更高级别的进程才能写入。MAC 安全性高,适合安全关键型机器人,但策略配置复杂,灵活性较低。

基于角色的访问控制(RBAC)把权限先分配给角色,再把角色分配给用户或节点。机器人系统中常见角色包括:管理员、导航操作员、视觉算法节点、远程监控端。RBAC 的优点是权限管理规模可控,人员变动时只需调整角色,不必逐项修改权限。

基于属性的访问控制(ABAC)则进一步引入环境、时间、位置、设备状态等属性,通过策略规则动态判断。例如“仅当机器人处于手动模式且操作员位于安全区域时,才允许下发速度指令”。ABAC 表达能力强,适合动态、细粒度场景,但策略设计和审计难度也最高。

访问控制四模型:授权依据与机器人场景映射 DAC 自主访问控制 依据:资源所有者授权 粒度:文件/话题级 优点:灵活、易落地 风险:权限可转授扩散 例:Linux 文件权限 MAC 强制访问控制 依据:系统安全标签 粒度:主体/客体等级 优点:全局强约束 风险:配置复杂、僵硬 例:SELinux 标签策略 RBAC 基于角色 依据:用户→角色→权限 粒度:角色级 优点:易管理、可审计 风险:角色爆炸、静态 例:导航操作员角色 ABAC 基于属性 依据:属性+策略规则 粒度:动态细粒度 优点:表达力强 风险:策略难验证 例:手动模式+安全区 机器人访问控制决策链 请求主体(节点/用户) → 身份与属性采集 → 策略匹配(DAC/MAC/RBAC/ABAC) → 允许/拒绝/审计 → 执行动作(订阅/发布/调用/写参数) 越靠右,动态性越强;越靠左,静态规则越简单。实际系统常采用混合模型。 选型建议 教学/原型:DAC + RBAC 快速起步;安全关键:MAC 约束核心控制通道;多租户/远程运维:RBAC 管角色,ABAC 管动态条件。 原则:最小权限、职责分离、默认拒绝、全程审计。

二、方法流程:从请求到决策

无论采用哪种模型,机器人访问控制通常遵循一条决策链:

  1. 身份识别:确认请求来自哪个节点、用户或远程客户端,例如通过证书、Token 或 ROS 2 安全身份。
  2. 属性采集:收集角色、安全标签、时间、位置、机器人模式等上下文信息。
  3. 策略匹配:根据所选模型查询权限表或策略规则。
  4. 决策执行:返回允许、拒绝或需二次认证,并记录审计日志。
  5. 持续评估:ABAC 场景下,属性变化可能触发权限回收。

以 ROS 2 为例,可通过安全 enclave 和权限文件限制节点通信。下面是一个简化的权限配置片段:

{
  "version": "1",
  "permissions": [
    {
      "subject": "nav_node",
      "role": "navigator",
      "allow": ["/cmd_vel:write", "/map:read", "/amcl_pose:read"],
      "deny": ["/emergency_stop:write"]
    },
    {
      "subject": "remote_operator",
      "role": "viewer",
      "allow": ["/camera/image:read", "/robot_status:read"]
    }
  ]
}

三、案例/场景:移动机器人多角色协作

假设一台巡检机器人同时接入导航节点、视觉检测节点、远程监控端和运维管理员。若只用 DAC,每个节点自行授权,容易出现视觉节点误写控制指令;若只用 MAC,策略又过于刚性,远程监控端临时查看地图也要改标签。更合理的做法是混合使用:

  • RBAC 管人:管理员拥有全部权限,操作员可下发任务,访客只读状态。
  • ABAC 管动态条件:只有机器人处于手动模式且速度为零时,才允许远程写入 /cmd_vel。
  • MAC 管核心安全:急停、安全 PLC 等关键通道使用强制标签,任何角色都不能绕过。
  • DAC 管局部资源:建图节点对自己生成的地图文件拥有临时共享权。

四、对比与选型清单

模型 授权依据 典型机器人对象 优势 主要误区
DAC 资源所有者 地图文件、日志、局部话题 简单灵活 权限转授失控
MAC 安全标签 急停、运动控制、安全区域 强约束、防篡改 策略过严导致运维困难
RBAC 角色 操作员、管理员、算法节点 易管理、可审计 角色膨胀、静态授权
ABAC 属性与策略 远程控制、动态任务、多租户 细粒度、动态 策略冲突、难以验证
实践建议:先用 RBAC 建立稳定角色骨架,再用 ABAC 补充动态条件,最后用 MAC 保护不可妥协的安全通道。不要一开始就追求全 ABAC,否则策略数量和调试成本会迅速上升。
常见误区:把“认证”当成“访问控制”。认证只回答“你是谁”,访问控制还要回答“你能做什么”。机器人系统中,一个合法节点被劫持后,如果权限过大,仍然可能造成严重事故。因此必须坚持最小权限和默认拒绝。

总结来看,DAC、MAC、RBAC、ABAC 分别从所有者、标签、角色、属性四个维度回答授权问题。机器人节点权限设计的关键,不是选择唯一模型,而是根据安全等级、动态程度和运维成本进行组合,并让每一次访问决策都可解释、可审计、可回收。