
# AI가 생성한 보안 설문 증거를 위한 실시간 데이터 라인리지 대시보드

## 소개

보안 설문은 B2B SaaS 영업, 실사, 규제 감사에서 중요한 병목 지점이 되었습니다. 기업들은 점점 더 생성형 AI를 활용해 답변을 초안하고, 지원 증거를 추출하며, 정책을 최신 표준에 맞게 동기화하고 있습니다. AI가 응답 시간을 크게 단축시켜 주지만 **각 증거 조각을 누가 만들었는가? 어느 정책, 문서, 시스템에서 유래했는가?** 라는 불투명성 문제도 동반합니다.  

데이터 라인리지 대시보드는 모든 AI‑생성 증거 아티팩트의 완전한 출처 체인을 실시간으로 시각화함으로써 이 문제를 해결합니다. 컴플라이언스 담당자는 단일 화면에서 답변을 원본 조항으로 추적하고, 변환 단계를 확인하며, 정책 드리프트가 발생했는지 검증할 수 있습니다.

이 글에서 다룰 내용:

* 데이터 라인리지가 왜 컴플라이언스에 필수인지 설명합니다.
* 실시간 라인리지 대시보드를 구동하는 아키텍처를 소개합니다.
* 지식 그래프, 이벤트 스트리밍, Mermaid 시각화가 어떻게 함께 동작하는지 보여줍니다.
* 단계별 구현 가이드를 제공합니다.
* 모범 사례와 향후 방향을 강조합니다.

## AI 생성 답변에 있어 데이터 라인리지가 중요한 이유

| 위험 | 라인리지가 완화하는 방법 |
|------|------------------------|
| **출처 표기 누락** | 모든 증거 노드에 원본 문서 ID와 타임스탬프가 태깅됩니다. |
| **정책 드리프트** | 자동 드리프트 감지가 원본 정책과 AI 출력 사이의 차이를 플래그합니다. |
| **감사 실패** | 감사자는 출처 추적을 요청할 수 있으며, 대시보드는 즉시 내보내기를 제공합니다. |
| **우발적인 데이터 유출** | 민감한 원본 데이터는 라인리지 뷰에서 자동으로 플래그되고 마스킹됩니다. |

원시 정책 문서 → 전처리 → 벡터 임베딩 → 검색‑보강 생성(RAG) → 최종 답변 합성이라는 전체 변환 파이프라인을 공개함으로써 팀은 AI가 *거버넌스를 강화*하고 있음을 확신할 수 있습니다.

## 아키텍처 개요

시스템은 네 개의 핵심 레이어로 구성됩니다.

1. **Ingestion Layer** – 정책 저장소(Git, S3, Confluence)를 감시하고 변화 이벤트를 Kafka‑유사 버스로 전송합니다.  
2. **Processing Layer** – 문서 파서가 조항을 추출하고 임베딩을 생성해 **Evidence Knowledge Graph (EKG)** 를 업데이트합니다.  
3. **RAG Layer** – 설문 요청이 들어오면 Retrieval‑Augmented Generation 엔진이 관련 그래프 노드를 가져와 프롬프트를 구성하고, 답변과 증거 ID 목록을 반환합니다.  
4. **Visualization Layer** – RAG 출력 스트림을 소비해 실시간 라인리지 그래프를 만든 뒤 Mermaid를 이용해 웹 UI에 렌더링합니다.

```
graph TD
    A["Policy Repository"] -->|Change Event| B["Ingestion Service"]
    B -->|Parsed Clause| C["Evidence KG"]
    D["Questionnaire Request"] -->|Prompt| E["RAG Engine"]
    E -->|Answer + Evidence IDs| F["Lineage Service"]
    F -->|Mermaid JSON| G["Dashboard UI"]
    C -->|Provides Context| E
```

### 핵심 구성 요소

| 구성 요소 | 역할 |
|-----------|------|
| **Ingestion Service** | 파일 추가/수정을 감지하고 메타데이터를 추출해 `policy.updated` 이벤트를 발행합니다. |
| **Document Parser** | PDF, Word, markdown을 정규화하고 조항 식별자(e.g., `SOC2-CC5.2`)를 추출합니다. |
| **Embedding Store** | 의미 검색을 위한 벡터(FAISS 또는 Milvus)를 저장합니다. |
| **Evidence KG** | Neo4j 기반 그래프이며 `Document`, `Clause`, `Evidence`, `Answer` 노드와 “derived‑from” 관계를 가집니다. |
| **RAG Engine** | LLM(e.g., GPT‑4o)과 KG 검색을 결합해 답변과 출처 ID를 반환합니다. |
| **Lineage Service** | `rag.response` 이벤트를 수신해 각 증거 ID를 조회하고 Mermaid 다이어그램 JSON을 생성합니다. |
| **Dashboard UI** | React + Mermaid; 검색, 필터, PDF/JSON 내보내기 기능을 제공합니다. |

## 실시간 인제스트 파이프라인

1. **저장소 감시** – 경량 파일 시스템 워처(또는 Git webhook)가 푸시를 감지합니다.  
2. **메타데이터 추출** – 파일 타입, 버전 해시, 작성자, 타임스탬프를 기록합니다.  
3. **조항 파싱** – 정규식 및 NLP 모델이 조항 번호와 제목을 식별합니다.  
4. **그래프 노드 생성** – 각 조항마다 `Clause` 노드가 `id`, `title`, `sourceDocId`, `version` 속성을 갖고 생성됩니다.  
5. **이벤트 발행** – `clause.created` 이벤트가 스트리밍 버스로 전송됩니다.

```mermaid
flowchart LR
    subgraph Watcher
        A[File Change] --> B[Metadata Extract]
    end
    B --> C[Clause Parser]
    C --> D[Neo4j Create Node]
    D --> E[Kafka clause.created]
```

## 지식 그래프 연동

**Evidence KG**는 세 가지 주 노드 타입을 보유합니다.

* **Document** – 원본 정책 파일(버전 관리).  
* **Clause** – 개별 컴플라이언스 요구사항.  
* **Evidence** – 로그, 스크린샷, 인증서 등 추출된 증거 항목.

관계:

* `Document` **HAS_CLAUSE** `Clause`  
* `Clause` **GENERATES** `Evidence`  
* `Evidence` **USED_BY** `Answer`

RAG가 답변을 생성하면 관련 `Evidence` 노드 ID를 함께 반환합니다. 이를 통해 즉시 시각화 가능한 결정적인 경로가 만들어집니다.

## Mermaid 라인리지 다이어그램

다음은 가상의 SOC 2 질문 **“How do you encrypt data at rest?”** 에 대한 라인리지 예시입니다.

```mermaid
graph LR
    A["Answer: Data is encrypted using AES‑256 GCM"] --> B["Evidence: Encryption Policy (SOC2‑CC5.2)"]
    B --> C["Clause: Encryption at Rest"]
    C --> D["Document: SecurityPolicy_v3.pdf"]
    B --> E["Evidence: KMS Key Rotation Log"]
    E --> F["Document: KMS_Audit_2025-12.json"]
    A --> G["Evidence: Cloud Provider Encryption Settings"]
    G --> H["Document: CloudConfig_2026-01.yaml"]
```

대시보드는 이 다이어그램을 동적으로 렌더링하고, 사용자는 노드를 클릭해 해당 문서, 버전, 원시 데이터를 확인할 수 있습니다.

## 컴플라이언스 팀을 위한 혜택

* **즉시 감사 가능한 추적** – 전체 라인리지를 JSON‑LD 파일로 내보내 규제 기관에 제공할 수 있습니다.  
* **영향 분석** – 정책이 변경되면 하위 모든 답변을 재계산하고 영향을 받는 설문 항목을 즉시 표시합니다.  
* **수동 작업 감소** – 조항 참조를 수동으로 복사·붙여넣을 필요 없이 그래프가 자동으로 연결합니다.  
* **위험 투명성** – 데이터 흐름을 시각화함으로써 보안 엔지니어가 약점(예: 누락된 로그)을 빠르게 파악합니다.

## 구현 단계

1. **인제션 구성**  
   * Git webhook 또는 CloudWatch 이벤트 규칙 배포.  
   * `policy‑parser` 마이크로서비스(Docker 이미지 `procurize/policy‑parser:latest`) 설치.  

2. **Neo4j 프로비저닝**  
   * Neo4j Aura 또는 자체 호스팅 클러스터 사용.  
   * `Clause.id`와 `Document.id`에 대한 제약 조건 생성.  

3. **스트리밍 버스 설정**  
   * Apache Kafka 또는 Redpanda 배포.  
   * 토픽 정의: `policy.updated`, `clause.created`, `rag.response`.  

4. **RAG 서비스 배포**  
   * LLM 공급자 선택(OpenAI, Anthropic 등).  
   * Neo4j에 Cypher 쿼리로 접근하는 Retrieval API 구현.  

5. **라인리지 서비스 구축**  
   * `rag.response` 구독.  
   * 각 증거 ID에 대해 Neo4j에서 전체 경로를 조회.  
   * Mermaid JSON을 생성해 `lineage.render` 토픽에 발행.  

6. **대시보드 UI 개발**  
   * React, `react‑mermaid2`, 가벼운 인증 레이어(OAuth2) 사용.  
   * 필터: 날짜 범위, 문서 출처, 위험 레벨 등 추가.  

7. **테스트 및 검증**  
   * 각 마이크로서비스 단위 테스트 작성.  
   * 합성 설문 데이터를 이용한 엔드‑투‑엔드 시뮬레이션 수행.  

8. **롤아웃**  
   * 파일럿 팀(예: SOC 2 컴플라이언스)에서 시작.  
   * 피드백 수집·UI‑UX 개선 후 ISO 27001, GDPR 모듈로 확대.  

## 모범 사례

| 관행 | 이유 |
|------|------|
| **불변 문서 ID** | 라인리지가 교체된 파일을 가리키는 일을 방지합니다. |
| **버전된 노드** | “6개월 전 어떤 증거가 사용됐는가?”와 같은 과거 조회가 가능합니다. |
| **그래프 수준 접근 제어** | 민감한 증거는 권한이 없는 사용자가 볼 수 없게 합니다. |
| **자동 드리프트 알림** | 조항이 바뀌면 기존 답변이 재생성되지 않은 경우 플래그합니다. |
| **정기 백업** | Neo4j 스냅샷을 매일 야간에 내보내 데이터 손실을 예방합니다. |
| **성능 모니터링** | 설문 요청부터 대시보드 렌더링까지 지연 시간 추적; 목표 < 2 초. |

## 향후 방향

1. **연합 지식 그래프** – 제로 지식 증명(ZKP)를 활용해 데이터 격리를 유지하면서 다중 테넌트 그래프를 결합.  
2. **설명 가능한 AI 오버레이** – 각 엣지에 신뢰도 점수와 LLM 추론 기록을 부착.  
3. **능동형 정책 제안** – 드리프트가 감지되면 업계 벤치마크를 기반으로 조항 업데이트를 추천.  
4. **음성 인터페이스** – 접근성을 위해 라인리지 단계를 음성 어시스턴트가 읽어주는 기능 통합.  

## 결론

실시간 데이터 라인리지 대시보드는 AI가 생성한 보안 설문 증거를 블랙박스에서 투명하고, 감시 가능하며, 실행 가능한 자산으로 변모시킵니다. 이벤트‑드리븐 인제션, 의미론적 지식 그래프, 동적 Mermaid 시각화를 결합함으로써 컴플라이언스 팀은 AI를 신뢰하고, 감사를 통과하며, 거래 속도를 가속화할 수 있는 가시성을 확보합니다. 위에서 제시한 단계들을 구현하면 어느 SaaS 조직이든 책임감 있는 AI‑구동 컴플라이언스의 최전선에 설 수 있습니다.