# Knowledge graph e análises

> Como o knowledge graph conecta hosts, serviços, vulnerabilidades e acesso, seus dois backends e o painel de attack chain construído a partir dele.

O registro do PostgreSQL indica *o que um comando imprimiu*. O [knowledge graph](https://pentagi.com/pt-br/docs/glossary/#knowledge-graph) mostra *como dois [findings](https://pentagi.com/pt-br/docs/glossary/#finding) se conectam* — qual host executa qual serviço, qual vulnerabilidade levou a qual acesso.

## [Dois backends](https://pentagi.com/pt-br/docs/enterprise/knowledge-graph/#two-backends)

|                                                             | graphstore                  | graphiti                            |
| ----------------------------------------------------------- | --------------------------- | ----------------------------------- |
| Executa como                                                | no backend, grafo no Neo4j  | serviço separado no Neo4j           |
| Habilitado por                                              | `GRAPHSTORE_INGEST_ENABLED` | `GRAPHITI_ENABLED` + `GRAPHITI_URL` |
| [Agent](https://pentagi.com/pt-br/docs/glossary/#agent) [tool](https://pentagi.com/pt-br/docs/glossary/#tool) | `graphstore_search`         | `graphiti_search`                   |
| Status                                                      | sucessor do graphiti        | legado, mantido para comparação     |

Ambos são restritos a um único [flow](https://pentagi.com/pt-br/docs/glossary/#flow): cada leitura filtra por ele, assim um flow nunca acessa o grafo de outro flow.

Ambos os backends estão desativados por padrão. Com `GRAPHSTORE_INGEST_ENABLED=true`, o graphstore precisa de `GRAPHSTORE_NEO4J_URI` e `GRAPHSTORE_NEO4J_DATABASE`, e o PentAGI não inicia sem eles.

Com o Graphiti habilitado também, os dois backends armazenam ativos de forma diferente, então o PentAGI se recusa a iniciar quando ambos gravam um banco de dados com o mesmo nome em um servidor, ou em qualquer servidor enquanto o `NEO4J_URI` do Graphiti não estiver definido, a menos que `GRAPHSTORE_ALLOW_SHARED_NEO4J_DATABASE=true`. O Neo4j incluído é a edição Community e atende apenas ao banco de dados `neo4j`: com ambos os backends nele, mantenha `neo4j` e permita o compartilhamento, com prejuízo na qualidade do graph, já que portas e serviços são armazenados duas vezes e algumas escritas do Graphiti podem ser rejeitadas. Para manter os graphs separados, dê ao graphstore seu próprio servidor Neo4j, ou seu próprio banco de dados no Neo4j Enterprise: o PentAGI cria esse banco de dados quando ausente, se a conta Neo4j do graphstore puder criar bancos de dados; caso contrário, crie-o previamente.

## [Painel da attack chain](https://pentagi.com/pt-br/docs/enterprise/knowledge-graph/#attack-chain-dashboard)

![Attack chain principal: hosts, portas, serviços, vulnerabilidades, acesso confirmado e contas](https://pentagi.com/images/product/attack-chain.webp)

Com o knowledge graph habilitado, a aba **Dashboard → Analytics** do flow renderiza o grafo à medida que ele cresce:

* **Main Attack Chain** — hosts, portas, serviços, vulnerabilidades, acesso confirmado e contas.
* Visualizações de **Action Chain**, **Infrastructure**, **Access Chain** e **Priv Esc Chain**.
* Um controle deslizante de linha do tempo para reproduzir como o cenário evoluiu, além de tabelas de portas abertas, CVEs detectados e status de credenciais.

![Visualização da cadeia de acesso](https://pentagi.com/images/product/access-chain.webp)

![Resumos da superfície de ataque e acessos confirmados](https://pentagi.com/images/product/analytics-stats.webp)