Лучшие вопросы
Таймлайн
Чат
Перспективы

XACML

Из Википедии, свободной энциклопедии

Remove ads

XACML (англ. eXtensible Access Control Markup Language — расширяемый язык разметки контроля доступа) — стандарт, разработанный OASIS, определяющий модель и язык описания политик управления доступом, основанный на языке XML, и способы их обработки.

Краткие факты Создатель, Официальный сайт ...

Одной из целей XACML является продвижение общей терминологии и функциональной совместимости между реализациями управления доступом нескольких разработчиков. XACML - это стандарт разграничения доступа на основе атрибутов (ABAC), где атрибуты, связанные с пользователем, действием или ресурсом, являются входными данными для принятия решения о том, может ли данный пользователь получить доступ к данному ресурсу определенным образом. Управление доступом на основе ролей (RBAC) также может быть реализовано в XACML как специализация ABAC.

Remove ads

История

Версия 1.0 была утверждена организацией стандартов OASIS в 2003 году.

Версия 2.0 была утверждена организацией стандартов OASIS 1 февраля 2005 года.

Первая спецификация XACML 3.0 была выпущена 10 августа 2010 года[1]. Последняя версия, XACML 3.0, была стандартизирована в январе 2013 года[2].

Модель языка

Суммиров вкратце
Перспектива

Основными компонентами языковой модели являются правило, политика и набор политик.

Правило

Правило является простейшей единицей модели. Правило должно быть включено в политику, самостоятельной единицей оно не является.

Основные компоненты правила:

  • Цель
  • Условие
  • Эффект
  • Обязательство
  • Рекомендация

Цель

Цель определяет запросы, к которым данное правило применимо, в форме логических выражений над атрибутами запроса. Запрос содержит в себе атрибуты субъекта, запрашивающего доступ, атрибуты ресурса, доступ к которому запрашиваются, и атрибуты действия, которое пользователь хочет совершить. Также запрос может содержать и другие атрибуты, например, атрибуты окружения. Если цель в правиле отсутствует, она наследуется от родительского элемента (политики).

Условие

Условия представляют собой расширенную форму цели, которые могут использовать более широкий диапазон функций и, что более важно, могут использоваться для сравнения двух или более атрибутов вместе, например, subject-id == doctor-id (идентификатор объекта равен идентификатору врача).

Эффект

Эффект может принимать два значения: "разрешить" или "запретить". Эффект правила срабатывает в случае положительного вычисления правила (если цель и условие принимают значение "истина").

Обязательство

Обязательство описывает то, что должно быть выполнено до или после подтверждения доступа. Если описанные действия выполнить невозможно, утвержденный доступ не может и не должен быть реализован.

Пример:

     Allow access to resource MedicalJournal with attribute patientID=x 
           if Subject match DesignatedDoctorOfPatient
           and action is read
     with obligation
          on Permit: doLog_Inform(patientID, Subject, time)
          on Deny  : doLog_UnauthorizedLogin(patientID, Subject, time)

Рекомендация

Выполняет те же функции, что и обязательство, но, в отличие от него, может быть проигнорировано.

Политика

Используется для объединения правил.

Основные компоненты политики:

  • Цель
  • Алгоритм объединения правил
  • Набор правил
  • Обязательство
  • Рекомендация

Алгоритм объединения правил

Используется для разрешения конфликтов. Например, если одно из правил принимает значение "истина", а другое "ложь", алгоритм объединения правил определяет, какое значение примет сама политика.

Набор политик

Набор политик нужен для объединения группы политик с целью их более быстрой фильтрации на основе общего назначения, задаваемого в цели группы политик.

Основные компоненты:

  • Цель
  • Алгоритм объединения политик
  • Набор политик
  • Обязательство
  • Рекомендация
Remove ads

Модель авторизации

Суммиров вкратце
Перспектива

Основные компоненты модели

Подробнее Название, Перевод ...

Компоненты модели взаимодействуют между собой посредством запросов и ответов в формате XACML. Запрос содержит в себе атрибуты. Ответ содержит результат вычисления политик (имеет 4 значения: "разрешить", "запретить", "не применимо", "не определено"). Кроме того, ответ может содержать в себе обязательства, которые необходимо выполнить в случае разрешения или запрета доступа.

Thumb
Процесс авторизации

Процесс авторизации[3]

  1. PAP пересылает политики и наборы политик PDP.
  2. Пользователь отправляет запрос об авторизации в PEP.
  3. PEP отправляет запрос в обработчик контекста.
  4. Обработчик контекста создает запрос в формате XACML.
  5. PDP запрашивает дополнительные атрибуты у обработчика контекста.
  6. Обработчик контекста запрашивает атрибуты у PIP.
  7. PIP получает необходимые атрибуты.
  8. PIP возвращает запрошенные атрибуты обработчику контекста.
  9. Обработчик контекста отсылает запрошенные атрибуты PDP. PDP вычисляет политики.
  10. PDP возвращает ответ в обработчик контекста.
  11. Обработчик контекста переводит ответ из формата XACML в собственный формат ответа PEP.
  12. (Не показано) На основании результата вычисления политик, полученного из ответа, PEP принимает решение о доступе и исполняет обязательства. Если доступ разрешен, PEP разрешает доступ к ресурсу, иначе запрещает.
Remove ads

Примеры политик

Суммиров вкратце
Перспектива

Авторизация с учетом даты и времени в XACML

Это правило запрещает доступ пользователям, которые не входили в систему в течение 30 дней.

В псевдокоде: Запретить, если время_сейчас > время_прошлого_доступа + 30 дней.

<xacml3:Rule RuleId="f6637b3f-3690-4cce-989c-2ce9c053d6fa" Effect="Deny">
	<xacml3:Description>Use it or lose it: this policy denies access if lastLogin is more than 30 days away from today's date</xacml3:Description>
	<xacml3:Target/>
	<xacml3:Condition >
		<xacml3:Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:any-of">
			<xacml3:Function FunctionId="urn:oasis:names:tc:xacml:1.0:function:dateTime-greater-than"/>
			<xacml3:Apply FunctionId="urn:oasis:names:tc:xacml:3.0:function:dateTime-add-dayTimeDuration">
				<xacml3:Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only">
					<xacml3:AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"  AttributeId="com.acme.user.lastLogin" DataType="http://www.w3.org/2001/XMLSchema#dateTime" MustBePresent="false"/>
				</xacml3:Apply>
				<xacml3:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#dayTimeDuration">P30D</xacml3:AttributeValue>
			</xacml3:Apply>
			<xacml3:AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment"  AttributeId="urn:oasis:names:tc:xacml:1.0:environment:current-dateTime" DataType="http://www.w3.org/2001/XMLSchema#dateTime" MustBePresent="false"/>
		</xacml3:Apply>
	</xacml3:Condition>
</xacml3:Rule>

Авторизация с учетом времени в XACML

Это правило предоставляет субъекту доступ к ресурсу, если текущее время с 9:00 до 17:00.

<xacml3:Rule RuleId="c01d7519-be21-4985-88d8-10941f44590a" Effect="Permit">
	<xacml3:Description>Allow if time between 9 and 5</xacml3:Description>
	<xacml3:Target>
		<xacml3:AnyOf>
			<xacml3:AllOf>
				<xacml3:Match MatchId="urn:oasis:names:tc:xacml:1.0:function:time-greater-than">
					<xacml3:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#time">09:00:00</xacml3:AttributeValue>
					<xacml3:AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment" AttributeId="urn:oasis:names:tc:xacml:1.0:environment:current-time" MustBePresent="false" DataType="http://www.w3.org/2001/XMLSchema#time"/>
				</xacml3:Match>
			</xacml3:AllOf>
		</xacml3:AnyOf>
		<xacml3:AnyOf>
			<xacml3:AllOf>
				<xacml3:Match MatchId="urn:oasis:names:tc:xacml:1.0:function:time-less-than">
					<xacml3:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#time">17:00:00</xacml3:AttributeValue>
					<xacml3:AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment" AttributeId="urn:oasis:names:tc:xacml:1.0:environment:current-time" MustBePresent="false" DataType="http://www.w3.org/2001/XMLSchema#time"/>
				</xacml3:Match>
			</xacml3:AllOf>
		</xacml3:AnyOf>
	</xacml3:Target>
</xacml3:Rule>


Remove ads

Примеры XACML запросов и ответов

Суммиров вкратце
Перспектива

Запрос XACML

Запрос: Алиса хочет просмотреть документ №123.

<xacml-ctx:Request ReturnPolicyIdList="true" CombinedDecision="false" xmlns:xacml-ctx="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17">
   <xacml-ctx:Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" >
      <xacml-ctx:Attribute AttributeId="actionId" IncludeInResult="true">
         <xacml-ctx:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">view</xacml-ctx:AttributeValue>
      </xacml-ctx:Attribute>
   </xacml-ctx:Attributes>
   <xacml-ctx:Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" >
      <xacml-ctx:Attribute AttributeId="resource-id" IncludeInResult="true">
         <xacml-ctx:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">doc#123</xacml-ctx:AttributeValue>
      </xacml-ctx:Attribute>
   </xacml-ctx:Attributes>
   <xacml-ctx:Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" >
      <xacml-ctx:Attribute AttributeId="user.identifier" IncludeInResult="true">
         <xacml-ctx:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Alice</xacml-ctx:AttributeValue>
      </xacml-ctx:Attribute>
   </xacml-ctx:Attributes>
</xacml-ctx:Request>

Первый элемент <Attributes> содержит атрибуты действия (прочитать), второй элемент <Attributes> содержит атрибуты ресурса, к которому субъект хочет применить указанное действие (документ №123), третий элемент <Attributes> содержит имя субъекта (Алиса).

Ответ XACML

Пример ответа XACML

Ответ: Не применимо

<xacml-ctx:Response xmlns:xacml-ctx="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17">
  <xacml-ctx:Result>
    <xacml-ctx:Decision>NotApplicable</xacml-ctx:Decision>
    <xacml-ctx:Status>
      <xacml-ctx:StatusCode Value="urn:oasis:names:tc:xacml:1.0:status:ok"/>
    </xacml-ctx:Status>
  </xacml-ctx:Result>
</xacml-ctx:Response>

Элемент <Decision> содержит результат вычисления политик (не применимо).

Пример ответа XACML с обязательством

Ответ: Разрешить, выполнить обязательство с индексом "logAccess" (доступ к журналу)

<xacml-ctx:Response xmlns:xacml-ctx="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17">
  <xacml-ctx:Result>
    <xacml-ctx:Decision>Permit</xacml-ctx:Decision>
    <xacml-ctx:Status>
      <xacml-ctx:StatusCode Value="urn:oasis:names:tc:xacml:1.0:status:ok"/>
    </xacml-ctx:Status>
    <xacml-ctx:Obligations>
      <xacml-ctx:Obligation ObligationId="logAccess">
      </xacml-ctx:Obligation>
    </xacml-ctx:Obligations>
    <xacml-ctx:PolicyIdentifierList>
      <xacml-ctx:PolicyIdReference Version="1.0">http://www.axiomatics.com/automatic-unique-id/18a9eae9-c92b-4087-b2ac-c5a33d7ff477</xacml-ctx:PolicyIdReference>
    </xacml-ctx:PolicyIdentifierList>
  </xacml-ctx:Result>
</xacml-ctx:Response>

Элемент <Decision> содержит результат вычисления политик (разрешить). Элемент <Obligations> содержит обязательства, которые нужно применить. В данном случае <Obligations> содержит один элемент <Obligation> с идентификатором "logAccess" (доступ к журналу).

Remove ads

Реализации XACML

Подробнее Название, Версия ...

Литература

  • Gertz, M. and Jajodia, S. 4.2 HACML // Handbook of Database Security: Applications and Trends. — Springer, 2007. — 591 p. ISBN 9780387485331.
  • Bertino, E. and Martino, L. and Paci, F. and Squicciarini, A. Security for Web Services and Service-Oriented Architectures. — Springer, 2009. — P. 67-75, 170. — 230 p. ISBN 9783540877424.


Ссылки

Внешние ссылки

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads