【问题标题】:Jena Security with Reification耶拿安全与物化
【发布时间】:2014-12-30 13:09:48
【问题描述】:

鉴于此示例 RDF,我如何使用 jena 安全性仅检索用户角色与 ex:role 匹配的值?

_:statement rdf:type rdf:Statement .
_:statement rdf:subject dbr:Ireland .
_:statement rdf:predicate dbo:capital .
_:statement rdf:object dbo:Dublin .
_:statement ex:role "ROLEA", "ROLEB", "ROLEC" .

_:statement rdf:type rdf:Statement .
_:statement rdf:subject dbr:Canada.
_:statement rdf:predicate dbo:capital .
_:statement rdf:object dbo:Ottawa .
_:statement ex:role "ROLEA" .

我不确定如何在给定 jena Security(即 SecurityEvaluator)的情况下完成此操作。谢谢。

【问题讨论】:

标签: rdf jena semantic-web tdb


【解决方案1】:

您的问题中提供的信息很少。我将尝试回答并尝试确定我所做的假设。

我使用术语“基本图”来表示您正在查询的图。这可能是多个物理图的组合。它是包含将被查询并返回给用户的数据的图。

我使用术语“安全图”来表示存储有关安全访问的数据的图。

首先我假设您有一种机制可以将登录用户与用户有权访问的角色相关联。这可能是用户的角色列表,或者如果用户具有特定角色,则返回 true 的方法。除了实现细节之外,还有一种方法可以确定用户是否具有角色。

其次,我从您的问题中假设您要检查基础图中的每个三元组,并且每个三元组的具体化都存储在“安全图”中。这意味着您的安全图将比您的数据图大得多。如果您只对限制对具有谓词 dbo:capital 的三元组的访问感兴趣,那么创建一个具有 dbr:country 的新类型可能会更好,哪些组可以访问该国家/地区。但是现在我将继续假设您将使用角色属性创建具体化语句,并且您将为您有兴趣限制的每个三元组执行此操作。

“安全图”必须可从 SecurityEvaluator 中访问(这是设置评估器的一部分)。

第三个假设,数据图由图名“urn:graph-name:data-graph”标识。

当三元组 从 "urn:graph-name:data-graph" 中读取时

SecurityEvaluator.evaluate(Acton.Read, "urn:graph-name:data-graph" ) 方法将首先被调用。 Evaluator 应返回“true”以指示用户对图表具有读取权限。

第二个方法 SecurityEvaluator.evaluate(Action.Read, "urn:graph-name:data-graph", SecTriple.ANY ) 将被调用。 SecurityEvaluator 应返回“false”以指示数据图中的某些三元组存在限制。如果您的角色可以读取所有数据元素,您可以在此处为具有该角色的用户返回“true”。

最后是SecurityEvaluator.evaluate(Action.Read, "urn:graph-name:data-graph", ) 将被调用。然后,评估者应查找涵盖 三元组的 rdf:Statement,检索有权访问的角色,将这些角色与用户拥有的角色进行比较,以及是否存在交集返回“真”,否则返回“假”。

需要考虑的几点:

安全/权限系统通常关注对对象特定属性的访问,研究如何使用角色存储这些属性通常会减小“安全图”的大小,并使系统更加高效。

使用具体化来识别需要过滤的三元组意味着如果有人添加一个新的三元组比如说 三元组不会被阻止。

如果三元组 存在于 2 个图形中,它们组合成一个数据集,并且您只过滤数据会喜欢的一个图形。这是故意的。

在本次讨论中,我使用了术语“安全图”。我这样做是因为您的示例使用具体三元组来描述数据。不需要使用图表来存储安全限制。这样做通常更容易,因为图形操作代码已经在手边,但这不是必需的。任何允许您查找三元组的受限组件的解决方案都可以使用。

我希望这会有所帮助。

【讨论】:

  • 回复了用户邮件列表。解决此问题后,我将更新答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多