XACML 是一种标准化的、基于 XML 的细粒度授权策略语言,用于解决“谁在什么条件下能对什么资源执行什么操作”问题,支持 ABAC 模型,实现策略与执行分离,并通过 PEP、PDP、PAP、PIP 四组件协同工作。
XACML 是一种标准化的、基于 XML 的访问控制策略语言,全称是 eXtensible Access Control Markup Language(可扩展访问控制标记语言),由 OASIS 组织制定并维护。它不是用来做身份认证的,而是专门解决“谁在什么条件下,能对什么资源执行什么操作”这类授权决策问题。
传统 ACL 或 RBAC 往往硬编码在应用里,难以复用和跨系统协同。XACML 把访问策略从代码中抽离出来,用统一语法描述——比如“允许部门经理在工作日 9:00–17:00 查看本部门的财务报表”,这种带属性、时间、上下文的规则,XACML 能清晰表达。
XACML 不是一个单体工具,而是一套职责分明的运行模型:
:核心“大脑”,加载策略、调用 PIP 获取属性、评估规则,返回 Permit/Deny/NotApplicable/Indeterminate一个典型 XACML 策略用 XML 编写,包含 Policy、Rule、Target 和 Condition 四层逻辑:
SAML 解决的是“你是谁”和“你已被谁认证”,负责身份断言的传递;XACML 解决的是“你能不能做这件事”,负责基于策略的实时授权计算。两者常配合使用:SAML 提供用户身份和属性,XACML 拿这些属性去匹配策略并做决策。