GCP 환경변수 설정 가이드

yeahcold·2025년 3월 20일
0

Data Engineering

목록 보기
2/20

Cloud Functions와 Cloud Run을 사용할 때, 환경변수를 어떻게 설정하고 관리하면 좋을지 정리해보았다. 보안을 고려해 .env 파일이나 Secret Manager를 사용하는 방법도 추가하였다.


1. 환경변수란?

환경변수(Environment Variables)는 애플리케이션 실행 시 외부에서 주입할 수 있는 값이다.
API 키, DB 주소, 서비스 계정 키 등 민감한 정보를 코드에 하드코딩하지 않고 주입할 때 자주 사용한다.


2. Cloud Functions에서 환경변수 설정

Cloud Functions 배포 시 --set-env-vars 옵션을 이용해 설정할 수 있다.

gcloud functions deploy my-function \
  --runtime python39 \
  --trigger-http \
  --set-env-vars API_KEY=xxx,DATABASE_URL=mysql://...

단, 콘솔이나 로그에서 환경변수가 노출될 수 있으므로 민감한 값은 다른 방식으로 관리하는 게 안전하다.


3. .env 파일 활용

로컬 테스트나 배포 자동화 스크립트에서는 .env 파일을 활용할 수 있다.

예시

API_KEY=your-secret-api-key
DATABASE_URL=mysql://user:password@host/db

배포 스크립트 예시

if [ -f .env ]; then
  export $(cat .env | xargs)
fi

gcloud functions deploy my-function \
  --runtime python39 \
  --trigger-http \
  --set-env-vars API_KEY=$API_KEY,DATABASE_URL=$DATABASE_URL

4. .gitignore / .gcloudignore 설정

.env 파일은 Git이나 GCP 배포 대상에서 제외하는 게 좋다.

# .gitignore / .gcloudignore
.env

이 설정을 통해 민감한 정보가 외부에 유출되는 것을 방지할 수 있다.


5. Cloud Run에서 환경변수 설정

Cloud Run도 --set-env-vars 옵션으로 설정할 수 있다.

gcloud run deploy my-service \
  --image gcr.io/my-project/my-image \
  --set-env-vars API_KEY=xxx,DATABASE_URL=xxx

콘솔 UI에서도 환경변수를 직접 추가할 수 있다.
(서비스 → 편집 및 배포 → 환경 변수 설정)


6. Secret Manager 사용

환경변수에 직접 민감한 값을 넣는 게 부담스러울 경우, Secret Manager를 사용할 수 있다.

# 비밀 생성
gcloud secrets create my-secret --replication-policy=automatic

# 값 저장
echo -n "your-secret-value" | gcloud secrets versions add my-secret --data-file=-

# 환경변수에 secret 참조
gcloud functions deploy my-function \
  --set-env-vars API_KEY=projects/$PROJECT_ID/secrets/my-secret/versions/latest

Secret Manager를 사용하면 IAM 권한으로 접근 제어가 가능해 보안적인 장점이 있다.


참고사항

  • 코드에 민감한 값은 하드코딩하면 안 된다.
  • .env 파일은 Git이나 배포 대상에서 제외해야한다.
  • 민감한 정보는 Secret Manager로 분리하는 게 좋다. -> 추천!

운영 중인 GCP 프로젝트가 있다면, 보안과 유지보수를 위해 환경변수 관리 방식을 한 번쯤 점검해보는 게 좋지 않을까?

profile
Software Engineer

0개의 댓글