2017-01-16 83 views
1

在正式文档(3.1:http://neo4j.com/docs/operations-manual/current/security/authentication-authorization/subgraph-access-control/) 据说子图的访问控制

“例如,用户可以被允许读,但不能写,标记有雇员节点和类型的Reports_To的关系”

但是没有它写在这个页面上,而其他的如何去做。 通过“调用dbms.procedures()”,我们可以在企业版中看到更多功能,但没有任何关于定义此子图控件的信息。

我们考虑更改企业版,但如果我们确信能够去做。 任何人都可以解释我或给我的有关文件的地址

感谢

回答

2

的文档都在那里。注意:第一句:

通过使用用户定义的过程自定义角色,一个 管理员可以限制 指定的图形部分用户的访问和后续行动。

对于没有写入权限的用户来说,这种方法似乎是为他们创建适当的角色,然后创建(或使用现有的)用户定义的过程来执行允许他们执行的操作。然后将过程的权限配置到适当的级别,并将过程的角色(通​​过修改dbms.security.procedures.roles)与您先前创建的角色相关联。这允许您创建的过程由您关联的角色执行。

例如,如果HR用户没有写权限,则可以创建一个过程来创建或删除:Employee节点之间的REPORTS_TO关系。该过程需要设置为mode = WRITE,因为它需要写入权限。这通常不会由此HR用户执行,因为他们没有写权限。

但是,如果您创建了一个角色,请说'hr',并将该角色添加到此用户,并将该过程设置为可供dbms.security.procedures.roles中的hr角色访问,那么hr用户可以执行此过程,执行必要的写入操作。

总之,Neo4j的子图访问控制没有在节点或标签本身上定义,也不适用于在Cypher中执行写入语句。此访问控制特定于用户定义的过程,并允许具有某些角色(如果角色与这些过程相关联)的用户执行这些过程,即使他们通常由于其访问级别而无法访问。

编辑

,可以为你工作的最后一件事... Neo4j的具有注册transaction event handlers可对正在进行的交易进行检查和逻辑,并拒绝如果一些不符合标准的手段。我会假设你可以在这里获得用户的角色,并且可能检查某个标签上的作者操作的事务。奇怪的是,在确保文档的子图部分没有提及这一点。我自己没有尝试过这种方法(稍后我会尝试自己的测试),所以我不确定它是否能够满足您的需求,但值得一看。

+0

感谢您的回答。首先,我认为这是其他程序功能。 我之后将你的解释真实地表达出来,因为它完全不符合我们的预期。 创建一个如此难以使用的系统真的很奇怪(编码java /创建jar,部署,重新启动服务器) 我们正在寻找更具动态性的,而不是史前的,我们可能使用OrientDB 来重新编写图形层, 再次感谢! – user954156

+0

我在交易处理程序中添加了一个可能的替代方案,它也可能适用于您。 – InverseFalcon