멀티클라우드 환경에서 GCP를 Keyless로 쓰는 방법 | 2025 당근 GCP 밋업
- OAuth 2.0은 앱 권한 위임에 액세스 토큰을, OIDC는 로그인 및 워크로드 신원 확인에 ID 토큰을 사용하며, OIDC는 OAuth 2.0에 ID 토큰이 추가된 개념입니다. 🔑
- GCP 워크로드 아이덴티티 페더레이션(WIF)은 외부 워크로드가 서비스 어카운트 키 없이 구글 클라우드 리소스에 접근하도록 돕는 인증 방식입니다. 🤝
- WIF는 워크로드가 IDP로부터 ID 토큰을 발급받아 GCP STS에 제출, 클레임 검증 후 액세스 토큰을 받아 GCP 리소스에 접근하는 방식으로 동작합니다. 🔄
- ID 토큰의 클레임(필드 값)은 워크로드 아이덴티티 프로바이더 설정과 일치해야 하며, 특히
ISS, AUD, SUB 클레임이 검증의 핵심입니다. 🏷️
- 당근은 기존에 AWS 및 GitHub Actions에서 GCP 접근 시 서비스 어카운트 키를 사용했으나, 키 관리 복잡성, 로테이션 번거로움, 보안 위험 등의 문제에 직면했습니다. 🔐
- 목표는 키 사용을 점차 줄여 최종적으로 키 없는 환경을 구축하는 것입니다. 🚀
- GitHub Actions에 WIF를 적용하여 OIDC 프로바이더를 설정하고, 커스텀 액션을 통해 개발자가 WIF 경로와 서비스 어카운트 이메일을 몰라도 간편하게 인증할 수 있도록 구현했습니다. 🐙
- EKS WIF 적용 시, ID 토큰의 실제 클레임(예:
SUB)과 워크로드 아이덴티티 프로바이더의 애트리뷰트 매칭이 중요하며, 서비스 어카운트 임포서네이션(Impersonation) 방식을 통해 권한을 위임받아 사용합니다. 🎭
- 초기 EKS 적용 시 ARN 클레임 매칭 오류가 있었으나, ID 토큰의 실제 클레임을 확인하고 프로바이더 설정의 애트리뷰트와 정확히 매칭하여 문제를 해결했습니다. ✅
- 향후 과제는 키 없는 접근 방식을 확대하고, 여전히 키가 필요한 상황들을 해결하며, 키 유출 및 과도한 권한 부여와 같은 보안 위험을 지속적으로 관리하는 것입니다. 💡