Service Account의 정체성과 역할
GCP Service Account는 애플리케이션이나 컴퓨팅 워크로드가 Google Cloud API에 인증하기 위해 사용하는 비인간 주체(non-human principal)입니다. 일반 사용자 계정과 달리 비밀번호가 없으며, 고유한 이메일 주소(예: my-app@project-id.iam.gserviceaccount.com)와 RSA 공개/개인 키 쌍으로 식별됩니다. 각 Service Account는 프로젝트에 속하며, 생성 후 다른 프로젝트로 이동할 수 없습니다.
인증 메커니즘과 크레덴셜 타입
Service Account는 두 가지 방식으로 인증합니다. 첫째, 단기 크레덴셜(short-lived credentials)을 자동으로 획득하는 방식으로, Application Default Credentials를 통해 1시간 유효한 OAuth 2.0 액세스 토큰을 얻습니다. 둘째, 사용자 관리 키(user-managed key)로 JWT에 서명한 후 액세스 토큰으로 교환하는 방식입니다. Google 관리 키 쌍은 시스템이 자동으로 순환하며 개인 키가 항상 에스크로 상태로 유지됩니다.
실무 고려사항: 키 관리와 보안
서비스 계정 키는 보안 위험이 크므로 가능한 한 단기 크레덴셜을 선호해야 합니다. Workload Identity Federation을 사용하여 외부 워크로드의 인증을 해결하거나, Compute Engine 인스턴스에 Service Account를 직접 어태치하여 자동 크레덴셜 관리를 활용하는 것이 권장됩니다. 각 계정은 최대 10개의 사용자 관리 키를 가질 수 있으며, 90일 이상 미사용 Service Account는 비활성화 후 삭제하여 불필요한 공격 표면을 줄여야 합니다.