pile·
보안·vercel-blogVercel Blog·

Vercel Connect — 에이전트를 위한 런타임 자격증명 교환 보안 모델

Vercel Connect가 AI 에이전트의 외부 서비스 연동 보안 패러다임을 장기 저장 토큰에서 런타임 자격증명 교환(runtime credential exchange) 모델로 전환한다. 에이전트가 Slack, GitHub, Salesforce 등에 접근할 때 환경에 저장된 장기 토큰 대신, 작업 범위만큼만 제한된 단기 토큰을 요청 시점에 OIDC 신원 검증으로 발급받는다.

핵심 포인트
  • OIDC 신원 증명 기반으로 Vercel 배포가 토큰 요청 시 프로젝트/환경 권한 검증 후 제공자 자격증명을 반환한다
  • getToken('slack/mybot', { subject: { type: 'app' } }) 한 번의 API 호출로 단기 자동갱신 토큰을 획득, 앱 내 저장 불필요
  • GitHub 토큰을 특정 저장소 + 읽기 권한 수준으로 제한하는 세분화된 scoped authorization을 지원한다
  • 사용자 대신 동작하는 에이전트는 subject.type을 'user'로 지정해 사용자별 OAuth 스코핑이 가능하다
  • Slack 웹훅을 Vercel Connect가 먼저 수신해 서명 검증 후 OIDC로 재서명, 앱이 봇 토큰이나 서명 시크릿을 보유하지 않는 구조
상세 정리
  • 기존 문제: 환경변수 장기 토큰은 누출 시 모든 시스템 노출, 모든 사용자가 동일 토큰 공유, 만료 없음, 소작업에도 전체 권한 부여
  • 아키텍처 4단계: 커넥터 등록 → 런타임 단기 자격증명 요청 → OIDC 신원으로 앱 검증 → 작업 범위 제한 토큰 반환
  • CLI 등록: vercel connect create slack --name mybot으로 커넥터 생성, 프로젝트/환경 간 재사용 가능한 단일 엔티티
  • TypeScript SDK: await getToken(provider, { subject, authorizationDetails }) 형태, 토큰 자동 갱신, 앱 저장 불필요
  • GitHub 세분화 예시: authorizationDetails에 repositories 목록과 permissions를 명시해 contents:read만 허용하는 최소권한 토큰 발급
  • 사용자 스코핑: subject: { type: 'user', id: 'user_123' }로 지정, OAuth 승인 후 해당 사용자 권한 범위 내에서만 에이전트 동작
  • 환경 격리: 개발/프리뷰/프로덕션 환경별 별도 커넥터 운영 가능, vercel connect revoke-tokens로 즉시 전체 토큰 폐기
  • 트리거 포워딩: Slack/GitHub/Linear 웹훅을 Vercel Connect가 수신해 Slack 서명으로 검증, OIDC로 재서명 후 앱에 전달 — 앱이 시크릿 값을 직접 보유하지 않음
  • 프레임워크 통합: @vercel/connect/ai-sdk, @vercel/connect/mcp, eve 프레임워크의 defineMcpClientConnection 네이티브 지원
  • 지원 서비스: Slack, GitHub, Linear, Discord, Notion, Salesforce, Figma, Snowflake 전용 커넥터 + 범용 OAuth/API 키 커넥터
  • 가격 모델: Hobby 월 5,000 토큰 요청 무료, Pro/Enterprise는 10,000 요청당 $3
왜 읽나AI 에이전트에서 외부 서비스 연동 시 자격증명 보안 아키텍처를 어떻게 설계해야 하는지 실제 코드와 함께 보여주는 레퍼런스다.
vercel-blog
Vercel Blog 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 보안·gitlab-engGitLab Blog·

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

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

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