피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Cloud SQL Connector 제거를 통한 종속성 최소화 및 IAM 기반 동적 인증 구현
Cloud SQL IAM auth on Cloud Run with Postgres.js (without the connector package in your app)
AI 요약
Context
Cloud Run 환경에서 Cloud SQL 연결 시 관습적으로 사용하는 Connector 패키지로 인한 불필요한 앱 계층 종속성 발생. 기존 IAM 인증 방식의 1시간 토큰 만료 문제로 인해 런타임 중 연결 실패가 발생하는 아키텍처적 한계 존재.
Technical Solution
- Cloud Run의
--add-cloudsql-instances옵션을 통한 Unix Socket 직접 마운트로 네트워크 전송 계층 단순화 - Postgres.js의
password필드에 문자열 대신async함수를 전달하여 연결 생성 시점에 GCP Metadata Server에서 최신 OAuth2 토큰을 동적으로 획득하는 구조 설계 max_lifetime설정을 45분(2700초)으로 제한하여 IAM 토큰 만료 시간인 1시간 이전에 Connection Pool 내 커넥션을 강제 재순환시키는 전략 채택- Drizzle ORM과 Postgres.js 조합을 통해 정적 패스워드 없이 IAM Service Account 기반의 인증 흐름 구축
- 로컬 개발 환경과 운영 환경의 클라이언트 생성 로직을 분리하여 환경별 최적화된 연결 방식 제공
실천 포인트
1. Cloud Run 사용 시 Connector 패키지 대신 Unix Socket 마운트 검토
2. IAM DB 인증 도입 시 토큰 갱신 로직이 부팅 시점이 아닌 연결 생성 시점에 작동하는지 확인
3. IAM 토큰 유효 기간(1시간)보다 짧은 Connection max_lifetime 설정 적용 여부 점검
4. Service Account에 roles/cloudsql.client 및 roles/cloudsql.instanceUser 권한 부여 확인