4. 访问控制基本模型
在机器人系统中,访问控制模型决定了“谁在什么条件下能对哪个节点、话题、服务或参数执行什么操作”。如果只靠用户名和密码,无法应对多机器人协作、远程运维、第三方算法接入等复杂场景。本节从四种经典模型出发,说明它们如何回答同一个问题:授权决策依据是什么。
一、四种模型的核心原理
自主访问控制(DAC)是最直观的模型:资源的所有者可以自行决定把权限授予谁。例如机器人上的地图文件由建图节点创建,该节点或管理员可以把读取权限授予导航节点。DAC 的优点是灵活、易实现,Linux 文件权限就是典型代表;缺点是权限可能被层层转授,难以全局约束,一旦某个节点被攻破,攻击者可能继承其全部权限。
强制访问控制(MAC)由系统统一制定安全策略,用户和资源都被打上安全标签,访问是否允许由标签比较决定,而不是由资源所有者决定。例如把“运动控制指令”标记为机密-控制级,只有同等级或更高级别的进程才能写入。MAC 安全性高,适合安全关键型机器人,但策略配置复杂,灵活性较低。
基于角色的访问控制(RBAC)把权限先分配给角色,再把角色分配给用户或节点。机器人系统中常见角色包括:管理员、导航操作员、视觉算法节点、远程监控端。RBAC 的优点是权限管理规模可控,人员变动时只需调整角色,不必逐项修改权限。
基于属性的访问控制(ABAC)则进一步引入环境、时间、位置、设备状态等属性,通过策略规则动态判断。例如“仅当机器人处于手动模式且操作员位于安全区域时,才允许下发速度指令”。ABAC 表达能力强,适合动态、细粒度场景,但策略设计和审计难度也最高。
二、方法流程:从请求到决策
无论采用哪种模型,机器人访问控制通常遵循一条决策链:
- 身份识别:确认请求来自哪个节点、用户或远程客户端,例如通过证书、Token 或 ROS 2 安全身份。
- 属性采集:收集角色、安全标签、时间、位置、机器人模式等上下文信息。
- 策略匹配:根据所选模型查询权限表或策略规则。
- 决策执行:返回允许、拒绝或需二次认证,并记录审计日志。
- 持续评估: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 | 属性与策略 | 远程控制、动态任务、多租户 | 细粒度、动态 | 策略冲突、难以验证 |
总结来看,DAC、MAC、RBAC、ABAC 分别从所有者、标签、角色、属性四个维度回答授权问题。机器人节点权限设计的关键,不是选择唯一模型,而是根据安全等级、动态程度和运维成本进行组合,并让每一次访问决策都可解释、可审计、可回收。