pile·
보안·vercel-blogVercel Blog·

OpenID Connect로 백엔드 연결 보안 강화하기

Vercel이 OIDC(OpenID Connect) 페더레이션 지원을 출시하여 빌드·Functions에서 사용하던 장기 환경변수 자격증명을 RSA 서명된 단기 JWT 토큰으로 교체할 수 있게 됐다. AWS AssumeRoleWithWebIdentity를 포함한 주요 클라우드 서비스와의 연동 방식 및 내부 동작 원리를 코드 예제와 함께 설명한다.

핵심 포인트
  • 장기 자격증명(AWS_ACCESS_KEY_ID 등 환경변수) 대신 RSA 서명 단기 JWT로 교체해 탈취 위험 최소화
  • Vercel이 OIDC Identity Provider(IdP) 역할 수행, 외부 요청 시 자동으로 서명된 토큰 발급
  • `@vercel/functions/oidc`의 `awsCredentialsProvider`로 AWS 서비스 연결 시 코드 2줄 변경만 필요
  • AWS `AssumeRoleWithWebIdentity`를 통해 Role ARN 기반 임시 자격증명 자동 교환
  • JWT 페이로드에 Vercel 프로젝트·환경·만료일(`exp`) 포함, 디코딩으로 검증 가능
  • AWS·Azure·Firebase·GCP 등 주요 클라우드가 Vercel OIDC 토큰 신뢰, 단일 인증 프레임워크 통합 가능
상세 정리
  • OIDC 동작: IdP(Vercel)와 서비스 제공자 간 신뢰 관계 설정 → 요청 시 서명 토큰 발급 → 수신자가 토큰 검증
  • JWT 구조: iss(Vercel OIDC URL), sub(owner:project:environment), aud, exp, iat 포함, RSA 서명
  • 기존 방식: `.env`에 `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` 저장 → 정적이고 장기 유효, 탈취 시 피해 지속
  • OIDC 방식: `awsCredentialsProvider({ roleArn: process.env.AWS_ROLE_ARN })` 한 줄로 동적 교환
  • Vercel Function 실행 시 OIDC 토큰 자동 삽입 → `AssumeRoleWithWebIdentity`로 AWS 임시 자격증명 획득
  • 저장되는 것: Role ARN(민감하지 않음)만 환경변수에 보관, 자격증명 자체는 저장 불필요
  • S3 연동 예제: `@aws-sdk/client-s3`와 `awsCredentialsProvider`를 조합해 기존 코드 최소 수정
  • 토큰 만료: `exp` 필드로 단기 유효 기간 강제, 탈취되어도 악용 가능 시간 제한
  • Secure Compute와 조합: 엣지↔백엔드 보안 경계 + OIDC 단기 토큰으로 이중 보호
왜 읽나클라우드 자격증명 관리의 고질적 보안 위험을 환경변수 저장 대신 OIDC 기반 단기 토큰으로 해결하는 실전 패턴을 코드와 함께 확인할 수 있다.
vercel-blog
Vercel Blog 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 보안·cloudflare-blogCloudflare Blog·

    오리진 서버 포스트 퀀텀 인증 지원 — ML-DSA mTLS 구현기

    Cloudflare가 오리진 서버와의 TLS 연결에 포스트 퀀텀 인증(ML-DSA)을 도입했다. 2023년 이미 포스트 퀀텀 암호화(encryption)가 배포됐지만, 인증(authentication)은 여전히 양자 공격에 취약한 상태였다. Authenticated Origin Pulls(AOP)와 Custom Origin Trust Store(COTS) 두 제품을 통해 완전한 상호 인증 TLS를 구현했으며, FIPS 204(ML-DSA) 표준을 오리진 연결에 적용한 첫 번째 마일스톤이다.

    #mtls#tls#post-quantum+2