Поддержка математики времени и часового пояса в XACML 3.0
Я хотел бы получить некоторое представление о решениях процесса PDP для XACML версии 3, касающихся обработки решений на основе временных окон, особенно о том, как это работает с поддержкой полей часовых поясов, которая является частью спецификации.
Для политики я использую для определения временных событий, таких как: ЧЧ: ММ: СС-Tz:00
В качестве примера, мы могли бы поговорить о центре обработки данных, расположенном в Нью-Йорке в настоящее время в UTC -4 часа, работающем по восточному летнему времени (EDT), в то время как на западном побережье, в районе Сан-Франциско, в UTC -7 часов есть клиенты, также используя настройку DST. Кроме того, мы можем увидеть доступ из Сан-Паулу на UTC-3 без DST.
Как определить окно авторизованного доступа, чтобы охватить все услуги доставки в рабочие часы каждого места? Если мы объявим это по UTC (+00:00) или PDP выполнит необходимое преобразование во время обработки политики, например, в 18:00:00-07:00 (конец дня в Сан-Франциско), что приведет к 01:00:00 UTC в качестве окончательного лимита для доставки услуг, перевод обратно в Нью-Йорк в 21:00:00-04:00.
Я предполагаю, что запросы будут генерироваться по местному времени, также со ссылкой на местное время.
Можем ли мы продвинуть решения, основанные на центральном времени, далеко в рамках XACML PDP, или лучше применить несколько политик для каждого офиса и часового пояса, например, использовать отдельную политику для каждого города, такого как Сан-Франциско, Сан-Паулу и Новый Йорк? Тем не менее, аналогичная проблема касается поддержки азиатских часовых поясов, которые показывают доли часов. Имеется ли документация, в которой проясняются сомнения по математике времени в XACML?
Примерное правило для решений временного окна
<Rule Effect="Deny" RuleId="DenyOutsideOfficeHours">
<Target></Target>
<Condition>
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:not">
<Apply FunctionId="urn:oasis:names:tc:xacml:2.0:function:time-in-range">
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:time-one-and-only">
<AttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:environment:current-time" DataType="http://www.w3.org/2001/XMLSchema#time" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment" MustBePresent="false"></AttributeDesignator>
</Apply>
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:time-one-and-only">
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:time-bag">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#time">08:00:00-03:00</AttributeValue>
</Apply>
</Apply>
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:time-one-and-only">
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:time-bag">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#time">18:00:00-03:00</AttributeValue>
</Apply>
</Apply>
</Apply>
</Apply>
</Condition>
<ObligationExpressions>
<ObligationExpression ObligationId="obligation.displayAttributes" FulfillOn="Deny">
<AttributeAssignmentExpression AttributeId="urn:oasis:names:tc:xacml:3.0:example:attribute:text" Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">access to resource is limited to office hours between 08:00 to 18:00 GMT-3</AttributeValue>
</AttributeAssignmentExpression>
</ObligationExpression>
</ObligationExpressions>
</Rule>
1 ответ
Вы должны иметь PIP, который будет разрешать время открытия и закрытия для каждого местоположения.
Запрос XACML не будет отправлять ни одной отметки времени. Скорее запрос XACML будет выглядеть примерно так:
- Может ли Алиса сделать X в офисе Y?
PDP будет содержать политику, которая скажет Разрешить, если openTime Атрибуты openTime и closeTime будут считываться из PIP в зависимости от офиса Y. Все 3 атрибута, openTime, closeTime и currentTime нуждаются в информации о часовом поясе, чтобы можно было адекватно выполнить сравнение.