XACML PolicySet и запрос с примером

Я новичок в XACML. Я планирую внедрить RBAC в приложениях нашей организации, используя политику XACML и сервер Wso2 ID. Я прочитал много статей о создании различных политик XACML с использованием wso2, и я также пробовал множество примеров политики. Но после того, как я просмотрел все доступные примеры, я не нашел подходящего способа создания набора политик XACML и повторного запроса для набора политик. Я сам пытаюсь создать набор политик XACML, но когда я пытаюсь выполнить этот набор политик на Id-сервере wso2, он каждый раз выдает ошибку "не применимо". Я много пытаюсь создать набор политик XACML другим способом, но когда я создаю запрос тогда это не дает мне должного результата. Помогите мне привести правильный пример набора политик XACML и его запроса.

Здесь я добавил свой policyset и policy, а также его запрос. пожалуйста, дайте мне знать, что было не так в этом.

Роль, созданная в wso2 Id:- testRole и назначьте эту роль testUser

PolicySet - это: -

<PolicySet xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"  PolicyCombiningAlgId="urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:permit-overrides" PolicySetId="PolicySetExample" Version="1.0">
   <Description>TestPolicySet</Description>
   <Target>
      <AnyOf>
         <AllOf>
            <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
               <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">H1</AttributeValue>
               <AttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:environment:environment-id" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"></AttributeDesignator>
            </Match>
         </AllOf>
      </AnyOf>
   </Target>
   <PolicyIdReference>ComplexPolicy</PolicyIdReference>
</PolicySet>  

политика

<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"  PolicyId="ComplexPolicy" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides" Version="1.0">
   <Target>
      <AnyOf>
         <AllOf>
            <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
               <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">H1</AttributeValue>
               <AttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:environment:environment-id" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"></AttributeDesignator>
            </Match>
         </AllOf>
      </AnyOf>
   </Target>
   <Rule Effect="Permit" RuleId="PermitForTestUser">
      <Condition>
         <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:and">
            <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:and">
               <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of">
                  <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-bag">
                     <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">index.jsp</AttributeValue>
                  </Apply>
                  <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"></AttributeDesignator>
               </Apply>
               <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of">
                  <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-bag">
                     <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">read</AttributeValue>
                     <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">view</AttributeValue>
                  </Apply>
                  <AttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"></AttributeDesignator>
               </Apply>
            </Apply>
            <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-is-in">
               <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">testRole</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"></AttributeDesignator>
            </Apply>
         </Apply>
      </Condition>
   </Rule>
</Policy>    

Запрос PolicySet

<Request xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" CombinedDecision="false" ReturnPolicyIdList="false">
<Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action">
    <Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" IncludeInResult="false">
        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">read</AttributeValue>
    </Attribute>
</Attributes>
<Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject">
    <Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id" IncludeInResult="false">
        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">testU</AttributeValue>
    </Attribute>
</Attributes>
<Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment">
    <Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:environment:environment-id" IncludeInResult="false">
        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">H1</AttributeValue>
    </Attribute>
</Attributes>
<Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource">
    <Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" IncludeInResult="false">
        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">index.jsp</AttributeValue>
    </Attribute>
</Attributes>

2 ответа

Решение

Если вы используете набор политик с WSO2IS, обратите внимание на следующее.

  1. Вам необходимо опубликовать как политику набора политик, так и ссылочные политики в PDP.

  2. Затем вам нужно включить набор политик в PDP. Вы можете сохранить ссылочные политики как отключенные политики.

Пожалуйста, обратитесь более подробно здесь

Если вы собираетесь внедрить RBAC и ABAC с WSO2 Identity Server, я рекомендую вам пройти через это, чтобы получить больше понимания.

Я проверил вашу политику с помощью Axiomatics Policy Server (см. Скриншот):

Центр управления аксиоматической политикой

Затем я проверил набор политик с помощью нашего симулятора:

я получил Indeterminate назад как ответ. Коренная причина Indeterminate это ваше состояние внутри Rule имеет флаг под названием MustBePresent установить в true на http://wso2.org/claims/role атрибут и что по какой-то причине оценка не получила никаких значений.

Результат моделирования на сервере политики Axiomatics

Кажется, что WSO2 IS не получает значения для атрибута роли. Вы хотите проверить свою конфигурацию с WSO2 IS. Кроме того, протестируйте сервер политики Axiomatics.

НТН

Другие вопросы по тегам