# Knowledge graphと分析

> Knowledge graph がホスト、サービス、脆弱性、アクセスをどのように結びつけるか、その2つのバックエンド、およびそこから構築された attack-chain ダッシュボードについて説明します。

PostgreSQL のレコードは *コマンドの出力内容* を示しますが、[knowledge graph](https://pentagi.com/ja/docs/glossary/#knowledge-graph) は *2つの [findings](https://pentagi.com/ja/docs/glossary/#finding) がどのように関連しているか* — どのホストがどのサービスを実行しているか、どの脆弱性がどのアクセスにつながったか — を明らかにします。

## [2つのバックエンド](https://pentagi.com/ja/docs/enterprise/knowledge-graph/#two-backends)

|                                                             | graphstore                  | graphiti                            |
| ----------------------------------------------------------- | --------------------------- | ----------------------------------- |
| 実行形態                                                        | バックエンド内、Neo4j のグラフ          | Neo4j 上の独立したサービス                    |
| 有効化方法                                                       | `GRAPHSTORE_INGEST_ENABLED` | `GRAPHITI_ENABLED` + `GRAPHITI_URL` |
| [Agent](https://pentagi.com/ja/docs/glossary/#agent) [tool](https://pentagi.com/ja/docs/glossary/#tool) | `graphstore_search`         | `graphiti_search`                   |
| ステータス                                                       | Graphiti の後継                | レガシー、比較用に維持                         |

どちらも単一の [flow](https://pentagi.com/ja/docs/glossary/#flow) に限定されます。すべての読み取りは flow ごとにフィルタリングされるため、ある flow が別の flow のグラフを参照することはありません。

両方のバックエンドはデフォルトで無効になっています。`GRAPHSTORE_INGEST_ENABLED=true` を使用する場合、グラフストアには `GRAPHSTORE_NEO4J_URI` と `GRAPHSTORE_NEO4J_DATABASE` が必要であり、これらがなければ PentAGI は起動しません。

Graphiti も有効にすると、2つのバックエンドはアセットを異なる方法で保存するため、両方が1台のサーバー上で同じ名前のデータベースに書き込む場合、または Graphiti の `NEO4J_URI` が未設定のまま任意のサーバーで実行される場合、PentAGI は起動を拒否します。ただし `GRAPHSTORE_ALLOW_SHARED_NEO4J_DATABASE=true` の場合は例外です。バンドルされている Neo4j は Community エディションであり、`neo4j` データベースのみを提供します。このデータベース上に両方のバックエンドを配置する場合は、`neo4j` を維持して共有を許可しますが、ポートとサービスが二重に保存され、一部の Graphiti による書き込みが拒否される可能性があるため、グラフの品質が低下します。グラフを分離したままにするには、graphstore 用に専用の Neo4j サーバーを用意するか、Neo4j Enterprise 上で独自のデータベースを使用してください。graphstore の Neo4j アカウントがデータベースを作成できる場合、PentAGI は存在しないときにそのデータベースを作成します。そうでない場合は、事前に作成しておいてください。

## [Attack chain ダッシュボード](https://pentagi.com/ja/docs/enterprise/knowledge-graph/#attack-chain-dashboard)

![Main attack chain: ホスト、ポート、サービス、脆弱性、確認済みのアクセスとアカウント](https://pentagi.com/images/product/attack-chain.webp)

Knowledge graph を有効にすると、flow の **Dashboard → Analytics** タブで、グラフの成長に合わせて描画が行われます。

* **Main Attack Chain** — ホスト、ポート、サービス、脆弱性、確認済みのアクセスとアカウント。
* **Action Chain**、**Infrastructure**、**Access Chain**、**Priv Esc Chain** の各ビュー。
* 状況の変化を再生できるタイムラインスクラバーに加え、オープンポート、検出されたCVE、認証情報の状態を示すテーブル。

![Access chain ビュー](https://pentagi.com/images/product/access-chain.webp)

![攻撃対象範囲と確認済みアクセスのサマリー](https://pentagi.com/images/product/analytics-stats.webp)