2. SCADA权限模型与访问控制基础
SCADA系统的权限管理,本质上是在回答三个问题:谁可以访问、能访问什么、在什么条件下访问。围绕这三个问题,业界形成了RBAC、ABAC、MAC三类主流访问控制模型。理解它们的差异与适用边界,是设计SCADA安全体系的第一步。
一、四个基础概念:用户、角色、权限、会话
在展开模型之前,先厘清SCADA权限体系中的四个基本对象。
- 用户(User):发起操作的主体,可以是现场操作员、调度员、维护工程师、系统管理员,也可以是脚本账号或第三方系统对接账号。SCADA中用户往往还带有岗位属性,如"1号变电站值班员"。
- 角色(Role):一组权限的集合,代表某种岗位职责。例如"只读监视员""遥控操作员""组态工程师"。角色是权限分配的中间层,避免直接给每个用户逐条授权。
- 权限(Permission):对具体资源执行具体动作的许可,粒度可粗可细。粗粒度如"访问历史数据库",细粒度如"对10kV馈线F12执行分闸遥控"。SCADA中权限通常绑定到点号、设备、区域或操作类型。
- 会话(Session):用户登录后的一次活动上下文,携带身份、角色、登录时间、来源IP、当前操作范围等信息。会话是权限生效的运行时载体,也是审计的关键锚点。
四者的关系可以概括为:用户通过会话激活角色,角色携带权限,权限作用于资源。会话是动态的,角色和权限是相对静态的配置。
二、RBAC:基于角色的访问控制
RBAC的核心思想是"权限不直接授予用户,而是授予角色,用户再被赋予角色"。在SCADA中,RBAC是最常见、最容易落地的模型。
典型实现方式是:先定义角色,再为角色绑定权限,最后把用户加入角色。例如某调度中心的角色设计:
角色: 监视员
权限: 画面浏览、实时数据查看、报警确认
角色: 操作员
权限: 监视员全部权限 + 遥控预置、遥控执行、挂牌
角色: 维护工程师
权限: 监视员全部权限 + 通道测试、点表修改(需审批)
角色: 系统管理员
权限: 用户管理、角色管理、审计日志查看
RBAC的优点是结构清晰、易于审计、管理成本低。缺点是难以表达细粒度的动态条件。例如"操作员只能在白班时段对A区设备遥控",纯RBAC需要拆出大量角色,导致角色爆炸。此时需要引入约束或与ABAC结合。
三、ABAC:基于属性的访问控制
ABAC不依赖固定角色,而是根据主体属性、资源属性、环境属性和操作属性动态判定。判定逻辑通常写成策略表达式。
在SCADA中,ABAC适合表达"带条件的操作许可"。例如一条策略:
允许 操作员 对 设备 执行 遥控
当 设备.区域 == 操作员.责任区
且 时间 在 08:00-18:00
且 操作员.培训状态 == 已认证
且 会话.来源IP 属于 内网运维段
ABAC的判定过程是:请求到达时,策略决策点(PDP)收集主体、资源、环境属性,逐条匹配策略,输出允许或拒绝。它的表达能力强,能实现最小权限和动态职责分离,但策略数量增长后容易出现冲突、难以验证,且对属性数据的准确性依赖很高。SCADA中若点表、区域划分、人员资质数据不完整,ABAC策略就会失效或误判。
四、MAC:强制访问控制
MAC由系统统一制定安全策略,用户和资源都被赋予安全标签(如密级、区域等级),访问是否允许由标签关系决定,用户不能自行修改。SCADA中MAC常见于电力调度、军工、核电等高安全等级场景。
例如按安全等级划分:控制区(安全区I)标签为"控制级",管理区(安全区III)标签为"管理级"。策略规定"管理级主体不得直接访问控制级资源",则即使某管理员拥有账号,也无法绕过该规则。MAC的强制性和不可绕过性是其最大价值,但灵活性差、配置和维护成本高,通常与RBAC叠加使用:RBAC管"能做什么",MAC管"最多能碰到哪一级"。
五、三类模型在SCADA中的适用性对比
选择模型时,应结合系统规模、安全等级、运维复杂度和合规要求综合判断。下表给出典型场景的适用建议。
| 模型 | 核心机制 | SCADA适用场景 | 主要局限 |
|---|---|---|---|
| RBAC | 用户→角色→权限 | 常规监控中心、中小型站控系统 | 难表达动态条件,易角色膨胀 |
| ABAC | 属性+策略动态判定 | 多区域、多岗位、需时段/区域约束的场景 | 策略复杂、依赖属性数据质量 |
| MAC | 安全标签强制比对 | 调度控制区、核电、军工等高等级场景 | 灵活性差、维护成本高 |
实践中,SCADA权限体系往往是混合模型:以RBAC为骨架管理日常岗位权限,用ABAC补充时段、区域、来源等动态约束,用MAC守住控制区与信息区之间的强制边界。
六、最小权限原则与职责分离
最小权限原则(Least Privilege)要求每个用户、每个角色、每个会话只拥有完成当前任务所必需的最小权限,且权限应有时效。在SCADA中,这意味着:监视员不应拥有遥控权限;维护账号不应长期持有工程师权限;临时检修授权应在工单结束后自动回收。
职责分离(Separation of Duties)要求关键操作不能由单一主体独立完成。SCADA中的典型设计包括:遥控操作需"操作员预置+监护人确认"双人复核;点表修改需"申请人+审批人"分离;审计日志的查看权与删除权分属不同角色,且删除权通常不授予任何常规账号。
下面这张图展示了SCADA中一次遥控操作在混合权限模型下的判定链路,以及最小权限与职责分离在其中的落点。
图中可以看到,一次遥控请求要依次通过RBAC、ABAC、MAC三层判定,再叠加职责分离的双人确认,最终才放行。任何一层不满足,请求即被拒绝并触发告警。这种分层设计既保证了日常运维的灵活性,又守住了高安全等级区域的强制边界。
总结来看,RBAC解决"岗位能做什么",ABAC解决"在什么条件下能做",MAC解决"最多能碰到哪一级",最小权限和职责分离则是贯穿三者的设计原则。在SCADA中,单一模型往往不够,混合使用并配合严格的会话管理和审计,才能形成可落地、可验证的访问控制体系。