监视Orion上下文代理以创建新的XACML规则

时间:2019-01-24 15:15:37

标签: fiware fiware-orion xacml abac authzforce

我想知道是否有可能实现这个工作环境:

我正在通过PEP,PDP,PAP等构建安全的Orion上下文代理。 我希望在Orion为属性存储异常值的情况下,发送警报(例如电子邮件),并创建新的XACML规则,以便角色用户可以看到这些值(在发生这种情况之前,他不会无需获得查看权限)。

有可能吗?如果是,我该如何实现? 是否可以通过詹金斯做到这一点?

1 个答案:

答案 0 :(得分:1)

  

如果Orion存储的属性值异常,则会发送警报(例如电子邮件)

在这种情况下,用于发送电子邮件的FIWARE组件为复杂事件处理-例如Perseo

您可以设置EPL规则以发送电子邮件

  

设置XACML规则,使其仅在属性为“异常”

时才允许访问

这看起来像是标准的<Condition>子句,例如,以下内容:

<Condition>
   <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:time-greater-than-or-equal">
      <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:time-one-and-only">
         <EnvironmentAttributeSelector DataType="http://www.w3.org/2001/XMLSchema#time"
           AttributeId="urn:oasis:names:tc:xacml:1.0:environment:current-time"/>
      </Apply>
      <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#time">17:00:00</AttributeValue>
   </Apply>
</Condition>

仅允许在一天中的特定时间后执行操作。

我想您可能正在使用"urn:oasis:names:tc:xacml:1.0:function:double-greater-than"中的urn:oasis:names:tc:xacml:1.0:function:integer-greater-than"<Condition>,例如:

<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:integer-greater-than-or-equal">
   <SubjectAttributeDesignator SubjectCategory="urn:oasis:names:tc:xacml:1.0:subjectcategory:accesssubject" AttributeId="SubjectClassificationRank" DataType="http://www.w3.org/2001/XMLSchema#integer" MustBePresent="false"></SubjectAttributeDesignator>
   <ResourceAttributeDesignator AttributeId="ResourceClassificationRank" DataType="http://www.w3.org/2001/XMLSchema#integer" MustBePresent="false"></ResourceAttributeDesignator>
</Apply>

现在这是一个棘手的问题,您将需要修改PEP代理的代码,以确保可以传递“异常” 属性的值,以便Authzforce可以进行裁决。

逻辑必须是这样的:

  1. 每当调用 PEP代理时,在 PEP代理中直接调用Orion以检索 current 属性值。
  2. PEP Proxy内修改XML创建功能以添加相关属性。
  3. 致电Authzforce以检查请求是否被允许

这里的要点是 PEP代理的标准代码将没有必要的信息来允许 Authzforce 进行裁决,因此您将不得不添加更多信息。

在下面的Tutorial中发生了一个更简单的相同类型的场景-在此处,用户的电子邮件地址已添加到对 Authzforce 的请求中,您只需要应用相同的原理