簡體   English   中英

耶拿安全與修復

[英]Jena Security with Reification

給定此示例RDF,我如何使用耶拿安全性僅檢索用戶角色與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" .

在給定的耶拿安全性(即SecurityEvaluator)下,我不確定如何完成此操作。 謝謝。

您的問題中提供的信息最少。 我將嘗試回答並嘗試確定我所做的假設。

我使用術語“基礎圖”來表示您要查詢的圖。 這可能是多個物理圖的組合。 該圖包含將要查詢並返回給用戶的數據。

我使用的術語“安全圖”表示存儲有關安全訪問的數據的圖。

首先,我假設您具有一種將登錄用戶與該用戶有權訪問的角色相關聯的機制。 這可以是用戶角色的列表,也可以是如果用戶具有特定角色則返回true的方法。 除了實現細節之外,還有一種確定用戶具有角色的方法。

其次,我從您的問題中假設您要檢查基本圖中的每個三元組,並且每個三元組的形式化存儲在“安全圖”中。 這意味着您的安全圖將比數據圖大得多。 如果您只想限制訪問以dbo:capital為謂詞的三元組,則最好創建一個具有dbr:country的新類型,哪些組可以訪問該國家。 但是現在,我將繼續假設您將創建具有角色屬性的經過修飾的語句,並針對您希望限制的每個三元組執行此操作。

必須從SecurityEvaluator內部訪問“安全圖”(這是設置評估器的一部分)。

第三個假設數據圖由圖名稱“ urn:graph-name:data-graph”標識。

從“ urn:graph-name:data-graph”讀取三元組<dbr:Ireland,dbo:capital,dbo:Dublin>

首先將調用SecurityEvaluator.evaluate(Acton.Read,“ urn:graph-name:data-graph”)方法。 評估者應返回“ true”,以指示用戶具有對該圖的讀取權限。

第二個方法將被調用SecurityEvaluator.evaluate(Action.Read,“ urn:graph-name:data-graph”,SecTriple.ANY)。 SecurityEvaluator應該返回“ false”,以指示數據圖中的某些三元組存在限制。 如果您具有可以讀取所有數據元素的角色,則可以在此處為具有該角色的用戶返回“ true”。

最后,將調用方法SecurityEvaluator.evaluate(Action.Read,“ urn:graph-name:data-graph”,<dbr:Ireland,dbo:capital,dbo:Dublin>)。 然后,評估者應查找覆蓋<dbr:Ireland,dbo:capital,dbo:Dublin>三元組的rdf:Statement,檢索具有訪問權限的角色,將這些角色與用戶擁有的角色進行比較,以及是否存在交集返回“ true”,否則返回“ false”。

需要考慮的幾件事:

安全/權限系統通常與訪問對象的特定屬性有關,弄清楚如何使用角色存儲這些屬性通常會減小“安全圖”的大小,並使系統更有效。

使用驗證來確定需要過濾的三元組意味着,如果有人添加了一個新的三元組,請說<dbr:Ireland,dbo:capital,“ Dublin”>該三元組不會被阻止。

如果在兩個圖形中存在三元組<dbr:Ireland,dbo:capital,dbo:Dublin>,它們組合在一起就構成一個數據集,而您只過濾了數據想要的一個圖形。 這是故意的。

在此討論中,我使用了“安全圖”一詞。 我這樣做是因為您的示例使用了改進的三元組來描述數據。 不需要使用圖來存儲安全性限制。 這樣做通常更容易,因為圖形操作代碼已在手邊,但不是必需的。 任何允許您查找三元組中受限制成分的解決方案都可以使用。

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM