왜 나는 AI 에이전트를 신뢰하지 않게 되었고 보안 집행자를 만들었는가.

발행: (2026년 3월 10일 AM 11:32 GMT+9)
6 분 소요
원문: Dev.to

Source: Dev.to

Introduction

모든 AI 에이전트 구축 튜토리얼에는 다음과 같은 문구가 포함됩니다:

“모델에게 민감한 데이터에 접근하지 말라고 시스템 프롬프트를 추가하세요.”

나는 한동안 그 조언을 따랐지만, 결국 확률적 텍스트 예측기에 보안 경계를 강제하도록 요구하고 있다는 것을 깨달았습니다. 그것은 보안이 아니라 낙관주의에 불과합니다.

AI 에이전트는 예측 가능하고 문서화된 방식으로 실패합니다:

  • 도구 오용 – 에이전트가 사용하면 안 되는 도구를 호출합니다.
  • 도구 출력에 의한 프롬프트 인젝션 – 에이전트가 웹 페이지를 탐색하거나 도구를 호출했을 때 속임수를 당합니다.
  • 비밀 누출 – API 키, 토큰, 개인 식별 정보(PII)가 도구 입력 및 출력으로 흐릅니다.
  • 무제한 비용 발생 – 루프에 빠지거나 오류가 발생한 에이전트가 무한히 비용을 발생시킬 수 있습니다.

이것들은 특수한 공격이 아니라, 어느 생산 시스템에서도 반드시 처리해야 하는 지루하고 예측 가능한 실패 모드입니다. 문제는 모델이 아니라, 모델이 설계된 대로 정확히 동작한다는 점입니다. 보안 요구사항은 모델의 프롬프트가 아니라 결정론적인 코드에서 강제되어야 합니다.

Argus의 핵심 아이디어는 모든 도구 호출이 코드에 의해 검증되는 보안이 적용된 환경 안에서 LLM을 유지하는 것입니다.

How Argus Works

Argus의 모든 도구 호출은 실행되기 전에 SecurityGateway를 통과합니다.

# Before the tool runs:
gateway.pre_tool_call(
    tool_name="read_file",
    arguments={"path": "/etc/passwd"},
    agent_role="executor"
)

# The tool runs (or doesn’t, if blocked)

# After the tool returns:
gateway.post_tool_call(
    tool_name="read_file",
    result=tool_output,
    agent_role="executor"
)

각 호출은 다음 다섯 가지 검사를 순차적으로 수행합니다:

  1. 권한 강제 – Casbin(RBAC + ABAC)을 사용합니다. 각 에이전트 역할은 명시적인 권한을 가집니다.
  2. 프롬프트 인젝션 탐지 – 14개의 OWASP LLM01:2025 패턴과 매칭합니다.
  3. 비밀 정보 마스킹 – API 키, 토큰, PII를 감지하고 제거합니다.
  4. 외부 전송 검증 – 아웃바운드 요청을 선언된 허용 목록과 대조합니다.
  5. 감사 로깅 – 허용되었든 차단되었든 모든 호출을 감사 로그에 기록합니다.

LangChain Integration

from argus.adapters.langchain import wrap_tools
from argus.security.gateway import SecurityGateway, GatewayConfig
from argus.security.audit.daemon import AuditDaemon
from argus.security.audit.logger import AuditLogger

with AuditDaemon(socket_path="/tmp/audit.sock", log_path="audit.jsonl") as daemon:
    audit_logger = AuditLogger("/tmp/audit.sock")
    gateway = SecurityGateway(config=GatewayConfig(), audit_logger=audit_logger)
    safe_tools = wrap_tools(your_tools, gateway=gateway, agent_role="executor")

이 어댑터는 프록시 패턴(콜백이 아님)을 사용하여 모든 도구 호출이 게이트웨이를 통해 라우팅되도록 보장합니다.

Spend Caps

Argus는 LiteLLM 응답에서 실제 토큰 수를 사용해 비용 추적기를 포함하고 있어, 예산 초과 시 실행을 중단하는 하드 캡을 설정할 수 있습니다.

Installation

pip install git+https://github.com/yantandeta0791/argus

설치 후 argus demo 명령으로 간단한 데모를 실행할 수 있습니다.

What Argus Doesn’t Solve

  • Argus는 도구 경계에서 보안을 강제합니다; 모델 자체를 더 똑똑하게 만들지는 않습니다.
  • 좋은 시스템 프롬프트 설계를 대체하지 않습니다. 잘 설계된 프롬프트는 여전히 바람직하지 않은 행동이 발생할 확률을 낮춥니다.

Argus를 깊이 있는 방어로 생각하세요: 견고한 프롬프트 + 도구 수준 보안 강제 = 보다 강력한 에이전트.

Future Directions

리포지토리는 .에 호스팅되어 있습니다. 실제 운영 환경에서 에이전트 보안 사고를 겪으셨다면, 저자는 해당 시나리오를 설명하는 댓글이나 이슈를 환영합니다.

0 조회
Back to Blog

관련 글

더 보기 »

개발자 역할, 재정의

Developer = Product + Architect + QA. 이것이 AI 에이전트가 가져온 새로운 현실 속에서 오늘날 소프트웨어 엔지니어의 역할이다. 그리고 만약 그 공식이 …