PurifySec 기술
PurifySec이 Anthropic의 Claude API를 쓰는 방식이에요. PurifySec은 한국의 주식회사 퓨리파이솔루션이 만들어요. 작동하는 프로토타입이 Claude API로 동작하며, 이 페이지는 우리가 지향하는 목표 아키텍처를 설명해요. 아래 구성 요소가 모두 구현된 것은 아니며, 세부 사항은 바뀔 수 있어요.
경보별 요청 흐름 (설계)
경보 하나가 들어오면 일어나는 일
Claude는 제품의 일부로서, 조사 한 건마다 한 번씩 런타임에 우리 애플리케이션이 호출해요. 아래 단계는 프로토타입이 기반으로 하는 설계예요.
- 요청 만들기. 오케스트레이터는 버전이 관리되는 시스템 프롬프트(방어 역할, 근거 규칙, 출력 규칙), 읽기 전용 도구 정의, 정규화된 경보를 담아 Messages API 요청을 보내요. 경보와 로그 텍스트는 신뢰할 수 없는 데이터로 표시된 구분 블록에 담겨요. 시스템 프롬프트와 도구 정의는 고정된, 캐시 가능한 접두부가 돼요.
- 도구 사용 루프. Claude가
tool_use블록(예: 같은 호스트의 최근 24시간search_events)을 돌려주면, 오케스트레이터가 허용 목록과 고객이 승인한 데이터 소스에 비춰 확인하고, 읽기 전용 조회를 실행한 뒤tool_result를 돌려줘요. 루프 횟수에는 상한이 있어요. - 구조화된 결과. Claude의 최종 답변은 분류 JSON 스키마(판정, 제안 우선순위, 요약, 근거 참조, ATT&CK 후보, 다음 단계)를 따라야 해요. 오케스트레이터가 이를 검증하고, 인용된 모든 이벤트 ID가 실제로 가져온 데이터에 있는지 확인해요. 유효하지 않은 결과는 다시 시도하거나 표시해요.
- 라우팅. 1차 분류는 작은 Claude 모델을 쓰도록 설계했어요. 심각도가 높거나 확신도가 낮은 경우, 그리고 분석가의 후속 질문은 캐시된 사건 맥락과 함께 큰 Claude 모델로 보내요.
- 사람의 결정. 초안은
awaiting_analyst_approval상태로 분석가 리뷰 대기열에 들어가요. 분석가만 이를 승인해 티켓이나 보고서로 만들 수 있어요. 모델 호출, 도구 호출, 프롬프트 버전, 결정은 감사 로그에 기록돼요.
아키텍처
계획된 시스템 개요
Claude가 추론의 핵심이고, 우리 애플리케이션이 그 주변의 커넥터, 도구, 스키마, 안전장치, 리뷰 워크플로를 제공해요.
Claude API 설계
Claude 활용 방식
Anthropic Messages API
모든 분석과 초안 작성은 Messages API를 거쳐요. 버전이 관리되는 시스템 프롬프트가 Claude의 방어 역할, 근거 규칙, 출력 규칙을 정해요. Claude는 제품의 핵심이며, PurifySec의 AI 기능은 Claude 모델에서 동작하도록 설계됐어요.
SIEM/EDR 조회를 위한 도구 사용
Claude는 JSON Schema로 정의한 타입 있는 읽기 전용 도구를 받아요. 예: search_events, get_host_context, get_user_context, lookup_attack_technique. 오케스트레이터는 각 호출을 허용 목록에 따라, 고객이 승인한 데이터 소스 범위 안에서, 기간과 호출 횟수 제한을 두고 실행해요. 어떤 도구도 고객 시스템을 바꿀 수 없어요.
구조화된 JSON 출력
분류 결과는 고정된 JSON 스키마(판정, 제안 우선순위, 요약, 근거 참조, ATT&CK 후보, 다음 단계)를 따라야 해요. 결과는 서버에서 검증되며, 유효하지 않으면 완성된 결과로 보여주지 않고 다시 시도하거나 분석가에게 표시해요.
프롬프트 캐싱
고정된 내용(시스템 프롬프트, 도구 정의, ATT&CK 참고 자료, 진행 중인 사건의 긴 로그 맥락)을 캐시 가능한 접두부에 두어, 같은 사건에 대한 후속 질문에서 재사용해요. 긴 맥락 조사의 비용과 지연 시간을 줄이기 위한 설계예요.
모델 라우팅
작고 빠른 Claude 모델(예: Haiku 계열)이 대량의 1차 분류와 추출을 맡고, 큰 Claude 모델(예: Sonnet, Opus)이 여러 단계의 조사, 상관 분석, 사고 보고서를 맡아요. 심각도가 높거나, 확신도가 낮거나, 분석가가 요청하면 상위 모델로 넘겨요.
평가 하네스
레이블을 붙인 합성·샘플 경보(허가를 받은 경우 파일럿 사례 포함)로 구성한 오프라인 테스트 세트를 계획하고 있어요. 분석가와의 판정·우선순위 일치도, ATT&CK 매핑 품질, 스키마 유효성, 근거 충실도(인용한 이벤트가 원본에 있어야 함), 경보당 비용과 지연 시간을 평가해요. 프롬프트나 모델을 바꿀 때마다 회귀 테스트로 실행해요.
{
"name": "search_events",
"description": "Read-only search over customer-authorized SIEM/EDR events.",
"input_schema": {
"type": "object",
"properties": {
"query": { "type": "string" },
"time_range": { "type": "string", "description": "e.g. last_24h" },
"max_results":{ "type": "integer", "maximum": 200 }
},
"required": ["query", "time_range"]
}
}
안전장치
보안, 데이터 처리, 사람의 통제
프롬프트 인젝션 방어
로그, 경보, 코드에는 공격자가 조작한 텍스트가 있을 수 있어, 모두 지시가 아닌 신뢰할 수 없는 데이터로 다뤄요. 내용은 명확히 구분된 데이터 블록에 담기고, 시스템 프롬프트는 데이터 안의 지시를 무시하라고 Claude에 알려요. 지시처럼 보이는 내용은 분석가에게 표시돼요. 도구가 읽기 전용이고, 결과가 스키마로 검사되고, 모든 결과를 사람이 승인하므로, 주입된 텍스트가 실제 조치로 이어질 경로가 없도록 설계했어요.
데이터 처리
고객이 소유하거나 관리 권한이 있는 시스템의 데이터만 다뤄요. 모델 호출 전에 데이터를 최소화하고 비밀 정보와 개인정보를 가려요. 보관은 최소한으로: 파일럿 데이터는 파일럿 기간에만 보관하고, 달리 합의하지 않는 한 종료 후 30일 이내에 삭제해요. Anthropic의 상업 약관에 따라 API 고객 콘텐츠는 Anthropic 모델 학습에 쓰이지 않으며, PurifySec도 고객 데이터로 모델을 학습하거나 파인튜닝하지 않아요.
감사 로그
모든 모델 호출, 도구 호출, 결과, 분석가의 결정을 시각, 사용한 모델과 프롬프트 버전, 승인한 분석가와 함께 기록하도록 설계해, 어떤 분류 결과든 나중에 추적하고 검토할 수 있어요.
사람의 승인 단계
PurifySec은 초안을 쓰고, 결정은 사람이 해요. 분석가 승인 없이는 어떤 결과도 초안 상태를 벗어나지 않으며, 제품이 고객 시스템에서 스스로 차단이나 조치를 하지 않아요.
방어 목적 범위
공격 도구, 익스플로잇 개발, 악성코드 분석은 하지 않아요. 방어 목적의 업무로만 사용하며 Anthropic 이용 정책을 따라요. 책임 있는 사용 정책을 확인해 주세요.
모델 제공사가 아닌 애플리케이션
PurifySec은 Claude API로 만든 애플리케이션이에요. Claude 접근 권한을 재판매하거나 자체 모델을 제공하지 않으며, 우리가 제공하는 것은 모델 접근이 아니라 PurifySec의 분류 워크플로예요.