2

Identity Server 独自の SCIM API に対して XACML アクセス制御ポリシーを適用するにはどうすればよいですか? 私の考えは、ユーザーがユーザーの SCIM エンドポイント (リスト エンドポイント) にアクセスできるようにしたいということですが、唯一の結果としてユーザー自体のみが返されます (つまり、ユーザーは自分自身を照会できます)。これは可能ですか?

WSO2 Identity Server の既定のアクセス許可は、この問題を解決できるほど細かく設定されていません。そこで、XACML を調べ始めました。

4

1 に答える 1

0

はい、XACML はこれに適しています。必要なのは、ユーザー、アクション、およびリソースをモデル化することです。

たとえば、あなたの場合、リソースは SCIM API です。SCIM API は以下を公開します。

  • ユーザーを管理する
  • マネージャー ユーザー グループ
  • ユーザー メンバーシップを管理する

それぞれに対して、REST プロファイルごとに GET / POST / PUT / DELETE を実行できます。

アルファポリシー

XACMLのALFA構文を使用したポリシーの例は次のとおりです。

/**
 * This policy secures access to the SCIM API
 */
policyset secureSCIM{
    target clause stringStartsWith("/scim/v1/", contextPath)
    apply firstApplicable
    /**
     * This policy secures access to the User object of the SCIM API
     */
    policy secureUserAccess{
        target clause stringEndsWith("Users", contextPath)
        apply firstApplicable
        /**
         * View User object: 
         */
        rule viewUser{
            target clause httpVerb == "GET"
            permit
            condition scimUser == requestor
        }

    }
}

XACML に相当するもの

<?xml version="1.0" encoding="UTF-8"?>
 <!--This file was generated by the ALFA Plugin for Eclipse from Axiomatics AB (http://www.axiomatics.com). 
 Any modification to this file will be lost upon recompilation of the source ALFA file-->
<xacml3:PolicySet xmlns:xacml3="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"
    PolicySetId="http://axiomatics.com/alfa/identifier/scim.secureSCIM"
    PolicyCombiningAlgId="urn:oasis:names:tc:xacml:1.0:policy-combining-algorithm:first-applicable"
    Version="1.0">
    <xacml3:Description>This policy secures access to the SCIM API</xacml3:Description>
    <xacml3:PolicySetDefaults>
        <xacml3:XPathVersion>http://www.w3.org/TR/1999/REC-xpath-19991116</xacml3:XPathVersion>
    </xacml3:PolicySetDefaults>
    <xacml3:Target>
        <xacml3:AnyOf>
            <xacml3:AllOf>
                <xacml3:Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-starts-with">
                    <xacml3:AttributeValue
                        DataType="http://www.w3.org/2001/XMLSchema#string">/scim/v1/</xacml3:AttributeValue>
                    <xacml3:AttributeDesignator 
                        AttributeId="scim.contextPath"
                        DataType="http://www.w3.org/2001/XMLSchema#string"
                        Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource"
                        MustBePresent="false"
                    />
                </xacml3:Match>
            </xacml3:AllOf>
        </xacml3:AnyOf>
    </xacml3:Target>
    <xacml3:Policy xmlns:xacml3="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"
        PolicyId="http://axiomatics.com/alfa/identifier/scim.secureSCIM.secureUserAccess"
        RuleCombiningAlgId="urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable"
        Version="1.0">
        <xacml3:Description>This policy secures access to the User object of the SCIM API</xacml3:Description>
        <xacml3:PolicyDefaults>
            <xacml3:XPathVersion>http://www.w3.org/TR/1999/REC-xpath-19991116</xacml3:XPathVersion>
        </xacml3:PolicyDefaults>
        <xacml3:Target>
            <xacml3:AnyOf>
                <xacml3:AllOf>
                    <xacml3:Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-ends-with">
                        <xacml3:AttributeValue
                            DataType="http://www.w3.org/2001/XMLSchema#string">Users</xacml3:AttributeValue>
                        <xacml3:AttributeDesignator 
                            AttributeId="scim.contextPath"
                            DataType="http://www.w3.org/2001/XMLSchema#string"
                            Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource"
                            MustBePresent="false"
                        />
                    </xacml3:Match>
                </xacml3:AllOf>
            </xacml3:AnyOf>
        </xacml3:Target>
        <xacml3:Rule 
                Effect="Permit"
                RuleId="http://axiomatics.com/alfa/identifier/scim.secureSCIM.secureUserAccess.viewUser">
            <xacml3:Description>View User object:</xacml3:Description>
            <xacml3:Target>
                <xacml3:AnyOf>
                    <xacml3:AllOf>
                        <xacml3:Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
                            <xacml3:AttributeValue
                                DataType="http://www.w3.org/2001/XMLSchema#string">GET</xacml3:AttributeValue>
                            <xacml3:AttributeDesignator 
                                AttributeId="scim.http.verb"
                                DataType="http://www.w3.org/2001/XMLSchema#string"
                                Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action"
                                MustBePresent="false"
                            />
                        </xacml3:Match>
                    </xacml3:AllOf>
                </xacml3:AnyOf>
            </xacml3:Target>
            <xacml3:Condition>
                <xacml3:Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:any-of-any">
                    <xacml3:Function FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-equal"/>
                    <xacml3:AttributeDesignator 
                        AttributeId="scimUser"
                        DataType="http://www.w3.org/2001/XMLSchema#string"
                        Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource"
                        MustBePresent="false"
                    />
                    <xacml3:AttributeDesignator 
                        AttributeId="requestor"
                        DataType="http://www.w3.org/2001/XMLSchema#string"
                        Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
                        MustBePresent="false"
                    />
                </xacml3:Apply>
            </xacml3:Condition>
        </xacml3:Rule>
    </xacml3:Policy>
</xacml3:PolicySet>
于 2016-08-13T15:56:25.057 に答える