make-graph 运算符

适用于:✅Azure 数据资源管理器Azure MonitorMicrosoft Sentinel

make-graph 运算符根据边和节点的表格输入生成图形结构。

语法

Edges | make-graph SourceNodeId --> TargetNodeId [ with Nodes1 on NodeId1 [, Nodes2 on NodeId2 ]]

参数

客户 类型​​ 必需 说明
Edges string ✔️ 包含图形边的表格源,每一行表示图形中的边。
SourceNodeId string ✔️ Edges 中包含边的源节点 ID 的列。
TargetNodeId string ✔️ Edges 中包含边的目标节点 ID 的列。
节点 string 包含图形中节点属性的表格表达式。
NodesId string Nodes 中包含节点 ID 的列。

返回

make-graph 运算符返回图形表达式,并且必须后跟图形运算符。 源 Edges 表达式中的每一行都会成为图形的一个边,其中包含作为行的列值的属性。 节点表格表达式中的每一行都会成为图形中的一个节点,其中包含作为行的列值的属性。 出现在 Edges 表中但在节点表中没有相应行的节点将被创建为具有相应节点 ID 和空属性的节点。

注意

每个节点都有唯一标识符。 如果 Nodes1Nodes2 表中都显示相同的节点 ID,则通过合并其属性来创建单个节点。 如果同一节点的属性值存在冲突,则任意选择其中一个值。

示例

以下示例从边和节点表生成图形。 节点表示人员和系统,边表示节点之间的不同关系。 make-graph 运算符生成图形。 然后,使用图形模式调用 graph-match,搜索“Trent”系统节点的攻击路径。

let nodes = datatable(name:string, type:string, age:int) 
[ 
  "Alice", "Person", 23,  
  "Bob", "Person", 31,  
  "Eve", "Person", 17,  
  "Mallory", "Person", 29,  
  "Trent", "System", 99 
]; 
let edges = datatable(source:string, destination:string, edge_type:string) 
[ 
  "Alice", "Bob", "communicatesWith",  
  "Alice", "Trent", "trusts",  
  "Bob", "Trent", "hasPermission",  
  "Eve", "Alice", "attacks",  
  "Mallory", "Alice", "attacks",  
  "Mallory", "Bob", "attacks"  
]; 
edges 
| make-graph source --> destination with nodes on name 
| graph-match (mallory)-[attacks]->(compromised)-[hasPermission]->(trent) 
  where mallory.name == "Mallory" and trent.name == "Trent" and attacks.edge_type == "attacks" and hasPermission.edge_type == "hasPermission" 
  project Attacker = mallory.name, Compromised = compromised.name, System = trent.name

输出

攻击者 已泄露 系统
Mallory Bob Trent