Argus: 호출하는 모든 AI 모델을 위한 보안 계층
요약
Argus는 앱과 AI 모델 사이에 위치하는 오픈 소스 보안 게이트웨이입니다. 이 게이트웨이는 모든 요청과 응답을 스캔하여 AWS 키, PII 등 민감 정보를 탐지하고 차단하거나 마스킹합니다. 이를 통해 데이터 유출 방지와 규정 준수(Compliance)를 강화하며, 비용 최적화 기능도 제공합니다.
핵심 포인트
- 모든 AI 모델 호출 앞에 위치하는 보안 계층을 구축했습니다.
- AWS 키나 PII 등 민감 정보가 모델에 도달하기 전에 차단/마스킹됩니다.
- OpenAI 호환 게이트웨이로, Anthropic, vLLM 등 다양한 모델에 적용 가능합니다.
- 요청 난이도 기반의 비용 최적화(Tiered routing) 기능도 제공합니다.
앱이 AI 모델과 통신합니다. 누가 무엇을 주고받는지 감시할까요?
지난주 저는 AWS 시크릿 키가 데모 과정에서 서드파티 모델로 프롬프트를 통해 전송되는 것을 목격했습니다. 아무도 알아차리지 못했습니다. 그때부터 저는 AI 보안을 단순히 체크리스트 항목으로 취급하는 것을 멈추고, 사용자가 호출하는 모든 모델 앞에 자리 잡는 오픈 소스 보안 레이어인 Argus를 구축했습니다.
한 장의 그림으로 보는 문제점
현재 대부분의 앱은 다음과 같이 모델을 호출합니다: 앱 → API 키 → 모델. 그 사이에 아무것도 없습니다. 따라서:
- 개발자가 AWS 키를 프롬프트에 붙여넣습니다. 이 정보는 네트워크를 벗어납니다.
- 사용자의 이메일 주소와 전화번호가 대화 기록과 함께 전송됩니다.
- "이전 지침을 모두 무시하라(Ignore all previous instructions)"라는 내용이 사용자 입력으로 들어오지만, 아무도 이를 플래그 지정하지 않습니다.
- 정보 유출이 발생했을 때, 무엇이 일어났는지에 대한 기록이 없습니다.
LiteLLM과 같은 게이트웨이는 라우팅 및 예산 관리를 해결합니다. 하지만 그 사이에 있는 보안은 누구도 소유하고 있지 못합니다. 바로 이 간극을 Argus가 채웁니다.
Argus의 기능
Argus는 OpenAI와 호환되는 게이트웨이입니다. 앱에서 base_url 하나만 변경하여 Argus를 가리키게 하면, 모든 요청은 모델에 도달하기 전—들어올 때와 나갈 때 모두—보안 정책을 통과하게 됩니다. OpenAI, Anthropic, Bedrock, vLLM, Ollama 등 OpenAI 형태의 엔드포인트를 가진 모든 것이 대상입니다.
pip install argus-gateway
argus # localhost:4000에서 서비스됩니다
import openai
client = openai.OpenAI(api_key="<your-virtual-key>", base_url="http://localhost:4000/v1")
보안 메커니즘
네 가지 플러그인 가능한 탐지기(Detector)가 모든 요청과 응답을 스캔합니다. 탐지기는 찾아내고; 정책 엔진이 결정합니다—허용(allow), 마스킹(redact), 차단(block), 또는 플래그 지정(flag):
| 탐지기 | 감지하는 것 | 기본 동작 |
|---|---|---|
| Secrets | AWS 키, 개인 키, API 토큰, password = ... | 차단 — 모델에 절대 도달하지 않음 |
| ... |
모든 결정은 감사 로그(audit log)에 기록됩니다—타임스탬프, 키, 탐지기, 조치, 그리고 마스킹된 스니펫이 포함됩니다. 원본 PII와 시크릿 정보는 절대 추적 경로를 거치지 않습니다. 이것이 바로 귀하의 규정 준수 스토리입니다: GET /admin/audit.
실제 차단된 시크릿 키가 어떻게 보이는지 여기에서 확인해 보세요:
POST /v1/chat/completions
{"messages": [{"role": "user", "content": "my aws key is AKIA..."}]}
...
그리고 모든 성공적인 응답은 이 계층이 무엇을 했는지 알려줍니다:
"gateway": {
"security": {"redactions": ["pii:EMAIL"], "flags": []},
"cost_usd": 0.000004, "tier": "small", "degraded": false
...
비용 지능(Cost intelligence)이 함께 움직입니다
보안이 제품이지만, 이 게이트웨이는 돈에 대해서도 생각합니다. 왜냐하면 모든 요청을 보는 바로 그 계층이 가격을 책정하기에 적절한 장소이기 때문입니다:
- 계층별 라우팅(Tiered routing) — 요청의 난이도를 점수화하여 처리할 수 있는 가장 저렴한 계층으로 보냅니다.
- 유연 예산(Graceful budgets) — 예산을 초과해도 요청이 429 에러로 중단되는 대신 가장 저렴한 계층으로 폴백됩니다 (원한다면 하드 스톱 모드도 가능).
- 작업별 기여도 할당(Per-task attribution) —
X-Task-Id를 전달하여 전체 에이전트 실행(agentic run)의 지출을 하나의 작업으로 기록합니다.
이는 제가 이전에 진행했던 tokenecon 및 관련 논문의 작업에서 나온 것입니다.
사용해보고, 깨뜨려 보세요
아직 초기 단계입니다 — v0.1.0 버전이며 MIT 라이선스를 따릅니다. 지금 사람들이 구멍을 찔러주기를 바랍니다:
- GitHub: https://github.com/karmendra8386/argus
- PyPI:
pip install argus-gateway
향후 로드맵에는 스트리밍, Bedrock/Gemini/Mistral 어댑터, 시맨틱 캐싱(semantic caching), OpenTelemetry 내보내기 기능, 그리고 ML 기반 주입 탐지기가 포함될 예정입니다 (탐지기 인터페이스는 플러그인 방식이므로 기여를 환영합니다).
만약 여러분의 프롬프트가 실제로 문을 나설 때 무엇을 담고 있는지 궁금했던 적이 있다면 — Argus를 하루 동안 트래픽에 연결하여 감사 로그(audit log)를 확인해 보세요. 놀랄 수도 있습니다. 저도 그랬습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기