You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将CSV或XML格式的角色权限数据转换为XACML格式?

角色权限映射转XACML实现方案

核心映射逻辑

首先梳理你现有数据到XACML标准模型的对应关系:

  • 主体(Subject):将XML中的<role>字段值映射为XACML主体的角色属性,属性ID默认使用标准urn:oasis:names:tc:xacml:1.0:subject:role
  • 资源(Resource):将permission数组内的url字段映射为XACML资源ID,属性ID使用标准urn:oasis:names:tc:xacml:1.0:resource:resource-id,如果业务需要匹配label、subMenu字段可以自定义资源属性做扩展
  • 动作(Action):此处为页面查询操作,动作ID可设为view或GET,可根据你系统实际请求动作调整
  • 决策结果:角色、资源、动作全部匹配时返回Permit(允许访问)

转换后的XACML 3.0示例代码

<?xml version="1.0" encoding="UTF-8"?>
<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"
        PolicyId="siasn-profil-access-policy"
        RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:deny-overrides"
        Version="1.0">
    <!-- 策略目标:匹配profile类查询请求 -->
    <Target>
        <AnyOf>
            <AllOf>
                <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">view</AttributeValue>
                    <AttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"
                                        DataType="http://www.w3.org/2001/XMLSchema#string"
                                        Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action"
                                        MustBePresent="false"/>
                </Match>
            </AllOf>
        </AnyOf>
    </Target>

    <!-- viewprofil角色访问规则 -->
    <Rule RuleId="allow-viewprofil-role-access" Effect="Permit">
        <Target>
            <AnyOf>
                <AllOf>
                    <!-- 匹配指定角色 -->
                    <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">role:siasn-instansi:profilasn:viewprofil</AttributeValue>
                        <AttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:subject:role"
                                            DataType="http://www.w3.org/2001/XMLSchema#string"
                                            Category="urn:oasis:names:tc:xacml:3.0:attribute-category:subject"
                                            MustBePresent="false"/>
                    </Match>
                    <!-- 匹配3个允许访问的URL -->
                    <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-is-in">
                        <AttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
                                            DataType="http://www.w3.org/2001/XMLSchema#string"
                                            Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource"
                                            MustBePresent="false"/>
                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/tampilanData/pns</AttributeValue>
                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/tampilanData/pppk</AttributeValue>
                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/tampilanData/JPTNonASN</AttributeValue>
                    </Match>
                </AllOf>
            </AnyOf>
        </Target>
    </Rule>

    <!-- 默认拒绝所有不匹配的请求 -->
    <Rule RuleId="default-deny" Effect="Deny"/>
</Policy>

补充说明

  • 如果你有多个角色权限映射,每个角色对应一组权限可以单独写一条Rule,也可以合并到同一个Policy下统一管理
  • 业务不需要用到的label、subMenu字段可以不用加入XACML的目标匹配逻辑,减少策略计算开销
  • 如果需要更细粒度的控制,可以添加Condition节点实现参数级的校验逻辑

内容的提问来源于stack exchange,提问作者Rafif Favian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 00:36:03