易君召
易君召
发布于 2026-11-05 / 2 阅读
0

访问控制在安全策略模型中的实现

访问控制核心目标:依据安全策略,判定主体能否对客体执行指定操作,整体流程可以概括为:标识鉴别 → 策略获取 → 决策判定 → 执行放行 / 拒绝 → 审计。下面从模型分类、通用实现框架、落地组件、典型策略模型实现方式、工程要点依次说明。

一、基础概念

  • 主体(Subject):发起访问的实体,用户、进程、服务、API 账号

  • 客体(Object):被访问资源,文件、数据库表、接口、容器、存储桶

  • 权限(Action/Operation):读、写、执行、删除、查询、调用

  • 安全策略:规则集合,描述「谁、在什么条件下、可以对什么资源、做什么操作」

二、访问控制通用实现链路(标准流水线)

  1. 身份标识与认证(Authentication) 先确认主体是谁:账号密码、证书、OIDC/JWT、AK/SK、生物识别。

    认证是访问控制的前置,访问控制本身做授权(Authorization)。

  2. 属性采集 提取决策需要的全部属性:

    • 主体属性:角色、部门、安全等级、设备标签、IP

    • 客体属性:资源密级、归属、类型

    • 环境属性:时间、地理位置、网络区域、终端风险状态

  3. 策略查询 向策略引擎拉取匹配该访问请求的安全策略;策略持久化在策略库。

  4. 策略决策(Policy Decision Point,PDP) 核心判断点:评估请求是否匹配策略,输出决策:Permit / Deny / NotApplicable / Indeterminate

  5. 策略执行(Policy Enforcement Point,PEP) 网关、中间件、内核、SDK、防火墙等拦截点,强制执行 PDP 结果。

    PEP 是入口,PDP 是大脑,二者解耦是现代模型(XACML、OPA)的典型设计。

  6. 策略管理(Policy Administration Point,PAP) 管理员编辑、版本化、下发安全策略。

  7. 策略信息(Policy Information Point,PIP) 外部数据源,给 PDP 补充属性:LDAP、IAM、CMDB、威胁情报。

  8. 审计日志 记录请求、属性、策略、决策结果,用于追溯、合规、告警。

这套 PDP/PEP/PAP/PIP 架构,是所有标准化访问控制模型的底层实现范式。

三、主流访问控制模型 & 各自实现方式

1. DAC 自主访问控制 Discretionary Access Control

策略逻辑:资源所有者自主分配权限,所有者可以授权给其他人。

  • 典型:Linux 文件 rwx、Windows NTFS 自主 ACL

  • 实现:

    1. 每个客体绑定 ACL(访问控制列表)

    2. 内核 / 文件系统作为 PEP;收到访问请求,匹配客体上的 ACL

    3. 策略依附资源本身,没有全局集中策略引擎

  • 缺点:权限可流转,容易权限扩散,不适合高安全等级系统

2. MAC 强制访问控制 Mandatory Access Control

策略逻辑:系统强制统一安全标签策略,用户不能自主修改;由安全管理员集中定义安全级别(密级)。

  • 典型:SELinux、Trusted Solaris、等保 / 涉密系统分级标记

  • 实现:

    1. 给主体、客体都打安全标签(密级:公开 / 秘密 / 机密)

    2. PDP 执行固定规则,例如简单安全规则(不上读)、*- 规则(不下写)

    3. 标签由系统强制绑定,用户无法自行修改标签和规则

  • 特点:强安全、管控严格;灵活性差,策略变更成本高

3. RBAC 基于角色的访问控制 Role-Based Access Control(工业最常用)

策略逻辑:权限不直接分配给用户,分配给角色;用户分配角色,通过角色获得权限。 分为 RBAC0(基础)、RBAC1(角色继承)、RBAC2(约束:互斥角色、基数约束)、RBAC3(合并)

  • 实现:

    1. IAM 系统维护三张映射:用户 ↔ 角色、角色 ↔ 权限、权限 ↔ 资源操作

    2. PEP(网关 / 应用)拿到用户身份 → 查询用户角色列表

    3. PDP 校验:该角色是否拥有本次资源 + 操作的权限

  • 扩展:ABAC 是 RBAC 的超集,RBAC 可以理解为只使用 “角色属性” 的 ABAC

4. ABAC 基于属性的访问控制 Attribute-Based Access Control(云原生、零信任主流)

策略逻辑:不依赖固定角色 / ACL,基于主体、客体、环境的多属性组合做动态策略判断。

零信任访问控制大多基于 ABAC 实现。

  • 策略示例:

if user.department == "研发" AND resource.label == "测试库" AND source_ip in 内网段 AND time between 9:00-18:00: permit
else: deny
  • 实现:

    1. 所有实体打属性标签(结构化 key-value)

    2. 策略使用类布尔表达式编写(OPA Rego、XACML、AWS IAM Policy、阿里云 RAM)

    3. PDP 实时拉取动态属性(PIP),动态求值

  • 优势:策略可全局统一、适配动态云资源、支持细粒度、适配零信任;策略复杂后可读性和调优成本上升

5. PBAC 基于策略的访问控制 Policy-Based Access Control

广义概念,常和 ABAC 混用;指独立、可外部化的策略引擎驱动,典型代表 OPA(Open Policy Agent),解耦业务代码和安全策略。

6. 其他

  • Rule-based:简单规则访问控制(防火墙 IP + 端口规则)

  • ReBAC 基于关系的访问控制 Relationship-Based Access Control:通过实体间关系授权(如文档的所有者、群组关系,Google Zanzibar 模型,用于多租户、共享文档场景)

四、两种典型工程化实现方案对比

方案 A:内置式访问控制(简单系统)

策略硬编码或存在数据库,在应用代码内部判断

if currentUser.roles contains "admin" and op == "write" and res == "/user":
    allow
  • PEP、PDP 耦合在业务服务里

  • 缺点:策略散落在各个服务,难以统一审计、统一管控、策略变更需要发版本

方案 B:外部策略引擎(OPA / XACML,安全高要求、微服务、零信任)

PEP(API 网关、Sidecar、SDK)拦截请求,把属性打包发给独立 PDP(OPA),PDP 加载 Rego 策略文件返回决策。

  • 优势:策略集中管理、热更新、跨服务统一、可独立审计;是信创、零信任、可信数据空间常用方案

五、访问控制策略的约束与增强机制

在模型之上,安全策略还会叠加这些控制:

  1. 职责分离(SoD):互斥角色,同一个人不能同时拥有审核 + 提交权限(RBAC2 约束)

  2. 会话控制:会话绑定角色,登录时激活角色,超时回收

  3. 条件控制:时间、位置、设备风险、MFA 二次校验(ABAC 条件)

  4. 权限生命周期:自动回收、离职权限清理、临时权限(时效授权)

  5. 默认拒绝原则(默认 Deny):没有匹配策略 → 拒绝,是安全基线

六、和安全模型的关系(比如 BLP、Biba)

BLP(Bell-LaPadula,保密性模型)、Biba(完整性模型)属于安全公理模型,通常用 MAC 方式落地:

  • BLP:不上读、不下写,保护机密不泄露

  • Biba:不上写、不下读,保护数据不被篡改 它们定义安全公理,而访问控制架构(PDP/PEP)是这套公理的执行载体。

七、一句话总结

访问控制在安全策略模型里,通过身份认证前置 + PEP 拦截请求 + PDP 加载并评估安全策略(DAC/MAC/RBAC/ABAC/ReBAC)、依赖 PIP 补充属性 + 强制执行决策结果 + 审计实现;现代安全体系(零信任、云原生、可信平台)优先采用解耦的 ABAC + 独立策略引擎(OPA)实现集中化、动态可管控的安全策略。


本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。

原文链接 https://www.yijunzhao.cn/archives/access-control-implementation-security-policy-models

欢迎访问 小易撩挨踢

https://www.yijunzhao.cn/