pile·
보안·LY CorporationLY Corporation·

ID-JAG The Hard Way: 실패로 배우는 AI 에이전트 보안 핸즈온

LY Corporation 엔지니어가 AI 에이전트의 인가(Authorization) 문제를 OAuth 2.0 확장 표준인 ID-JAG(Identity Assertion JWT Authorization Grant)로 해결하는 핸즈온을 공개했다. IETF OAuth 워킹 그룹에서 논의 중인 이 초안은 기존 인증 중심 접근을 "이 에이전트가 이 사용자를 대신해 이 권한 범위 내에서 이 리소스에 접근하도록 인가됐는가?"로 재정의한다. Keycloak + Athenz + Ollama/Gemma 4 스택으로 로컬 쿠버네티스 환경을 구성해 실패 시나리오부터 정상 흐름까지 단계별로 체험할 수 있다.

핵심 포인트
  • ID-JAG는 RFC 8693(Token Exchange) + RFC 7523(JWT Grant)을 결합해 AI 에이전트에 위임된 인가 토큰을 발급하는 IETF 진행 중 표준이다.
  • 기존 OIDC ID 토큰은 "사용자가 클라이언트에 인증됐음"만 증명하며, 리소스 접근 인가를 위해 에이전트에 직접 전달하면 과잉 권한이나 위임 체인 불명확 문제가 생긴다.
  • 데모 스택: Keycloak(IdP 인증) + Athenz(기업 정책 평가 + 액세스 토큰 발급) + KeycloakTokenExchangePlugin(두 시스템 연결) + Open WebUI/Ollama/Gemma 4(에이전트) + MCP 서버.
  • 핸즈온은 정상 흐름 전에 401 Unauthorized, 토큰 교환 실패, 위임 체인 단절 등 의도적 실패를 먼저 경험하게 설계됐다.
  • 전체 핸즈온 환경이 athenz-community/id-jag-the-hard-way GitHub 저장소에 오픈소스로 공개됐다.
상세 정리
  • 문제 배경: AI 에이전트가 사용자 대신 민감한 리소스에 접근할 때 어떤 에이전트가, 어떤 사용자를 위해, 어떤 범위만 쓸 수 있는가를 검증하는 표준 인가 메커니즘이 없었다.
  • ID 토큰의 한계: OIDC ID 토큰은 사용자가 클라이언트에 성공적으로 인증됐음을 증명하는 아티팩트다. 인가 그랜트(특정 리소스·범위 접근을 위한 액세스 토큰 요청)와 목적이 달라 에이전트에 그대로 넘기면 위임 체인이 불분명해진다.
  • ID-JAG 설계: RFC 8693 Token Exchange와 RFC 7523 JWT Profile을 결합해 사용자 ID를 어설션하는 JWT로 인가 서버에 액세스 토큰을 요청한다. 위임 체인(에이전트 → 사용자 → 리소스)이 JWT 클레임에 명시된다.
  • 아키텍처 구성: Keycloak이 사용자 로그인을 처리하고, Athenz의 KeycloakTokenExchangePlugin이 Keycloak 토큰을 Athenz로 연결하며, Athenz가 기업 정책을 평가해 최종 액세스 토큰을 발급한다.
  • 8단계 실행 흐름: 사용자 Keycloak 로그인 → AI 에이전트(Open WebUI)에 작업 지시 → Athenz에 ID-JAG 토큰 요청 → 기업 정책 평가 → 액세스 토큰 요청 → MCP 서버 호출(토큰 포함) → 토큰 교환 → 리소스 서버 최종 접근.
  • 실패 학습 설계: 토큰 없이 API 호출 시 401, 권한 누락으로 토큰 교환 실패, 위임 체인 단절 등을 순서대로 경험하게 해 각 단계의 역할을 직접 체득한다.
  • 향후 계획: Tech-Verse 2026에서 "AI 시대의 차세대 인가 표준"을 주제로 발표 예정.
왜 읽나AI 에이전트에 사용자 위임 권한을 안전하게 부여하는 OAuth 확장 표준을 실습 환경과 함께 이해하고 싶은 보안·백엔드 엔지니어에게 유용하다.
LY Corporation
LY Corporation 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 보안·gitlab-engGitLab Blog·

    Serena MCP 에이전트의 치명적 원격 코드 실행 취약점 분석

    GitLab 보안팀이 AI 코딩 에이전트 Serena(월 PyPI 다운로드 13.6만 건)에서 치명적 원격 코드 실행 취약점을 발견했다. Jinja2 비샌드박스 환경과 신뢰 모델의 미검사 경로가 결합해 개발자가 악의적 저장소를 열기만 해도 코드가 실행된다. serena-agent 1.7.0에서 SandboxedEnvironment 교체로 수정 완료됐다.

    요약 이어보기
    #mcp#security#rce+2