的文檔都在那裏。注意:第一句:
通過使用用戶定義的過程和自定義角色,一個 管理員可以限制 指定的圖形部分用戶的訪問和後續行動。
對於沒有寫入權限的用戶來說,這種方法似乎是爲他們創建適當的角色,然後創建(或使用現有的)用戶定義的過程來執行允許他們執行的操作。然後將過程的權限配置到適當的級別,並將過程的角色(通過修改dbms.security.procedures.roles
)與您先前創建的角色相關聯。這允許您創建的過程由您關聯的角色執行。
例如,如果HR用戶沒有寫權限,則可以創建一個過程來創建或刪除:Employee節點之間的REPORTS_TO關係。該過程需要設置爲mode = WRITE,因爲它需要寫入權限。這通常不會由此HR用戶執行,因爲他們沒有寫權限。
但是,如果您創建了一個角色,請說'hr',並將該角色添加到此用戶,並將該過程設置爲可供dbms.security.procedures.roles
中的hr角色訪問,那麼hr用戶可以執行此過程,執行必要的寫入操作。
總之,Neo4j的子圖訪問控制沒有在節點或標籤本身上定義,也不適用於在Cypher中執行寫入語句。此訪問控制特定於用戶定義的過程,並允許具有某些角色(如果角色與這些過程相關聯)的用戶執行這些過程,即使他們通常由於其訪問級別而無法訪問。
編輯
,可以爲你工作的最後一件事... Neo4j的具有註冊transaction event handlers可對正在進行的交易進行檢查和邏輯,並拒絕如果一些不符合標準的手段。我會假設你可以在這裏獲得用戶的角色,並且可能檢查某個標籤上的作者操作的事務。奇怪的是,在確保文檔的子圖部分沒有提及這一點。我自己沒有嘗試過這種方法(稍後我會嘗試自己的測試),所以我不確定它是否能夠滿足您的需求,但值得一看。
感謝您的回答。首先,我認爲這是其他程序功能。 我之後將你的解釋真實地表達出來,因爲它完全不符合我們的預期。 創建一個如此難以使用的系統真的很奇怪(編碼java /創建jar,部署,重新啓動服務器) 我們正在尋找更具動態性的,而不是史前的,我們可能使用OrientDB 來重新編寫圖形層, 再次感謝! – user954156
我在交易處理程序中添加了一個可能的替代方案,它也可能適用於您。 – InverseFalcon