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