【发布时间】:2020-04-09 18:45:23
【问题描述】:
我想知道两个节点之间的关系属性是否可以引用另一个节点。我正在尝试查看是否可以使用 Neo4j 可视化 Cisco ACL,所以我得到了一些如下所示的数据:
对象组网络 Server_Group_A
网络对象主机 1.2.3.4
网络对象主机 2.3.4.5
网络对象主机 3.4.5.6
对象组网络 Server_Group_B
网络对象主机 4.3.2.1
网络对象主机 5.4.3.2
网络对象主机 6.5.4.3
对象组服务 Port_Group_A tcp
端口对象 eq 80
端口对象 eq 443
access-list Some_Interface extended permit tcp object-group Server_Group_A object-group Server_Group_B object-group Port_Group_A
到目前为止,我一直在像这样构建 Cypher 中的所有内容:
(Server1:服务器{IP:'1.2.3.4'}),
...等等...
(Server_Group_A:ObjectGroup {Name:'Server_Group_A'}),
(Server_Group_B:ObjectGroup {Name:'Server_Group_B'}),
(Port_Group_A:PortGroup {Name:'Server_Group_B'}),
(Port_80:PortObject {Port:'80'}),
(Port_443:PortObject {Port:'443'}),
(Server1)-[:MemberOf]->(Server_Group_A)
...等等...
(Port_80)-[:MemberOf]->(Port_Group_A)
...等等...
在表达 Server_Group_A 和 Server_Group_B 之间的关系以匹配 ACL 时,我是否可以将 Port_Group_A 节点作为关系的属性之一?我已经尝试过了,但我得到了一个类型错误,这是我所期待的:
(Server_Group_A)-[:ConnectedTo {端口:[Port_Group_A]}]->(Server_Group_B)
如果这不可能以我希望的方式实现,是否有人对他们将如何处理这个问题有任何建议?
【问题讨论】: