AI VIDEO BRIEFING
AI 에이전트 보안: Kagenti로 멀티 에이전트 ‘혼란된 대리인’ 취약점 차단하기
여러 AI 에이전트를 운영할 때 생기는 ‘혼란된 대리인’ 보안 문제를, 경로가 아닌 신원을 보호하는 오픈소스 프로젝트 Kagenti로 해결하는 방법을 정리했다.

핵심 메시지
쉽게 이해하기
여러 AI 에이전트를 실제 서비스에 함께 투입하면, 정당한 권한을 가진 에이전트가 그 권한을 써서는 안 될 요청에 동원되는 ‘혼란된 대리인’ 문제가 생긴다. 발표자는 병원의 환자 청구 시스템을 예로 든다. 오케스트레이션을 맡은 에이전트 A가 환자 데이터 접근용 토큰을 받은 뒤, 보험 가입 여부만 확인하면 되는 하위 에이전트 D에게 작업을 넘기는 과정에서 그 토큰까지 함께 전달된다. 결국 환자 기록에 접근할 이유가 없던 D가 접근 권한을 갖게 되고, 감사 로그에는 ‘정상적인 인가된 활동’으로만 남는다.
이 문제가 까다로운 이유는 에이전트의 본질에 있다. 전통적인 애플리케이션은 ‘이 서비스는 저 서비스를 호출한다’는 식의 정해진 호출 그래프가 있어 네트워크에 미리 구워 넣을 수 있다. 반면 에이전트의 가치는 다음 행동을 스스로 정하는 데 있어, 요청이 어떤 경로를 탈지 정적으로 보장할 수 없다. 그래서 Kagenti는 경로를 지키려는 시도를 멈추고 신원을 지키는 쪽으로 방향을 바꾼다.
Kagenti로 에이전트를 배포하면 두 개의 사이드카가 함께 붙는다. 하나는 SPIFFE로, 사용자 이름·비밀번호나 복사·재사용 가능한 고정 API 키가 아니라, 특정 워크로드·네임스페이스·서비스 계정에 묶인 단기 X.509 인증서를 발급해 에이전트에 암호학적 신원을 준다. 다른 하나는 에이전트를 KeyCloak의 OAuth2 클라이언트로 등록해, 특정 도구에 한정된 토큰만 요청하도록 만든다.
핵심 해결책은 AuthBridge다. 에이전트가 호출할 때마다 AuthBridge는 ‘이것은 에이전트 D이며, 에이전트 A가 특정 사용자를 대신해 호출했다’는 전체 사슬을 순서대로 암호학적으로 서명해 헤더에 넣는다. 요청이 환자 기록 도구(또는 그 앞의 게이트웨이)에 도착하면, 사슬에 등장한 모든 행위자가 그 자원에 대해 인가되었는지 검사한다. D가 환자 데이터에 손대면 안 된다면, 사슬을 타고 받은 유효한 토큰을 들고 있어도 정책이 작동해 차단된다.
개발자 경험 측면에서 AuthBridge는 배포 시 SPIFFE 신원 발급·갱신, KeyCloak OAuth2 클라이언트 등록, 인바운드 토큰을 코드보다 먼저 검증하는 프록시 구성을 알아서 처리하며, 에이전트 컨테이너 자체는 건드리지 않는다. 도구 쪽은 MCP 게이트웨이가 앞단에서 라우팅·속도 제한·토큰 검증을 한곳에서 맡고, Istio 앰비언트 모드가 모든 에이전트·도구 사이의 암호화·상호 인증 통신을 추가 설정 없이 처리한다. 모든 통신이 표준 HTTP라 OpenTelemetry가 자동 계측되고, Phoenix와 MLflow로 추적·실험 관리가 가능하다.
주요 인사이트
- 멀티 에이전트 보안의 발상 전환: ‘요청이 지나갈 경로’를 고정하는 대신, ‘요청과 함께 이동하는 신원’을 검증한다.
- 역할 기반 접근 제어(RBAC)는 경로를 미리 알아야 하므로 에이전트 환경에 한계가 있고, 위임 사슬 전체에 대한 인가 검사가 그 빈틈을 메운다.
- 고정 API 키 대신 워크로드에 묶인 단기 인증서를 쓰면, 컨텍스트에서 키가 새어 나가 수년간 재사용되는 위험을 줄일 수 있다.
- 보안·신원·네트워킹·관측 가능성이 표준 HTTP 위에서 묶여 있어, 문제가 생겼을 때 하나의 추적 ID로 ‘무슨 일이 있었고 누가 인가했는지’를 따라갈 수 있다.
- Kagenti 구성 요소는 모두 Apache 라이선스 오픈소스라, 특정 프레임워크로 만든 에이전트든 가져와 보안 계층만 덧씌울 수 있다.
자주 묻는 질문
‘혼란된 대리인(confused deputy)’이란 무엇인가요?
정당한 권한을 가진 에이전트가 속아서, 그 권한을 가져서는 안 되는 요청에 사용하게 되는 상황을 말합니다. 영상에서는 보험 확인만 맡은 하위 에이전트가 환자 데이터 접근 토큰까지 넘겨받아, 권한 없이 환자 기록에 접근하게 되는 예가 제시됩니다.
왜 전통적인 네트워크 분리로는 이 문제를 막기 어렵나요?
전통적 애플리케이션은 정해진 호출 그래프가 있어 경로를 네트워크에 고정할 수 있지만, 에이전트는 다음 행동을 스스로 정하기 때문에 요청이 탈 경로를 미리 보장할 수 없기 때문입니다.
Kagenti는 어떤 방식으로 이 문제를 해결하나요?
경로 대신 신원을 보호합니다. SPIFFE 단기 인증서와 KeyCloak OAuth2로 에이전트에 암호학적 신원을 부여하고, AuthBridge가 호출마다 서명된 위임 사슬을 헤더에 담아 마지막 단계에서 사슬 전체의 권한을 검사합니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗