Claude-skill-registry gcp-secret

GCP Secret Manager 조회/추가/관리

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/gcp-secret" ~/.claude/skills/majiayu000-claude-skill-registry-gcp-secret && rm -rf "$T"
manifest: skills/data/gcp-secret/SKILL.md
source content

GCP Secret Manager

Secret Manager를 사용하여 비밀(API 키, 비밀번호 등)을 안전하게 관리합니다.

사용법

/gcp-secret                        # 시크릿 목록 조회
/gcp-secret get my-api-key         # 시크릿 값 조회
/gcp-secret create my-secret       # 새 시크릿 생성
/gcp-secret update my-secret       # 시크릿 값 업데이트

Workflow

0. API 활성화 (최초 1회)

gcloud services enable secretmanager.googleapis.com --project=$PROJECT_ID

1. 시크릿 목록 조회

PROJECT_ID=$(gcloud config get-value project)
gcloud secrets list --project=$PROJECT_ID \
  --format="table(name.basename(),createTime.date(),replication.automatic)"

2. 시크릿 생성

# 빈 시크릿 생성
gcloud secrets create SECRET_NAME --project=$PROJECT_ID

# 값과 함께 생성
echo -n "my-secret-value" | gcloud secrets create SECRET_NAME \
  --data-file=- \
  --project=$PROJECT_ID

# 파일에서 생성
gcloud secrets create SECRET_NAME \
  --data-file=./secret.txt \
  --project=$PROJECT_ID

3. 시크릿 값 조회

# 최신 버전
gcloud secrets versions access latest --secret=SECRET_NAME

# 특정 버전
gcloud secrets versions access 1 --secret=SECRET_NAME

4. 시크릿 버전 추가 (업데이트)

echo -n "new-secret-value" | gcloud secrets versions add SECRET_NAME --data-file=-

5. 버전 목록 조회

gcloud secrets versions list SECRET_NAME \
  --format="table(name.basename(),state,createTime.date())"

6. 시크릿 삭제

# 버전 비활성화
gcloud secrets versions disable 1 --secret=SECRET_NAME

# 시크릿 전체 삭제
gcloud secrets delete SECRET_NAME

출력 형식

## Secret Manager 목록

| 시크릿 이름 | 생성일 | 버전 수 |
|-------------|--------|---------|
| api-key-prod | 2024-01-15 | 3 |
| db-password | 2024-01-10 | 1 |
| oauth-secret | 2024-02-01 | 2 |

---
총 3개 시크릿

### api-key-prod 버전

| 버전 | 상태 | 생성일 |
|------|------|--------|
| 3 | ENABLED | 2024-02-15 |
| 2 | DISABLED | 2024-01-20 |
| 1 | DESTROYED | 2024-01-15 |

애플리케이션에서 사용

Python

from google.cloud import secretmanager

client = secretmanager.SecretManagerServiceClient()
name = f"projects/{project_id}/secrets/{secret_id}/versions/latest"
response = client.access_secret_version(request={"name": name})
secret_value = response.payload.data.decode("UTF-8")

Cloud Run 환경변수로 마운트

gcloud run deploy SERVICE_NAME \
  --set-secrets=API_KEY=api-key-prod:latest

VM에서 접근

# gcloud로 직접 접근
gcloud secrets versions access latest --secret=SECRET_NAME

# 서비스 계정에 권한 부여 필요
gcloud secrets add-iam-policy-binding SECRET_NAME \
  --member="serviceAccount:SA_EMAIL" \
  --role="roles/secretmanager.secretAccessor"

비용

항목비용
활성 시크릿 버전$0.06/월
액세스$0.03/10,000회
순환 작업무료

모범 사례

  1. 버전 관리: 이전 버전은 비활성화 후 삭제
  2. 자동 순환: 정기적으로 시크릿 값 변경
  3. 최소 권한:
    secretAccessor
    역할만 부여
  4. 감사 로그: Cloud Audit Logs로 접근 모니터링

주의사항

  • 시크릿 값은 로그에 남기지 않음
  • 삭제된 버전은 복구 불가
  • 시크릿 이름은 변경 불가 (삭제 후 재생성)