微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。