1

我想了解有关 XACML 版本 3 的 PDP 流程决策的一些见解,其中涉及基于时间窗口的决策的处理,特别是它如何与作为规范一部分的时区字段支持一起工作。

对于策略,我使用这样定义时间事件:HH:MM:SS-Tz:00

例如,我们可以谈论一个位于纽约市的数据中心,目前在东部夏令时 (EDT) 下运行在 UTC -4 小时,而在西海岸、旧金山地区在 UTC -7 小时存在客户,也使用 DST 调整。此外,我们可能会在没有 DST 的情况下在 UTC-3 看到来自圣保罗的访问。

如何定义授权访问窗口以覆盖每个地点工作时间内的所有服务交付?我们应该在 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>
4

1 回答 1

0

您必须有一个 PIP 来解决每个位置的打开和关闭时间。

XACML 请求不会发送任何时间戳。相反,XACML 请求将类似于以下内容:

  • 爱丽丝可以在 Y 办公室做 X 吗?

PDP 将包含一个策略,如果 openTime < currentTime < closeTime 则允许。

属性 openTime 和 closeTime 将从基于 office Y 的 PIP 读取。

所有 3 个属性,openTime、closeTime 和 currentTime 都需要时区信息,以便充分实现比较。

于 2017-05-10T16:57:26.993 回答