Gremlin查询可根据用户权限遍历节点和边存储为node / edge属性

问题描述

在Janus Graph中,我们正在尝试实现由用户许可驱动的节点和边缘的逻辑分离,我认为这并不是一个很不常见的要求,那里的人们可能已经解决了这种情况。

很遗憾,找不到最合适的解决方案来解决这个问题。

我们的Janus Graph环境:

  • 我们使用gremlin服务器实例化,并使HttpChanelizer仅可通过HTTP请求进行访问。

方法: 如果我们将权限作为SET基数的属性以及其他属性存储在节点和边缘中,则可用的选项是将gremlin查询发布到新服务(春季启动)并阻止gremlin端口(以停止允许直接将通用gremlin查询提交给gremlin服务器)。

在新服务(春季启动)方面,计划针对所有步骤(out *,in *,两个*,outE)解析具有has(“ entitlement”,textContains(“ team1”))的已提交查询和后缀*,inE *,bothE *,outV,inV-https://kelvinlawrence.net/book/Gremlin-Graph-Guide.html#walk)在查询中用于遍历或遍历图形。

就像一个非常简单的遍历查询: //从伦敦希思罗(LHR)飞往美国机场的航班

g.V().has('code','LHR').out('route').has('country','US').values('code')

仅当试图运行查询的用户被授予team1权限时,才能解析并在walk类型的每个步骤上添加权利检查。

g.V().has('entitlement','team1').has('code','LHR').out('route').has('entitlement','team1').has('country','US').values('code')

尽管不是Graph / Gremlin方面的专家,但任何实现此类权限的建议都将很有帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...