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.mdsource 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회 |
| 순환 작업 | 무료 |
모범 사례
- 버전 관리: 이전 버전은 비활성화 후 삭제
- 자동 순환: 정기적으로 시크릿 값 변경
- 최소 권한:
역할만 부여secretAccessor - 감사 로그: Cloud Audit Logs로 접근 모니터링
주의사항
- 시크릿 값은 로그에 남기지 않음
- 삭제된 버전은 복구 불가
- 시크릿 이름은 변경 불가 (삭제 후 재생성)