피드로 돌아가기
Dev.toBackend
원문 읽기
AI 에이전트의 OAuth 토큰 만료로 인한 장애(1시간 TTL 중 결제 파이프라인 중단)를 4가지 볼트 패턴으로 해결
OAuth Token Vault Patterns for AI Agents
AI 요약
Context
AI 에이전트는 웹앱과 달리 연속 실행되므로 장기간 API 접근이 필요한데, OAuth 토큰 만료(1시간 TTL)와 갱신 로직 부재로 파이프라인 중단이 발생했다. 환경변수, 평문 DB 저장, 메모리 저장 같은 기존 방식은 토큰 순환 불가, 암호화 부족, 재시작 시 손실 문제를 초래했다.
Technical Solution
- AES-256-GCM 암호화 도입: 저장된 모든 토큰을 AES-256-GCM으로 암호화하고, 마스터 키 + 테넌트 ID로 테넌트별 유도 키 생성(HKDF-SHA256 사용)
- 토큰 갱신 데몬 구현: 1분마다 깨어나서 만료 예정인 토큰을 선제적으로 갱신하여 파이프라인 중단 방지
- 서킷브레이커 패턴 적용: 에이전트의 모든 API 호출을 서킷브레이커로 감싸서 토큰 실패 시 우아한 성능 저하 제공
- 테넌트 격리 구현: TypeScript 레벨의 볼트 인스턴스 격리와 데이터베이스 행 수준 보안(RLS)으로 교차 테넌트 접근 방지
- 키 버전 관리: EncryptedToken에 keyId 필드를 추가하여 마스터 키 순환 시 기존 데이터의 재암호화 대상을 식별 가능
Key Takeaway
암호화만으로는 충분하지 않으며, 암호화(저장 데이터 보호) + 격리 계층(애플리케이션 손상 시 피해 제한) + 선제적 갱신(시간적 실패 방지)의 심층 방어 조합이 프로덕션 AI 에이전트 시스템의 안정성을 결정한다.
실천 포인트
외부 API를 호출하는 멀티테넌트 AI 에이전트 시스템에서 테넌트별 파생 키를 사용한 AES-256-GCM 암호화, 1분 단위 선제적 토큰 갱신 데몬, 그리고 RLS를 통한 데이터베이스 격리를 함께 적용하면 OAuth 토큰 만료로 인한 파이프라인 중단과 테넌트 간 토큰 유출을 동시에 방지할 수 있다.