프로덕션 보안 (입출력 검증·가드레일)
프로덕션 보안 (입출력 검증·가드레일)
LLM을 프로덕션에 배포할 때는 전통적인 애플리케이션 보안과 다른 도전이 있어요. 모델이 콘텐츠를 생성하고 복잡한 입력을 해석하는 특성 때문에 프롬프트 인젝션 같은 새로운 공격 표면이 생겨나거든요. 이 가이드는 심층 방어(defense-in-depth) 전략으로 인프라·데이터·애플리케이션·운영 네 가지 계층에 걸친 보안 청사진을 제시해요.
핵심 개념
- 제로 트러스트 (Zero Trust): "절대 신뢰하지 말고, 항상 검증하라"는 원칙이에요. 내부 네트워크를 신뢰한다는 낡은 생각을 버리고, 위협이 어디서든 올 수 있다고 전제해요. 모든 사용자와 서비스가 모든 단일 작업에 대해 엄격히 인증·권한 부여되어야 해요.
- 최소 권한 (Least Privilege): 어떤 컴포넌트든 작업 수행에 필요한 최소 권한만 부여해요. 예를 들어 데이터를 읽는 서비스는 삭제 권한이 없어야 해요.
- 심층 방어 (Defense-in-depth): 독립된 여러 보안 통제를 겹쳐 놓는 전략이에요. 한 계층이 실패해도(예: 방화벽 오설정) 다른 계층이 공격을 막아요.
LLM 데이터·지식재산 유출 경로
- 학습 데이터 기억(Memorization): 모델이 학습 데이터의 민감 정보를 우연히 기억하면, 정교한 프롬프트로 이를 추출할 수 있어요.
- 프롬프트 인젝션: 신뢰할 수 있는 지시와 신뢰할 수 없는 사용자 입력을 분리하지 않으면, 악의적 입력이 모델의 원래 지시를 덮어써요.
- RAG 시스템 악용: RAG에 엄격한 접근 통제가 없으면, 공격자가 LLM을 도구로 삼아 접근 가능한 전체 문서 DB를 조회·유출할 수 있어요.
- 불안전한 로깅: 프롬프트·응답을 제대로 리댁션 없이 로그에 저장하면 공격자의 좋은 표적이 돼요.
- 모델 탈취: 가중치를 제대로 보호하지 않으면 유출돼 지식재산 손실이 나요.
애플리케이션 보안 (입출력 가드레일)
LLM 특유의 위협은 애플리케이션 계층에서 대응해요. 이 계층에서 핵심은 프롬프트 인젝션 방어와, LLM 보안 게이트웨이를 중심으로 한 시스템 설계예요.
- 프롬프트 인젝션 방어: 신뢰할 수 없는 사용자 입력에서 신뢰할 수 있는 지시를 분리하고, 입력을 정화(sanitize)하는 가드레일을 둬요.
- 출력 검증(Sanitize and validate all model-generated outputs before use): 모델이 생성한 모든 출력은 사용하기 전에 검증하고 정화해요. 안전 분류 모델(Llama Guard 등)과 결합해 위험한 응답이 사용자에게 노출되지 않게 막아요.
보안 체크리스트의 애플리케이션 보안 항목은 이렇게 정리돼요.
- 중앙 LLM 보안 게이트웨이 중심으로 시스템을 설계해요
- 사용자·서비스·파이프라인에 세분화된 RBAC 역할을 정의하고 강제해요
- 모든 관리 작업에 Just-in-Time(JIT) 접근을 사용해요
- 프롬프트 인젝션 방어를 구현해요
- 모델 생성 출력을 사용 전에 정화·검증해요
공개 애플리케이션 고려사항
이 가이드는 기본적으로 사설 네트워크(private-network-first) 보안 아키텍처를 다뤄요. 애플리케이션을 공개 인터넷에 노출해야 한다면 다음을 추가해요.
- 강화된 진입점: 모든 공개 트래픽은 단일 지점(관리형 ALB나 API Gateway)을 통과하게 하고, WAF와 DDoS 완화 서비스로 보호해요.
- 강력한 인증: OIDC 같은 견고한 인증 메커니즘으로 모든 엔드포인트를 보호해요. OIDC는 OAuth 2.0 인가 프레임워크 위에 구축돼요.
- 속도 제한: API 게이트웨이·로드밸런서에서 엄격한 rate limiting을 적용해 남용을 막고 백엔드를 보호해요.
- 네트워크 분리: 공개 구성 요소는 DMZ 같은 별도 격리 네트워크 세그먼트에 두고, 보안 백엔드와의 통신은 엄격한 방화벽 규칙으로 제어해요.