25

Pitfall: Text2Cypher 보안과 실무 함정 5가지

Day 1: Text2Cypher 개론

학습 목표

temperature 설정의 중요성을 안다 스키마 누락 문제를 이해한다 보안 검증의 필요성을 안다 Cypher Injection 공격을 이해하고 방어할 수 있다 allow_dangerous_requests의 의미를 정확히 안다

Pitfall 1: temperature > 0

에디터 로딩 중...

문제: 같은 질문에 다른 Cypher가 생성됨

에디터 로딩 중...

다 맞는 거 같지만, 3가지가 다 다르다. 캐싱도 안 되고, 디버깅도 어렵다.

에디터 로딩 중...

Pitfall 2: 스키마 없이 Cypher 생성

에디터 로딩 중...

문제: LLM이 레이블을 추측함

에디터 로딩 중...

스키마가 없으면 LLM은 추측한다. 추측은 틀린다.

에디터 로딩 중...

Pitfall 3: 검증 없이 실행 (보안 핵심!)

에디터 로딩 중...

문제: 악의적 또는 실수로 위험한 쿼리 생성

에디터 로딩 중...

Pitfall 4: Cypher Injection 공격

SQL Injection과 유사하게, 사용자 입력에 Cypher 코드를 삽입하는 공격이다.

에디터 로딩 중...

방어 방법:

에디터 로딩 중...

Pitfall 5: allow_dangerous_requests 이해

LangChain 0.1.44+에서 추가된 보안 옵션이다.

에디터 로딩 중...

allow_dangerous_requests=True를 써야 하는가?

LangChain이 "이 Chain은 LLM이 생성한 임의의 Cypher를 DB에 실행합니다. 당신이 이 위험을 인지하고 있습니까?"라고 묻는 것이다.

프로덕션에서는 반드시 추가 보안 레이어를 갖춰야 한다:

에디터 로딩 중...

체크리스트

항목확인우선순위
temperature = 0?필수
스키마 주입됨?필수
입력 정제 (sanitize)?필수
Cypher 키워드 검증?필수
LIMIT 강제?필수
Neo4j 읽기 전용 사용자?권장
쿼리 타임아웃?권장
에러 처리?필수
로깅/모니터링?권장

하나라도 빠지면 프로덕션 불가.