# Knowledge graph 및 분석

> Knowledge graph가 호스트, 서비스, 취약점 및 접근을 어떻게 연결하는지, 두 가지 백엔드, 그리고 이를 기반으로 구축된 attack-chain 대시보드에 대해 설명합니다.

PostgreSQL 레코드는 *명령어 출력 결과*를 보여줍니다. [Knowledge graph](https://pentagi.com/ko/docs/glossary/#knowledge-graph)는 *두 [findings](https://pentagi.com/ko/docs/glossary/#finding)가 어떻게 연결되는지*, 즉 어떤 호스트가 어떤 서비스를 실행 중인지, 어떤 취약점이 어떤 접근 권한 획득으로 이어졌는지를 보여줍니다.

## [두 가지 백엔드](https://pentagi.com/ko/docs/enterprise/knowledge-graph/#two-backends)

|                                                             | graphstore                  | graphiti                            |
| ----------------------------------------------------------- | --------------------------- | ----------------------------------- |
| 실행 방식                                                       | 백엔드 내, Neo4j의 그래프           | Neo4j의 별도 서비스                       |
| 활성화 방법                                                      | `GRAPHSTORE_INGEST_ENABLED` | `GRAPHITI_ENABLED` + `GRAPHITI_URL` |
| [Agent](https://pentagi.com/ko/docs/glossary/#agent) [tool](https://pentagi.com/ko/docs/glossary/#tool) | `graphstore_search`         | `graphiti_search`                   |
| 상태                                                          | graphiti의 후속 버전             | 레거시, 비교용으로 유지                       |

두 백엔드 모두 단일 [flow](https://pentagi.com/ko/docs/glossary/#flow)로 범위가 제한됩니다. 모든 조회 요청은 flow별로 필터링되므로, 한 flow에서 다른 flow의 그래프에 접근할 수 없습니다.

두 백엔드는 기본적으로 비활성화되어 있습니다. `GRAPHSTORE_INGEST_ENABLED=true`를 사용하면 그래프스토어는 `GRAPHSTORE_NEO4J_URI`와 `GRAPHSTORE_NEO4J_DATABASE`가 필요하며, PentAGI는 이들이 없으면 시작되지 않습니다.

Graphiti도 활성화된 경우 두 백엔드는 자산을 서로 다른 방식으로 저장하므로, 둘 다 하나의 서버에서 같은 이름의 데이터베이스에 기록하거나 Graphiti의 `NEO4J_URI`이 설정되지 않은 상태에서 어떤 서버에서든 기록할 때 PentAGI는 시작을 거부합니다. 단, `GRAPHSTORE_ALLOW_SHARED_NEO4J_DATABASE=true`인 경우는 예외입니다. 번들된 Neo4j는 Community Edition이며 `neo4j` 데이터베이스만 제공합니다. 이 Neo4j에 두 백엔드를 모두 사용할 경우 `neo4j`을 유지하고 공유를 허용해야 하지만, 포트와 서비스가 두 번 저장되고 일부 Graphiti 쓰기 작업이 거부될 수 있어 그래프 품질이 저하됩니다. 그래프를 분리하려면 graphstore 전용 Neo4j 서버를 사용하거나, Neo4j Enterprise에서 전용 데이터베이스를 할당하십시오. graphstore의 Neo4j 계정이 데이터베이스 생성 권한을 가진 경우 해당 데이터베이스가 없으면 PentAGI가 자동으로 생성합니다. 그렇지 않으면 사전에 데이터베이스를 생성하십시오.

## [Attack chain 대시보드](https://pentagi.com/ko/docs/enterprise/knowledge-graph/#attack-chain-dashboard)

![주요 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)