Как можно использовать службы Fiware и пути к ним в правилах XACML?

Мы рассматриваем Keyrock + Wilma + AuthZForce для защиты нашей системы FIWARE с Orion и Quantum Leap. Сущности в нашей системе находятся в службах и служебных путях. Доступ к ним осуществляется с помощью соответствующих заголовков, а именно Fiware-Service и Fiware-Servicepath.

Я пытаюсь создать правила XACML для AuthZForce, которые будут включать службы и пути служб, но пока безуспешно. Если у кого-то получилось, буду признателен за помощь. Кроме того, если этот подход неверен, я был бы признателен за другие предложения о том, как службы и пути обслуживания могут использоваться с контролем доступа FIWARE.


person minimalisti    schedule 13.02.2019    source источник
comment
Не могли бы вы дать правило XACML, которое вы пробовали, но у вас не сработало? Лишь бы было с чего начать.   -  person cdan    schedule 14.02.2019
comment
@CyrilDangerville: большое спасибо за ваш комментарий! Я только начинаю работать с AuthZForce, работаю с системой, в которой Orion находится за прокси-сервером PEP, на основе учебника FIWARE Securing Microservices (fiware-tutorials.readthedocs.io/en/latest/pep-proxy/index.html). Политики и запросы XACML, которые я использую, взяты из руководства по разрешениям на основе набора правил (fiware-tutorials.readthedocs.io/en/latest/xacml-access-rules/). Я пытался редактировать политики с помощью редакторов политик с WSO2 Identity Server, но эти эксперименты слишком неловко публиковать здесь. :-)   -  person minimalisti    schedule 15.02.2019


Ответы (1)


Работа с заголовками FIWARE не является проблемой для Authzforce , просто это не стандартное поведение PEP Proxy.

Authzforce — это полностью общий PDP, если вы предоставите правильный набор политик XACML и отправите соответствующие данные, он вынесет решение за вас. Следующие <Rule> получат permit полный доступ к /v2/entities, когда fiware-header = "smartgondor"

<?xml version="1.0" encoding="UTF-8"?>
<Rule RuleId="ccxsx-xs-xsx-xsxs-xs" Effect="Permit">
   <Description>Context Broker Access with Header=SmartGondor</Description>
   <Target>
      <AnyOf>
         <AllOf>
            <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-starts-with">
               <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/v2/entities</AttributeValue>
               <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:thales:xacml:2.0:resource:sub-resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true" />
            </Match>
         </AllOf>
      </AnyOf>
      <AnyOf>
         <AllOf>
            <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
               <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">smartgondor</AttributeValue>
               <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="fiware-header" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true" />
            </Match>
         </AllOf>
      </AnyOf>
   </Target>
</Rule>

К сожалению, проблема в том, что по умолчанию прокси-сервер PEP code при выполнении запроса к Authzforce передает только следующие стандартные значения:

  • роли
  • действие
  • URL-адрес ресурса
  • идентификатор приложения

Как видите, по по умолчанию никакая информация заголовка не передается.

Включить информацию о заголовках FIWARE. Вам придется изменить файл, чтобы прочитать заголовки из запроса, отправленного на прокси-сервер PEP, и добавить еще один атрибут, отправленный с запросом в Authzforce. Более простой пример такого пользовательского запроса можно найти в Руководство по администрированию XACML

Сотрудники службы безопасности могут звонить в тревожный звонок только до 9 утра или после 17:00, за исключением Чарли, который может звонить в любое время.

Пользовательский код для отправки запроса в Authzforce можно найти в файле учебная кодовая база — имя пользователя Чарли включено в запрос.

person Jason Fox    schedule 15.02.2019