피드로 돌아가기
Managing Secret For Your Golang Apps With The GCP Secret Manager
Dev.toDev.to
Backend

GCP Secret Manager와 cloud.google.com/go/secretmanager 라이브러리를 활용해 Golang 앱의 시크릿을 안전하게 저장하고 Cloud Run에서 접근하는 방법 소개

Managing Secret For Your Golang Apps With The GCP Secret Manager

Razan Fawwaz2026년 4월 1일4intermediate

Context

서버리스 애플리케이션 개발 시 API 키, 데이터베이스 인증 정보 등의 시크릿을 안전하게 저장하는 문제가 존재한다. 공개 저장소에 시크릿 파일을 저장하면 보안 위험이 발생한다. GCP Cloud Run에 애플리케이션을 배포하려는 환경에서 Google Cloud Secret Manager 서비스를 활용하는 것이 효과적인 해결책이다.

Technical Solution

  • gcloud CLI의 gcloud auth login 명령으로 로컬 환경의 Google Cloud 인증을 수행한다
  • gcloud config set project 명령으로 대상 GCP 프로젝트 ID를 설정한다
  • gcloud services enable secretmanager.googleapis.com 명령으로 Secret Manager API를 활성화한다
  • gcloud secrets create <SECRET_NAME> --data-file=<SECRET_FILE_PATH> 명령으로 시크릿 파일을 Secret Manager에 저장한다
  • Go 코드에서 cloud.google.com/go/secretmanager/apiv1 패키지의 NewClient와 AccessSecretVersion 메서드로 시크릿을 조회한다
  • Secret Manager에서 Cloud Run 서비스 계정에 Add Principal으로 접근 권한을 부여한다

Impact

Cloud Run 배포 시 환경 변수로 GOOGLE_CLOUD_PROJECT_NUMBER와 SECRET_NAME을 설정하면 시크릿이 자동으로 주입된다

Key Takeaway

시크릿을 코드에 하드코딩하거나 저장소에 저장하는 대신 Secret Manager에 중앙 집중식으로 관리하고, Go 클라이언트 라이브러리를 통해 런타임에 안전하게 접근하는 패턴이 핵심이다


GCP Cloud Run에 배포하는 Golang 서버리스 앱에서 데이터베이스 인증용 JSON 파일을 Secret Manager에 저장하고 cloud.google.com/go/secretmanager 라이브러리로 런타임에 접근하여 보안 위험을 해소하고 중앙 집중식 시크릿 관리를 구현한다

원문 읽기