Jump to content

ХАКМЛ

ХАКМЛ
Парадигма Декларативное программирование
Разработчик Организация по развитию стандартов структурированной информации (OASIS)
Впервые появился 16 апреля 2001 г .; 23 года назад ( 16 апреля 2001 ) [1]
Лицензия ОАЗИС
Расширения имен файлов .xml, .альфа
Веб-сайт www.oasis-open.org
Основные реализации
Аксиоматика, AuthzForce
Диалекты
АЛЬФА (XACML)
Под влиянием
XML , SAML
Под влиянием
АЛЬФА (XACML)

Расширяемый язык разметки контроля доступа ( XACML ) — это на основе XML стандартный язык разметки для определения политик контроля доступа . Стандарт, опубликованный OASIS , определяет декларативный детальный язык политики управления доступом на основе атрибутов , архитектуру и модель обработки, описывающую, как оценивать запросы доступа в соответствии с правилами, определенными в политиках. [2]

XACML — это прежде всего система управления доступом на основе атрибутов . В XACML атрибуты — информация о субъекте, получающем доступ к ресурсу, ресурсе, к которому необходимо обратиться, и среде — выступают в качестве входных данных для принятия решения о том, предоставлен ли доступ или нет. [3] XACML также можно использовать для реализации управления доступом на основе ролей . [4]

В XACML принимаемые решения по управлению доступом выражаются в виде правил. Каждое Правило включает ряд условий, которые определяют, будет ли одобрен тот или иной запрос или нет. Если Правило применимо к запросу, но условия в Правиле не могут быть оценены, результат будет Неопределенным. Правила сгруппированы в Policies, а PolicySet содержит политики и, возможно, другие PolicySets. Каждый из них также включает в себя Target — простое условие, определяющее, следует ли оценивать его для данного запроса. Алгоритмы объединения можно использовать для объединения правил и политик с потенциально различающимися результатами различными способами. XACML также поддерживает выражения обязательств и рекомендаций. Обязательства определяют действия, которые необходимо выполнить во время обработки запроса, например для ведения журнала. Выражения-советы аналогичны, но их можно игнорировать. [3]

XACML разделяет функциональность контроля доступа на несколько компонентов. Каждая операционная среда, в которой используется контроль доступа, имеет точку применения политики (PEP), которая реализует функции запроса авторизации и предоставления или отказа в доступе к ресурсам. Они относятся к независимой от среды центральной точке принятия решений (PDP), которая фактически принимает решение о предоставлении доступа. PDP относится к политикам, хранящимся в точке извлечения политики (PRP). Политики управляются через точку администрирования политики (PAP). [3]

Версия 3.0 была ратифицирована OASIS в январе 2013 года. [5]

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

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

Версия 3.0 была ратифицирована OASIS в январе 2013 года.

Архитектура

[ редактировать ]

Терминология

[ редактировать ]

Ненормативная терминология (в соответствии с RFC 2904, за исключением PAP)

Сокр. Срок Описание
ПАП Точка администрирования политики Точка, которая управляет политиками авторизации доступа
ПРП Точка принятия политического решения Точка, которая оценивает запросы доступа на соответствие политикам авторизации перед выдачей решений о доступе.
ПКП Пункт соблюдения политики Точка, которая перехватывает запрос пользователя на доступ к ресурсу, отправляет запрос решения PDP для получения решения о доступе.

(т.е. доступ к ресурсу одобрен или отклонен), и действует на основании полученного решения

ПИП Информационный пункт о политике Системный объект, который действует как источник значений атрибутов (т. е. ресурс, субъект, среда).
ПРП Точка получения политики Точка, где хранятся политики авторизации доступа XACML, обычно это база данных или файловая система.
На этом изображении показана архитектура XACML и пример процесса авторизации.
На этом изображении показана архитектура XACML и пример процесса авторизации.
  1. Пользователь отправляет запрос, который перехватывается точкой применения политики (PEP).
  2. PEP преобразует запрос в запрос авторизации XACML.
  3. PEP перенаправляет запрос на авторизацию в точку принятия политических решений (PDP).
  4. PDP оценивает запрос авторизации на соответствие политикам, с которыми он настроен. Политики получаются через точку получения политики (PRP) и управляются точкой администрирования политики (PAP). При необходимости он также извлекает значения атрибутов из базовых точек информации о политике (PIP).
  5. PDP принимает решение (Разрешить/Запретить/Неприменимо/Неопределенно) и возвращает его PEP.

Элементы политики

[ редактировать ]

Конструктивные элементы

[ редактировать ]

XACML структурирован на 3 уровня элементов:

  • Набор политик,
  • Политика,
  • Правило.

Набор политик может содержать любое количество элементов политики и элементов набора политик. Политика может содержать любое количество элементов правил.

Атрибуты и категории

[ редактировать ]

Политики, наборы политик, правила и запросы — все они используют субъекты, ресурсы, среды и действия.

  • Элемент субъекта — это объект, запрашивающий доступ. Субъект имеет один или несколько атрибутов.
  • Элемент ресурса — это данные, услуга или компонент системы. Ресурс имеет один или несколько атрибутов.
  • Элемент действия определяет тип доступа, запрошенного к ресурсу. Действия имеют один или несколько атрибутов.
  • Элемент среды может опционально предоставлять дополнительную информацию.

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

Помимо проверки применимости, целевая информация также позволяет индексировать политики, что полезно, если вам нужно сохранить множество политик, а затем быстро просмотреть их, чтобы определить, какие из них применимы. Когда поступает запрос на доступ к этой услуге, PDP будет знать, где искать политики, которые могут применяться к этому запросу, поскольку политики индексируются на основе их целевых ограничений. Обратите внимание, что цель также может указывать, что она применяется к любому запросу.

Набор политик, политика и правило могут содержать целевые элементы.

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

Обязательства и консультации

[ редактировать ]

В XACML можно использовать концепцию обязательств. Обязательство — это директива от точки принятия решения о политике (PDP) к точке применения политики (PEP) о том, что должно быть выполнено до или после утверждения доступа. Если PEP не может выполнить директиву, утвержденный доступ может или не должен быть реализован. Увеличение обязательств устраняет разрыв между формальными требованиями и соблюдением политики. Пример обязательства может выглядеть следующим образом:

Access control rule:
          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)

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

Обязательства можно использовать для сценариев «разбивания стекла» или повышения доверия («вы не можете перевести 1000 долларов без двухфакторной аутентификации — вот ссылка на страницу 2FA»).

Помимо обязательств, XACML поддерживает рекомендации, которые идентичны обязательствам, с той разницей, что PEP не обязан обеспечивать соблюдение рекомендаций (отсюда и его название).

Объединение алгоритмов

[ редактировать ]

Что произойдет в XACML, если есть два правила (или политики), противоречащие друг другу? Представьте себе, например, первое правило, согласно которому менеджеры могут просматривать документы , и второе правило, согласно которому никто не может работать до 9 утра . Что, если запрос касается Алисы, пытающейся просмотреть документ в 8 утра? Какое правило побеждает? Вот что нам говорят алгоритмы объединения. Они помогают разрешать конфликты.

XACML определяет ряд алгоритмов объединения, которые могут быть идентифицированы атрибутом RuleCombiningAlgId или PolicyCombiningAlgId элементов <Policy> или <PolicySet> соответственно. Алгоритм объединения правил определяет процедуру принятия решения о доступе с учетом отдельных результатов оценки набора правил. Аналогично, алгоритм объединения политик определяет процедуру принятия решения о доступе с учетом отдельных результатов оценки набора политик.

XACML определяет длинный список функций (около 300) для управления атрибутами и сравнения их с другими атрибутами и значениями:

  • Равенство, неравенство и другие функции сопоставления
  • Арифметические функции
  • Строковые функции
  • Логические функции (и или нет)
  • Функции набора и сумки
  • Функции высшего порядка
  • Функции регулярных выражений
  • XPath-функции

Функции и их идентификаторы полностью описаны в стандарте. Функции зависят от типа, т. е. существует функция для равенства строк и другая для равенства целых чисел.

Равенство, неравенство и другие функции сопоставления

[ редактировать ]

Арифметические функции

[ редактировать ]

Обратитесь к стандарту для формального определения этой функции.

  • добавить (двойное и целое число)
  • вычесть (двойное и целое число)
  • умножить (двойное и целое число)
  • делить (двойное и целое число)
  • мод (двойной и целочисленный)
  • абс (двойной и целый)
  • круглый
  • пол

Строковые функции

[ редактировать ]

Обратитесь к стандарту для формального определения этой функции.

  • объединение строк
  • строка-начинается с
  • строка-заканчивается-с
  • строка-содержит
  • строка-подстрока

Логические функции (и или нет)

[ редактировать ]

Функции набора и сумки

[ редактировать ]

Функции регулярных выражений

[ редактировать ]

XPath-функции

[ редактировать ]

Функции высшего порядка

[ редактировать ]

Список функций высшего порядка приведен ниже. Формальное определение см. в стандарте XACML.

  • AnyOf (urn:oasis:names:tc:xacml:3.0:function:any-of)
    • параметры: AnyAtomicOrBag AnyAtomicOrBag*
    • возвращаемое значение: логическое значение
    • Описание: эта функция принимает логическую функцию и 2 или более значения атрибута или пакета. Функция высшего порядка применяет логическую функцию к остальным параметрам.
    • Пример: anyOf(function[stringEqual], allowedRoles, stringOneAndOnly(role)) вернет true, если (а) роль является однозначной, (б) в наборе атрибутов разрешенных ролей есть хотя бы одно значение, равное значению внутри роли в наборе однозначных атрибутов.
  • allOf (urn:oasis:names:tc:xacml:3.0:function:all-of)
    • параметры: AnyAtomicOrBag AnyAtomicOrBag*
    • возвращаемое значение: логическое значение
  • AnyOfAny (urn:oasis:names:tc:xacml:3.0:function:any-of-any)
    • параметры: AnyAtomicOrBag AnyAtomicOrBag*
    • возвращаемое значение: логическое значение
  • allOfAny (urn:oasis:names:tc:xacml:1.0:function:all-of-any)
    • параметры: сумка[anyAtomic] сумка[anyAtomic]
    • возвращаемое значение: логическое значение
  • AnyOfAll (urn:oasis:names:tc:xacml:1.0:function:any-of-all)
    • параметры: сумка[anyAtomic] сумка[anyAtomic]
    • возвращаемое значение: логическое значение
  • allOfAll (urn:oasis:names:tc:xacml:1.0:function:all-of-all)
    • параметры: сумка[anyAtomic] сумка[anyAtomic]
    • возвращаемое значение: логическое значение
  • карта (урна: оазис: имена: tc: xacml: 1.0: функция: карта)
    • параметры: AnyAtomicOrBag AnyAtomicOrBag*
    • возвращаемое значение: сумка[anyAtomic]

http://docs.oasis-open.org/xacml/3.0/xacml-core-v3-schema-wd-17.xsd

Типы данных

[ редактировать ]
  • http://www.w3.org/2001/XMLSchema#anyURI
  • http://www.w3.org/2001/XMLSchema#base64Binary
  • http://www.w3.org/2001/XMLSchema#boolean
  • http://www.w3.org/2001/XMLSchema#date
  • http://www.w3.org/2001/XMLSchema#dateTime
  • http://www.w3.org/2001/XMLSchema#dayTimeDuration
  • http://www.w3.org/2001/XMLSchema#double
  • http://www.w3.org/2001/XMLSchema#hexBinary
  • http://www.w3.org/2001/XMLSchema#integer
  • http://www.w3.org/2001/XMLSchema#string
  • http://www.w3.org/2001/XMLSchema#time
  • http://www.w3.org/2001/XMLSchema#yearMonthDuration
  • урна: оазис: имена: tc: xacml: 1.0: тип данных: rfc822Name
  • урна: оазис: имена: tc: xacml: 1.0: тип данных: x500Name
  • урна: оазис: имена: tc: xacml: 2.0: тип данных: dnsName
  • урна: оазис: имена: tc: xacml: 2.0: тип данных: ipAddress
  • урна: оазис: имена: tc: xacml: 3.0: тип данных: xpathExpression

Новое в XACML 3.0

[ редактировать ]

Новые профили

[ редактировать ]

В XACML 3.0 представлены административное делегирование, профиль JSON XACML (запрос/ответ), профиль REST XACML, профиль множественного решения XACML и многие другие.

Делегация
[ редактировать ]

Реализация делегирования является новой в XACML 3.0. Механизм делегирования используется для поддержки децентрализованного администрирования политик доступа. Он позволяет органу власти (делегатору) делегировать все или часть своих собственных или чужих полномочий другому пользователю (делегату) без необходимости внесения изменений в корневую политику.

Это связано с тем, что в этой модели делегирования права делегирования отделены от прав доступа. Вместо этого они называются политиками административного контроля. Политики контроля доступа и администрирования работают вместе, как в следующем сценарии:

Многие сервисы партнерства компаний защищены системой контроля доступа. В системе реализованы следующие центральные правила для защиты своих ресурсов и разрешения делегирования:

Access control rules:

              Allow access
                    to resource with attribute WebService 
                    if subject is Employee and action is read or write. 
              
Administration control rules:

              Allow delegation of access control rule #1
                      to subjects with attribute Consultant.
              Conditions: 
                         delegation must expire within 6 months,
                         resource must not have attribute StrictlyInternal.
               

(Атрибуты можно получить из внешнего источника, например, из каталога LDAP.)

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

Делегатор (в данном случае руководитель) может иметь право делегировать консультантам только ограниченный набор прав доступа.

Другие особенности

[ редактировать ]

Другие новые возможности XACML 3.0 перечислены по адресу http://www.webfarmr.eu/2010/07/enhancements-and-new-features-in-xacml-3-axiomatics/.

TC XACML также публикует список изменений здесь: http://wiki.oasis-open.org/xacml/DifferencesBetweenXACML2.0AndXACML3.0.

Примеры правил

[ редактировать ]

Авторизация по дате и времени в XACML

[ редактировать ]

Это правило реализует парадигму контроля доступа «используй-потеряй». Если пользователь не заходит в систему в течение 30 дней, он теряет доступ.

В псевдокоде: запретить, если currentDateTime > LastLogin + 30 дней.

<Rule RuleId="f6637b3f-3690-4cce-989c-2ce9c053d6fa" Effect="Deny">
	<Description>Use it or lose it: this policy denies access if lastLogin is more than 30 days away from today's date</Description>
	<Target/>
	<Condition>
		<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:any-of">
			<Function FunctionId="urn:oasis:names:tc:xacml:1.0:function:dateTime-greater-than"/>
			<Apply FunctionId="urn:oasis:names:tc:xacml:3.0:function:dateTime-add-dayTimeDuration">
				<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only">
					<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"/>
				</Apply>
				<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#dayTimeDuration">P30D</AttributeValue>
			</Apply>
			<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"/>
		</Apply>
	</Condition>
</Rule>

Авторизация по времени в XACML

[ редактировать ]

Это правило предоставляет доступ, если текущее время больше 9 утра и меньше 17 вечера.

<Rule RuleId="c01d7519-be21-4985-88d8-10941f44590a" Effect="Permit">
	<Description>Allow if time between 9 and 5</Description>
	<Target>
		<AnyOf>
			<AllOf>
				<Match MatchId="urn:oasis:names:tc:xacml:1.0:function:time-greater-than">
					<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#time">09:00:00</AttributeValue>
					<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"/>
				</Match>
			</AllOf>
		</AnyOf>
		<AnyOf>
			<AllOf>
				<Match MatchId="urn:oasis:names:tc:xacml:1.0:function:time-less-than">
					<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#time">17:00:00</AttributeValue>
					<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"/>
				</Match>
			</AllOf>
		</AnyOf>
	</Target>
</Rule>

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

[ редактировать ]

Запрос XACML 3.0

[ редактировать ]
<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>

Ответы XACML 3.0

[ редактировать ]

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

[ редактировать ]
<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>

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

[ редактировать ]

Следующее содержит блок «Обязательства». Обязательства — это утверждения, которые могут быть возвращены вместе с решением, чтобы обогатить поток решений. В этом примере PEP должен зарегистрировать факт предоставления доступа.

<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>

Профиль множественных решений XACML 3.0

[ редактировать ]

По умолчанию PDP обрабатывает один запрос за раз, например «Может ли Алиса просмотреть элемент № 1?». Затем НДП отвечает одним решением. Однако иногда необходимо отправить несколько запросов за один раз, например: «Может ли Алиса просмотреть/редактировать/удалить элементы №1, №2, №3?». Профиль множественного решения XACML допускает этот вариант использования. PDP обычно рассчитывает произведение всех комбинаций, т.е. в вышеупомянутом примере в одном ответе будет возвращено 1 x 3 x 3 = 9 решений.

Пример запроса JSON для профиля множественного решения

[ редактировать ]

Способ включения MDP — это отправка массива объектов любой из категорий, а не массива из одного объекта (или просто объекта). Например, AccessSubject — это объект, а Resource — это массив объектов. Последнее запустит процесс MDP в PDP, поддерживающих профиль. Обратите также внимание на использование атрибута IncludeInResult, который сообщает PDP о необходимости вернуть атрибут XACML и его значение в ответе, чтобы решения могли быть сопоставлены с соответствующими значениями атрибута.

{
  "Request": {
    "ReturnPolicyIdList": true,
    "AccessSubject": {
      "Attribute": [{
        "AttributeId": "com.acme.user.username",
        "Value": "Alice"
      }]
    },
    "Resource": [{
      "Attribute": [{
        "AttributeId": "com.acme.objectType",
        "Value": "record"
      }, {
        "AttributeId": "com.acme.record.recordId",
        "Value": "123",
        "IncludeInResult": true
      }]
    },{
      "Attribute": [{
        "AttributeId": "com.acme.objectType",
        "Value": "record"
      }, {
        "AttributeId": "com.acme.record.recordId",
        "Value": "124",
        "IncludeInResult": true
      }]
    },{
      "Attribute": [{
        "AttributeId": "com.acme.objectType",
        "Value": "record"
      }, {
        "AttributeId": "com.acme.record.recordId",
        "Value": "125",
        "IncludeInResult": true
      }]
    }],
    "Action": [{
      "Attribute": [{
        "AttributeId": "com.acme.action",
        "Value": "view",
        "IncludeInResult": true
      }]
    },{
      "Attribute": [{
        "AttributeId": "com.acme.action",
        "Value": "edit",
        "IncludeInResult": true
      }]
    },{
      "Attribute": [{
        "AttributeId": "com.acme.action",
        "Value": "delete",
        "IncludeInResult": true
      }]
    }]
  }
}

Пример ответа JSON для профиля множественного решения

[ редактировать ]
{
  "Response": [
    {
      "Decision": "Deny",
      "Status": {
        "StatusCode": {
          "Value": "urn:oasis:names:tc:xacml:1.0:status:ok"
        }
      },
      "AssociatedAdvice": {
        "Id": "com.acme.message",
        "AttributeAssignment": [
          {
            "AttributeId": "com.acme.messageContent",
            "Value": "Access denied - insufficient clearance.",
            "Category": "urn:oasis:names:tc:xacml:3.0:attribute-category:environment",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          },
          {
            "AttributeId": "com.acme.user.clearance",
            "Value": "1",
            "Category": "urn:oasis:names:tc:xacml:1.0:subject-category:access-subject",
            "DataType": "http://www.w3.org/2001/XMLSchema#integer"
          },
          {
            "AttributeId": "com.acme.record.classification",
            "Value": "3",
            "Category": "urn:oasis:names:tc:xacml:3.0:attribute-category:resource",
            "DataType": "http://www.w3.org/2001/XMLSchema#integer"
          }
        ]
      },
      "Category": [
        {
          "CategoryId": "urn:oasis:names:tc:xacml:3.0:attribute-category:resource",
          "Attribute": {
            "AttributeId": "com.acme.record.recordId",
            "Value": "125",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          }
        },
        {
          "CategoryId": "urn:oasis:names:tc:xacml:3.0:attribute-category:action",
          "Attribute": {
            "AttributeId": "com.acme.action",
            "Value": "view",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          }
        }
      ],
      "PolicyIdentifierList": {
        "PolicyIdReference": [
          {
            "Id": "311a93c0-6e4c-47a0-8e05-76feb39f25e0",
            "Version": "1"
          },
          {
            "Id": "c6b75be8-f3cb-4bda-9b63-812a1f7e5fae",
            "Version": "1"
          }
        ],
        "PolicySetIdReference": [
          {
            "Id": "1016337f-f5f8-4ed4-bd4e-9a2be01fa211",
            "Version": "1"
          },
          {
            "Id": "http://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54",
            "Version": "1.0"
          }
        ]
      }
    },
    {
      "Decision": "Deny",
      "Status": {
        "StatusCode": {
          "Value": "urn:oasis:names:tc:xacml:1.0:status:ok"
        }
      },
      "AssociatedAdvice": {
        "Id": "com.acme.message",
        "AttributeAssignment": [
          {
            "AttributeId": "com.acme.messageContent",
            "Value": "Access denied - insufficient clearance.",
            "Category": "urn:oasis:names:tc:xacml:3.0:attribute-category:environment",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          },
          {
            "AttributeId": "com.acme.user.clearance",
            "Value": "1",
            "Category": "urn:oasis:names:tc:xacml:1.0:subject-category:access-subject",
            "DataType": "http://www.w3.org/2001/XMLSchema#integer"
          },
          {
            "AttributeId": "com.acme.record.classification",
            "Value": "2",
            "Category": "urn:oasis:names:tc:xacml:3.0:attribute-category:resource",
            "DataType": "http://www.w3.org/2001/XMLSchema#integer"
          }
        ]
      },
      "Category": [
        {
          "CategoryId": "urn:oasis:names:tc:xacml:3.0:attribute-category:resource",
          "Attribute": {
            "AttributeId": "com.acme.record.recordId",
            "Value": "124",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          }
        },
        {
          "CategoryId": "urn:oasis:names:tc:xacml:3.0:attribute-category:action",
          "Attribute": {
            "AttributeId": "com.acme.action",
            "Value": "view",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          }
        }
      ],
      "PolicyIdentifierList": {
        "PolicyIdReference": [
          {
            "Id": "311a93c0-6e4c-47a0-8e05-76feb39f25e0",
            "Version": "1"
          },
          {
            "Id": "c6b75be8-f3cb-4bda-9b63-812a1f7e5fae",
            "Version": "1"
          }
        ],
        "PolicySetIdReference": [
          {
            "Id": "1016337f-f5f8-4ed4-bd4e-9a2be01fa211",
            "Version": "1"
          },
          {
            "Id": "http://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54",
            "Version": "1.0"
          }
        ]
      }
    },
    {
      "Decision": "Deny",
      "Status": {
        "StatusCode": {
          "Value": "urn:oasis:names:tc:xacml:1.0:status:ok"
        }
      },
      "Category": [
        {
          "CategoryId": "urn:oasis:names:tc:xacml:3.0:attribute-category:resource",
          "Attribute": {
            "AttributeId": "com.acme.record.recordId",
            "Value": "123",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          }
        },
        {
          "CategoryId": "urn:oasis:names:tc:xacml:3.0:attribute-category:action",
          "Attribute": {
            "AttributeId": "com.acme.action",
            "Value": "edit",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          }
        }
      ],
      "PolicyIdentifierList": {
        "PolicyIdReference": {
          "Id": "c6b75be8-f3cb-4bda-9b63-812a1f7e5fae",
          "Version": "1"
        },
        "PolicySetIdReference": [
          {
            "Id": "1016337f-f5f8-4ed4-bd4e-9a2be01fa211",
            "Version": "1"
          },
          {
            "Id": "http://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54",
            "Version": "1.0"
          }
        ]
      }
    },
    {
      "Decision": "Deny",
      "Status": {
        "StatusCode": {
          "Value": "urn:oasis:names:tc:xacml:1.0:status:ok"
        }
      },
      "Category": [
        {
          "CategoryId": "urn:oasis:names:tc:xacml:3.0:attribute-category:resource",
          "Attribute": {
            "AttributeId": "com.acme.record.recordId",
            "Value": "123",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          }
        },
        {
          "CategoryId": "urn:oasis:names:tc:xacml:3.0:attribute-category:action",
          "Attribute": {
            "AttributeId": "com.acme.action",
            "Value": "delete",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          }
        }
      ],
      "PolicyIdentifierList": {
        "PolicyIdReference": {
          "Id": "c6b75be8-f3cb-4bda-9b63-812a1f7e5fae",
          "Version": "1"
        },
        "PolicySetIdReference": [
          {
            "Id": "1016337f-f5f8-4ed4-bd4e-9a2be01fa211",
            "Version": "1"
          },
          {
            "Id": "http://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54",
            "Version": "1.0"
          }
        ]
      }
    },
    {
      "Decision": "Deny",
      "Status": {
        "StatusCode": {
          "Value": "urn:oasis:names:tc:xacml:1.0:status:ok"
        }
      },
      "AssociatedAdvice": {
        "Id": "com.acme.message",
        "AttributeAssignment": [
          {
            "AttributeId": "com.acme.messageContent",
            "Value": "Access denied - insufficient clearance.",
            "Category": "urn:oasis:names:tc:xacml:3.0:attribute-category:environment",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          },
          {
            "AttributeId": "com.acme.user.clearance",
            "Value": "1",
            "Category": "urn:oasis:names:tc:xacml:1.0:subject-category:access-subject",
            "DataType": "http://www.w3.org/2001/XMLSchema#integer"
          },
          {
            "AttributeId": "com.acme.record.classification",
            "Value": "3",
            "Category": "urn:oasis:names:tc:xacml:3.0:attribute-category:resource",
            "DataType": "http://www.w3.org/2001/XMLSchema#integer"
          }
        ]
      },
      "Category": [
        {
          "CategoryId": "urn:oasis:names:tc:xacml:3.0:attribute-category:resource",
          "Attribute": {
            "AttributeId": "com.acme.record.recordId",
            "Value": "125",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          }
        },
        {
          "CategoryId": "urn:oasis:names:tc:xacml:3.0:attribute-category:action",
          "Attribute": {
            "AttributeId": "com.acme.action",
            "Value": "delete",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          }
        }
      ],
      "PolicyIdentifierList": {
        "PolicyIdReference": [
          {
            "Id": "311a93c0-6e4c-47a0-8e05-76feb39f25e0",
            "Version": "1"
          },
          {
            "Id": "c6b75be8-f3cb-4bda-9b63-812a1f7e5fae",
            "Version": "1"
          }
        ],
        "PolicySetIdReference": [
          {
            "Id": "1016337f-f5f8-4ed4-bd4e-9a2be01fa211",
            "Version": "1"
          },
          {
            "Id": "http://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54",
            "Version": "1.0"
          }
        ]
      }
    },
    {
      "Decision": "Deny",
      "Status": {
        "StatusCode": {
          "Value": "urn:oasis:names:tc:xacml:1.0:status:ok"
        }
      },
      "AssociatedAdvice": {
        "Id": "com.acme.message",
        "AttributeAssignment": [
          {
            "AttributeId": "com.acme.messageContent",
            "Value": "Access denied - insufficient clearance.",
            "Category": "urn:oasis:names:tc:xacml:3.0:attribute-category:environment",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          },
          {
            "AttributeId": "com.acme.user.clearance",
            "Value": "1",
            "Category": "urn:oasis:names:tc:xacml:1.0:subject-category:access-subject",
            "DataType": "http://www.w3.org/2001/XMLSchema#integer"
          },
          {
            "AttributeId": "com.acme.record.classification",
            "Value": "3",
            "Category": "urn:oasis:names:tc:xacml:3.0:attribute-category:resource",
            "DataType": "http://www.w3.org/2001/XMLSchema#integer"
          }
        ]
      },
      "Category": [
        {
          "CategoryId": "urn:oasis:names:tc:xacml:3.0:attribute-category:resource",
          "Attribute": {
            "AttributeId": "com.acme.record.recordId",
            "Value": "125",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          }
        },
        {
          "CategoryId": "urn:oasis:names:tc:xacml:3.0:attribute-category:action",
          "Attribute": {
            "AttributeId": "com.acme.action",
            "Value": "edit",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          }
        }
      ],
      "PolicyIdentifierList": {
        "PolicyIdReference": [
          {
            "Id": "311a93c0-6e4c-47a0-8e05-76feb39f25e0",
            "Version": "1"
          },
          {
            "Id": "c6b75be8-f3cb-4bda-9b63-812a1f7e5fae",
            "Version": "1"
          }
        ],
        "PolicySetIdReference": [
          {
            "Id": "1016337f-f5f8-4ed4-bd4e-9a2be01fa211",
            "Version": "1"
          },
          {
            "Id": "http://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54",
            "Version": "1.0"
          }
        ]
      }
    },
    {
      "Decision": "Deny",
      "Status": {
        "StatusCode": {
          "Value": "urn:oasis:names:tc:xacml:1.0:status:ok"
        }
      },
      "AssociatedAdvice": {
        "Id": "com.acme.message",
        "AttributeAssignment": [
          {
            "AttributeId": "com.acme.messageContent",
            "Value": "Access denied - insufficient clearance.",
            "Category": "urn:oasis:names:tc:xacml:3.0:attribute-category:environment",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          },
          {
            "AttributeId": "com.acme.user.clearance",
            "Value": "1",
            "Category": "urn:oasis:names:tc:xacml:1.0:subject-category:access-subject",
            "DataType": "http://www.w3.org/2001/XMLSchema#integer"
          },
          {
            "AttributeId": "com.acme.record.classification",
            "Value": "2",
            "Category": "urn:oasis:names:tc:xacml:3.0:attribute-category:resource",
            "DataType": "http://www.w3.org/2001/XMLSchema#integer"
          }
        ]
      },
      "Category": [
        {
          "CategoryId": "urn:oasis:names:tc:xacml:3.0:attribute-category:resource",
          "Attribute": {
            "AttributeId": "com.acme.record.recordId",
            "Value": "124",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          }
        },
        {
          "CategoryId": "urn:oasis:names:tc:xacml:3.0:attribute-category:action",
          "Attribute": {
            "AttributeId": "com.acme.action",
            "Value": "delete",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          }
        }
      ],
      "PolicyIdentifierList": {
        "PolicyIdReference": [
          {
            "Id": "311a93c0-6e4c-47a0-8e05-76feb39f25e0",
            "Version": "1"
          },
          {
            "Id": "c6b75be8-f3cb-4bda-9b63-812a1f7e5fae",
            "Version": "1"
          }
        ],
        "PolicySetIdReference": [
          {
            "Id": "1016337f-f5f8-4ed4-bd4e-9a2be01fa211",
            "Version": "1"
          },
          {
            "Id": "http://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54",
            "Version": "1.0"
          }
        ]
      }
    },
    {
      "Decision": "Deny",
      "Status": {
        "StatusCode": {
          "Value": "urn:oasis:names:tc:xacml:1.0:status:ok"
        }
      },
      "Category": [
        {
          "CategoryId": "urn:oasis:names:tc:xacml:3.0:attribute-category:resource",
          "Attribute": {
            "AttributeId": "com.acme.record.recordId",
            "Value": "123",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          }
        },
        {
          "CategoryId": "urn:oasis:names:tc:xacml:3.0:attribute-category:action",
          "Attribute": {
            "AttributeId": "com.acme.action",
            "Value": "view",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          }
        }
      ],
      "PolicyIdentifierList": {
        "PolicyIdReference": {
          "Id": "c6b75be8-f3cb-4bda-9b63-812a1f7e5fae",
          "Version": "1"
        },
        "PolicySetIdReference": [
          {
            "Id": "1016337f-f5f8-4ed4-bd4e-9a2be01fa211",
            "Version": "1"
          },
          {
            "Id": "http://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54",
            "Version": "1.0"
          }
        ]
      }
    },
    {
      "Decision": "Deny",
      "Status": {
        "StatusCode": {
          "Value": "urn:oasis:names:tc:xacml:1.0:status:ok"
        }
      },
      "AssociatedAdvice": {
        "Id": "com.acme.message",
        "AttributeAssignment": [
          {
            "AttributeId": "com.acme.messageContent",
            "Value": "Access denied - insufficient clearance.",
            "Category": "urn:oasis:names:tc:xacml:3.0:attribute-category:environment",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          },
          {
            "AttributeId": "com.acme.user.clearance",
            "Value": "1",
            "Category": "urn:oasis:names:tc:xacml:1.0:subject-category:access-subject",
            "DataType": "http://www.w3.org/2001/XMLSchema#integer"
          },
          {
            "AttributeId": "com.acme.record.classification",
            "Value": "2",
            "Category": "urn:oasis:names:tc:xacml:3.0:attribute-category:resource",
            "DataType": "http://www.w3.org/2001/XMLSchema#integer"
          }
        ]
      },
      "Category": [
        {
          "CategoryId": "urn:oasis:names:tc:xacml:3.0:attribute-category:resource",
          "Attribute": {
            "AttributeId": "com.acme.record.recordId",
            "Value": "124",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          }
        },
        {
          "CategoryId": "urn:oasis:names:tc:xacml:3.0:attribute-category:action",
          "Attribute": {
            "AttributeId": "com.acme.action",
            "Value": "edit",
            "DataType": "http://www.w3.org/2001/XMLSchema#string"
          }
        }
      ],
      "PolicyIdentifierList": {
        "PolicyIdReference": [
          {
            "Id": "311a93c0-6e4c-47a0-8e05-76feb39f25e0",
            "Version": "1"
          },
          {
            "Id": "c6b75be8-f3cb-4bda-9b63-812a1f7e5fae",
            "Version": "1"
          }
        ],
        "PolicySetIdReference": [
          {
            "Id": "1016337f-f5f8-4ed4-bd4e-9a2be01fa211",
            "Version": "1"
          },
          {
            "Id": "http://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54",
            "Version": "1.0"
          }
        ]
      }
    }
  ]
}

Ориентация на разработчиков

[ редактировать ]

В 2013 и 2014 годах технический комитет XACML сосредоточился на разработке новых профилей для облегчения интеграции разработчиков. К ним относятся:

  • REST - профиль XACML, написанный Ремоном Синнемой из EMC.
  • Профиль XACML в формате JSON , написанный Дэвидом Броссардом из Axiomatics.
  • ALFA - профиль XACML был написан Пабло Джамбиаджи, Шриджитом Наиром и Дэвидом Броссардом из Axiomatics.

Все три профиля были представлены на саммите Cloud Identity Summit 2014 в Монтерее, штат Калифорния. Используя эти профили, интеграция детальной авторизации в приложения становится намного проще.

АЛЬФА-профиль XACML

[ редактировать ]

ALFA означает «Сокращенный язык авторизации». Это упрощенный синтаксис, используемый для реализации политик контроля доступа на основе политик. Примеры можно найти в основной статье .

JSON-профиль XACML

[ редактировать ]

Профиль JSON XACML упрощает интеграцию между PEP и PDP.

Пример запроса JSON

[ редактировать ]
 {
    "Request": {
        "AccessSubject": {
            "Attribute": [
                {
                    "AttributeId": "com.acme.user.employeeId",
                    "Value": "Alice"
                }
            ]
        },
        "Resource": {
            "Attribute": [
                {
                    "AttributeId": "com.acme.record.recordId",
                    "Value": "123"
                },
                {
                    "AttributeId": "com.acme.object.objectType",
                    "Value": "record"
                }
            ]
        },
        "Action": {
            "Attribute": [
                {
                    "AttributeId": "com.acme.action.actionId",
                    "Value": "view"
                }
            ]
        },
        "Environment": {
            "Attribute": []
        }
    }
 }

Пример ответа в формате JSON

[ редактировать ]
 {
  "Response" : {
    "Decision" : "Permit",
    "Status" : {
      "StatusCode" : {
        "Value" : "urn:oasis:names:tc:xacml:1.0:status:ok"
      }
    }
  }
 }

XACML и другие стандарты

[ редактировать ]

XACML и агент открытой политики

[ редактировать ]

XACML почти полностью представляет собой язык определения политики , основанный на XML и XSLT , определенный открытой спецификацией OASIS . Спецификация XACML не охватывает разработку или реализацию точки принятия решения о политике (PDP), а только язык политики, который они используют. Многие проприетарные PDP и PDP с открытым исходным кодом используют XACML в качестве языка определения политики.

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

Языком определения политики OPA является (Rego), который представляет собой неполный по Тьюрингу язык на основе JSON, основанный на Datalog.

Политики, написанные на XACML, можно перевести в Rego и наоборот.

Пример межкорпоративной федерации, когда два предприятия объединяются с использованием SAML и двух служб токенов безопасности (STS), создавая круг доверия. SAML на этом рисунке используется для обмена идентификационными данными/виртуализации. XACML используется на стороне сервера, чтобы определить, следует ли предоставить доступ к функциям приложения (управление функциональным доступом) и данным, лежащим в его основе (управление доступом к данным).
Пример межкорпоративной федерации, когда два предприятия объединяются с использованием SAML и двух служб токенов безопасности (STS), создавая круг доверия. SAML на этом рисунке используется для обмена идентификационными данными/виртуализации. XACML используется на стороне сервера, чтобы определить, следует ли предоставить доступ к функциям приложения (управление функциональным доступом) и данным, лежащим в его основе (управление доступом к данным).

SAML — это единый вход для идентификации и стандарт федерации, используемый для аутентификации. SAML используется как общий формат токена идентификации между различными приложениями. SAML и XACML определены OASIS . SAML и XACML были разработаны для взаимодействия, где SAML используется для передачи идентификационной информации/виртуальных удостоверений, а XACML используется для управления логикой управления доступом посредством политик.

OAuth 2.0 считается стандартом авторизации. Он отличается от XACML по своему происхождению, назначению и применению. OAuth — это:

  • делегированное управление доступом: я, пользователь, делегирую другому пользователю или сервису доступ к ресурсу, которым я владею. Например, через OAuth я предоставляю Twitter (сервису) возможность публиковать сообщения на моей стене Facebook (ресурсе).
  • пароля обработка анти-шаблона . Всякий раз, когда вы хотите интегрировать две службы вместе, в традиционной, устаревшей модели вы должны предоставить службе B свои учетные данные пользователя в службе A, чтобы служба B могла выдавать себя за вас с помощью службы A. Конечно, это сопряжено со многими рисками. Использование OAuth устраняет проблемы с этими шаблонами и позволяет пользователю контролировать, что служба B может делать от имени пользователя со службой A.
  • HTTP-сервисы/ресурсы
  • управление одобрением владельца (пользователя)

XACML не обрабатывает одобрение пользователей, делегированный доступ или управление паролями. XACML просто предоставляет:

  • Архитектура контроля доступа с понятием точки принятия решения о политике (PDP), как обсуждалось ранее, и точки применения политики (PEP).
  • язык политики, с помощью которого можно выразить широкий спектр политик контроля доступа, включая политики, которые могут использовать согласия, обрабатываемые/определяемые через OAuth.

XACML и OAuth можно объединить, чтобы обеспечить более комплексный подход к авторизации.

См. также

[ редактировать ]
  1. ^ Бест, Карл (16 апреля 2001 г.). «ТК OASIS приглашает к участию: XACML» . ОАЗИС . Проверено 31 октября 2016 г.
  2. ^ "чистый-xacml" . www.axiomatics.com . Проверено 27 апреля 2016 г.
  3. ^ Jump up to: а б с Феррайоло, Дэвид; Чандрамули, Рамасвами; Ху, Винсент; Кун, Рик (октябрь 2016 г.). Сравнение стандартов управления доступом на основе атрибутов (ABAC) для приложений службы данных (отчет). Национальный институт стандартов и технологий . дои : 10.6028/NIST.SP.800-178 .
  4. ^ См., например Де ла Роза Альгарин, Альберто; Зиминский, Тимотеус Б.; Демурджян 1, Стивен А.; Куикендалл, Роберт; Ривера Санчес, Яира К. (2013). Определение и применение политик безопасности на основе ролей XACML в рамках платформы безопасности XML . Материалы 9-й Международной конференции по информационным веб-системам и технологиям. дои : 10.5220/0004366200160025 . {{cite conference}}: CS1 maint: числовые имена: список авторов ( ссылка )
  5. ^ Расширяемый язык разметки контроля доступа (XACML) V3.0 утвержден как стандарт OASIS , Расширяемый язык разметки контроля доступа (XACML) V3.0 утвержден как стандарт OASIS.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 0cd06433f1c01f5d1c732fd648e9db14__1710130980
URL1:https://arc.ask3.ru/arc/aa/0c/14/0cd06433f1c01f5d1c732fd648e9db14.html
Заголовок, (Title) документа по адресу, URL1:
XACML - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)