gpt4 book ai didi

authorization - 是否可以比较 XACML 策略中的属性?

转载 作者:行者123 更新时间:2023-12-04 05:37:19 25 4
gpt4 key购买 nike

以下规则表示具有角色“acme_manager”的主体可以对资源“/acme/widgets”执行任何操作:

<Rule Effect="Permit" RuleId="PermitRule">
<Condition>
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:and">
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-is-in">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/acme/widgets</AttributeValue>
<AttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"/>
</Apply>
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-is-in">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">acme_manager</AttributeValue>
<AttributeDesignator AttributeId="http://wso2.org/claims/role" Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"/>
</Apply>
</Apply>
</Condition>
</Rule>

是否可以创建一个更动态的规则,例如:“具有角色 X_manager 的主体可以对资源/Y/widgets 执行任何操作,如果 X 等于 Y”

所以我可以使用相同的策略来执行:

  • foo_manager .../foo/widgets
  • bar_manager .../bar/widgets
  • baz_manager .../baz/widgets
  • 等等

无需创建多个类似的策略。

最佳答案

是的,当然,这实际上是 XACML 优于其他授权框架并且绝对优于 RBAC 的主要优势之一。

在 XACML 中,您可以使用 2 个元素来定义授权的适用性。它们是:

  • XACML 目标
    • 目标存在于策略集元素、策略元素和规则元素中。
    • 目标用于属性和值之间的简单匹配,例如角色==“经理”
  • XACML 条件:条件只存在于规则元素中。
    • 条件适用于任何类型的匹配,包括您正在寻找的匹配。使用条件,您可以比较任意数量的属性,例如用户部门==资源部门。

我建议您使用 ALFA写你的政策。它比普通的旧 XACML 容易得多。 ALFA 是 Axiomatics 开发的免费工具(免责声明:我为 Axiomatics 工作)。 OASIS XACML 技术委员会也正在对其进行标准化。

关于authorization - 是否可以比较 XACML 策略中的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22262647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com