# Knowledge graph i analityka

> Jak knowledge graph łączy hosty, usługi, podatności i dostęp, jego dwa backendy oraz dashboard attack-chain na nim zbudowany.

Rekord w PostgreSQL odpowiada na pytanie *co wypisało polecenie*. [Knowledge graph](https://pentagi.com/pl/docs/glossary/#knowledge-graph) odpowiada na pytanie *jak dwa [findings](https://pentagi.com/pl/docs/glossary/#finding) są ze sobą powiązane* — który host udostępnia którą usługę, która podatność doprowadziła do którego potwierdzonego dostępu.

## [Dwa backendy](https://pentagi.com/pl/docs/enterprise/knowledge-graph/#two-backends)

|                                                             | graphstore                  | graphiti                            |
| ----------------------------------------------------------- | --------------------------- | ----------------------------------- |
| Działa jako                                                 | w backendzie, graf w Neo4j  | osobna usługa na Neo4j              |
| Włączany przez                                              | `GRAPHSTORE_INGEST_ENABLED` | `GRAPHITI_ENABLED` + `GRAPHITI_URL` |
| [Agent](https://pentagi.com/pl/docs/glossary/#agent) [tool](https://pentagi.com/pl/docs/glossary/#tool) | `graphstore_search`         | `graphiti_search`                   |
| Status                                                      | następca graphiti           | przestarzały, zachowany do porównań |

Oba są ograniczone do jednego [flow](https://pentagi.com/pl/docs/glossary/#flow): każdy odczyt filtruje dane według niego, więc jeden flow nigdy nie widzi grafu innego flow.

Oba backendy są domyślnie wyłączone. Przy `GRAPHSTORE_INGEST_ENABLED=true` graphstore potrzebuje `GRAPHSTORE_NEO4J_URI` i `GRAPHSTORE_NEO4J_DATABASE`, a PentAGI nie uruchomi się bez nich.

Przy włączonym Graphiti oba backendy przechowują zasoby w różny sposób, więc PentAGI odmawia uruchomienia, gdy oba zapisują bazę danych o tej samej nazwie na jednym serwerze lub na dowolnym serwerze, gdy `NEO4J_URI` Graphiti nie jest ustawione, chyba że `GRAPHSTORE_ALLOW_SHARED_NEO4J_DATABASE=true`. Dołączony Neo4j to wersja Community i obsługuje tylko bazę danych `neo4j`: przy obu backendach na nim zachowaj `neo4j` i zezwól na współdzielenie, kosztem jakości knowledge graph, ponieważ porty i usługi są przechowywane dwukrotnie, a niektóre zapisy Graphiti mogą zostać odrzucone. Aby utrzymać grafy osobno, przydziel graphstore własny serwer Neo4j albo własną bazę danych na Neo4j Enterprise: PentAGI tworzy tę bazę, gdy jej brakuje, jeśli konto Neo4j graphstore może tworzyć bazy danych; w przeciwnym razie utwórz ją wcześniej.

## [Pulpit attack chain](https://pentagi.com/pl/docs/enterprise/knowledge-graph/#attack-chain-dashboard)

![Główny attack chain: hosty, porty, usługi, podatności, potwierdzone dostępy i konta](https://pentagi.com/images/product/attack-chain.webp)

Po włączeniu knowledge graph zakładka **Dashboard → Analytics** danego flow renderuje graf w miarę jego rozbudowy:

* **Main Attack Chain** — hosty, porty, usługi, podatności, potwierdzone dostępy i konta.
* Widoki **Action Chain**, **Infrastructure**, **Access Chain** i **Priv Esc Chain**.
* Suwak osi czasu do odtwarzania ewolucji obrazu sytuacji, a także tabele otwartych portów, wykrytych CVE i statusu poświadczeń.

![Widok łańcucha dostępu](https://pentagi.com/images/product/access-chain.webp)

![Podsumowania powierzchni ataku i potwierdzonych dostępów](https://pentagi.com/images/product/analytics-stats.webp)