PBAC:基于策略的访问控制

分离策略管理、授权决策与访问执行


这里的 PBAC 是什么

基于策略的访问控制(Policy-Based Access Control,PBAC)将授权规则表达为可管理的策略,减少分散在业务代码中的权限判断。Speedle+ 提供Speedle 策略定义语言(SPDL)、策略管理服务(PMS),以及授权决策服务(ADS)或嵌入式评估引擎。

PBAC 描述规则如何表达和管理;RBAC描述角色关系;ABAC描述属性条件。同一个 Speedle 策略体系可以同时使用角色与属性。

从策略到执行

  1. 约定服务、主体名称、资源标识与操作名称。
  2. 通过 PMS创建授权策略和角色策略。
  3. 确认决策服务已接收到预期的策略版本。
  4. 将当前主体、资源、操作及可信属性发送给 ADS。
  5. 由应用、网关或其他执行点落实决策,并明确处理超时和评估错误。

集中管理并不免除应用执行决策的职责,也不意味着每个引擎都能瞬间收到更新。应验证所选策略存储的更新行为。

验证拒绝优先

在 Playground 中输入:

grant user alice read book
deny user alice read book

用户为 alice、资源为 book、操作为 read 时,两条策略都匹配,显式拒绝优先,结果为 Deny。删除第二行后,结果为 Allow;把用户改为 bob,没有适用的允许策略,默认拒绝。

像审查代码一样审查策略

将预期规则和代表性请求纳入版本控制,检查允许、显式拒绝、未匹配请求、角色范围和属性边界。记录验证的策略版本,以及它如何到达线上决策服务。浏览器本地演示不能证明生产环境的延迟或更新一致性。

架构、SPDL 参考和 XACML 比较进一步说明管理与决策的边界。