2つの異なるノードタイプ間で共通のノードタイプを集約する暗号

サンカー

グラフビュー

  • 2つの異なるタイプのノードがあります(再表示のLABELS)。図の青い円はと呼ばれWORKLOADます。黄色のものはと呼ばれAPIます。

  • 2つのワークロードの間には、関係/エッジがありますACCESSES_WORKLOAD(最も明るい青/シアンのエッジで示されます)。添付のイメージでは、front-endワークロードアクセスuserorderワークロード。orderワークロードは、アクセスするuserワークロードを。

  • APIノードとノードの間には、WORKLOAD2つのタイプの関係/エッジが存在します。1つはCONTAINS_API(画像の濃い青色のリンク)と呼ばれ、もう1つはACCESSES_API(画像の紫色のリンク)と呼ばれます。例えば、添付された画像に、userワークロードは、8つの含まAPI6はによって消費されたS、アウトfront-end(:含むリストを3 /customers/.../addresses/register/cards)。残りAPI2つのはorders(リスト:/cards/{cardsId}/addresses/{addressesId}によって消費されます。

  • またワークロードに含まれるfront-end3つにもアクセスします(APIorders/orders/...

  • 2つWORKLOADのsのACCESSES_WORKLOAD間にエッジがあるが、APIそれらの間で共通のノードがない可能性もあります。

  • AがWORKLOAD呼び出され、余分なエッジ/関係有していてもよいCAUSES_ATTACKAPIに加えて、ACCESSES_APIエッジ。画像では緑色で示されています。これは常に存在するとは限りません。添付の画像では、front-endワークロードは/catalogue/sockAPIに対してこのエッジを持っていますが、他APIどのエッジも持っていません

次に、すべてのワークロードペアのリストと、APIそれらの間にあるノードのID(存在する場合)を取得します。私が試した暗号クエリは次のとおりです。

MATCH (w1)
MATCH (w1)-[awe:ACCESSES_WORKLOAD]->(w2 {deleted_time: -1})
OPTIONAL MATCH (w2)-[:CONTAINS_API]->(a:API)
OPTIONAL MATCH (w1)-[:ACCESSES_API]->(a)
OPTIONAL MATCH (w1)-[cae:CAUSES_ATTACK]->(a)
WHERE ID(w1) IN %s
RETURN DISTINCT awe, w1, w2, collect(ID(a)), collect(distinct cae.name)

私が期待していた出力は、次のような表でした。

w1             | w2          | API IDs List           | Attack Name
======================================================================
front-end-node | user-node   | [6 elements in a list] | null
orders-node    | user-node   | [2 elements in a list] | null
front-end-node | orders-node | [3 elements in a list] | null
front-end-node | some-node   | [1 element in a list]  | attack-name

しかし、私が得ているのは:

w1             | w2          | API IDs List           | Attack Name
======================================================================
front-end-node | user-node   | [8 elements in a list] | null
orders-node    | user-node   | [8 elements in a list] | null
front-end-node | orders-node | [3 elements in a list] | null
front-end-node | some-node   | [1 element in a list]  | attack-name

最初の2行では、のためにuserノード、私はすべてのリスト取得していますAPIに含まれているのuserワークロードを、ちょうどないAPIことによってアクセスsのfront-endorderscollect(ID(a))全て集約されているAPIと、ノードCONTAINS_APIとエッジ/関係w2 WORKLOADの代わりに、クエリ内APIのみでのSをACCESSES_API有しますw1 workload

簡潔にするために期待値をJSONにマッピングする場合、必要な出力は次のようになります。

{
  sourceWorkloadID: <ID(front-end)>
  targetWorkloadID: <ID(user)>
  apis: [ ID(/cards), ID(/register), ID(/addresses), ID(/customers/...)]  // len here is six
  attack: null
},
{
  sourceWorkloadID: <ID(orders)>
  targetWorkloadID: <ID(user)>
  apis: [ ID(/cards/{cardsId), ID(/addresses/{addressesId})] // len here is two
  attack: null
}, {3rd row}, {4th row}

誰かが暗号クエリを修正するのを手伝ってもらえますか?私はこれをredisgraph経由で行っていcypherます。neo4jのみのクエリoptions / utils / helpersは使用できません。ありがとう。

サンカー

これを行う方法は、APIMATCHと同じ行にエッジマッチングを行うことです。

MATCH (w1)
MATCH (w1)-[awe:ACCESSES_WORKLOAD]->(w2 {deleted_time: -1})
OPTIONAL MATCH (w2)-[:CONTAINS_API]->(a:API)<-[:ACCESSES_API]-(w1)
OPTIONAL MATCH (w1)-[cae:CAUSES_ATTACK]->(a)
WHERE ID(w1) IN %s
RETURN DISTINCT awe, w1, w2, collect(ID(a)), collect(distinct cae.name)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

タイプactorのノードを作成する暗号

分類Dev

同じタイプの同じ値を持つノードの属性を集約する

分類Dev

異なるタイプの構造体間で共通のフィールドをコピーする

分類Dev

graphvizのfdpレイアウトを使用して、同じクラスター内のノード間と異なるクラスター内のノード間で異なるエッジスプラインを使用する方法はありますか?

分類Dev

Umbracoで異なるドキュメントタイプの許可された子ノードを表示する

分類Dev

Pythonでノードのタイプが異なるツリーでの再帰

分類Dev

Networkxで特定のタイプのノードを取得する

分類Dev

異なるタイプの 2 つのノードが特定のプロパティに対して同じ値を持っている場合、暗号との関係を作成する方法は?

分類Dev

kopsを使用してkubernetesのノードに異なるインスタントタイプを指定する

分類Dev

同じIDを持つ2つの異なるノードにデータをプッシュします

分類Dev

分散システム:異なるノード間でタイムスタンプの一貫性を維持する

分類Dev

2つの異なるBinarySearchTree間のキーを持つ共通ノードを見つける

分類Dev

サーバークラスター内の任意の2つのノード間でパスワードなしのsshログインを実現する方法

分類Dev

一致するパターンが異なる同じノードタイプのノードを1つの列またはコレクションに結合するにはどうすればよいですか?

分類Dev

SQLで2つのノード間の共通ノードをカウントする方法

分類Dev

XMLファイルの2つの異なるノードを抽出する方法

分類Dev

特定のタイプのすべてのノードとグループ関連ノードを反復する暗号クエリ

分類Dev

2つの異なるタイプの配列から共通データを取得する

分類Dev

異なるクラウドプロバイダー上のノードを使用してDockerSwarmクラスターを作成することは可能ですか?

分類Dev

1つのタイプのノードを除く2つのノード間のすべてのパスを探します

分類Dev

XSLTを使用してid属性で2つの異なるノードグループをマージする方法

分類Dev

2つの異なるノードから情報を収集する

分類Dev

2つの別々のスプライトノードのタッチを検出する

分類Dev

2つの別々のスプライトノードのタッチを検出する

分類Dev

異なるクラスの2つのインスタンスの共通フィールドを比較します

分類Dev

Neo4jでCypherを使用して開始ノードと終了ノードとは異なるノードタイプのプロパティ値を合計する方法

分類Dev

Fsharp /(string * FsTree)リストのタイプノードを2つのパスを同一にできないリストに変更する方法

分類Dev

Cypherを使用してNeo4jの2つのノード間に同じタイプの複数の関係を作成する

分類Dev

ELEMENT_NODEタイプのみで子ノードを取得する方法

Related 関連記事

  1. 1

    タイプactorのノードを作成する暗号

  2. 2

    同じタイプの同じ値を持つノードの属性を集約する

  3. 3

    異なるタイプの構造体間で共通のフィールドをコピーする

  4. 4

    graphvizのfdpレイアウトを使用して、同じクラスター内のノード間と異なるクラスター内のノード間で異なるエッジスプラインを使用する方法はありますか?

  5. 5

    Umbracoで異なるドキュメントタイプの許可された子ノードを表示する

  6. 6

    Pythonでノードのタイプが異なるツリーでの再帰

  7. 7

    Networkxで特定のタイプのノードを取得する

  8. 8

    異なるタイプの 2 つのノードが特定のプロパティに対して同じ値を持っている場合、暗号との関係を作成する方法は?

  9. 9

    kopsを使用してkubernetesのノードに異なるインスタントタイプを指定する

  10. 10

    同じIDを持つ2つの異なるノードにデータをプッシュします

  11. 11

    分散システム:異なるノード間でタイムスタンプの一貫性を維持する

  12. 12

    2つの異なるBinarySearchTree間のキーを持つ共通ノードを見つける

  13. 13

    サーバークラスター内の任意の2つのノード間でパスワードなしのsshログインを実現する方法

  14. 14

    一致するパターンが異なる同じノードタイプのノードを1つの列またはコレクションに結合するにはどうすればよいですか?

  15. 15

    SQLで2つのノード間の共通ノードをカウントする方法

  16. 16

    XMLファイルの2つの異なるノードを抽出する方法

  17. 17

    特定のタイプのすべてのノードとグループ関連ノードを反復する暗号クエリ

  18. 18

    2つの異なるタイプの配列から共通データを取得する

  19. 19

    異なるクラウドプロバイダー上のノードを使用してDockerSwarmクラスターを作成することは可能ですか?

  20. 20

    1つのタイプのノードを除く2つのノード間のすべてのパスを探します

  21. 21

    XSLTを使用してid属性で2つの異なるノードグループをマージする方法

  22. 22

    2つの異なるノードから情報を収集する

  23. 23

    2つの別々のスプライトノードのタッチを検出する

  24. 24

    2つの別々のスプライトノードのタッチを検出する

  25. 25

    異なるクラスの2つのインスタンスの共通フィールドを比較します

  26. 26

    Neo4jでCypherを使用して開始ノードと終了ノードとは異なるノードタイプのプロパティ値を合計する方法

  27. 27

    Fsharp /(string * FsTree)リストのタイプノードを2つのパスを同一にできないリストに変更する方法

  28. 28

    Cypherを使用してNeo4jの2つのノード間に同じタイプの複数の関係を作成する

  29. 29

    ELEMENT_NODEタイプのみで子ノードを取得する方法

ホットタグ

アーカイブ