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-iam" ~/.claude/skills/majiayu000-claude-skill-registry-gcp-iam && rm -rf "$T"
manifest:
skills/data/gcp-iam/SKILL.mdsource content
GCP IAM Management
서비스 계정 생성, 역할 부여, 키 관리를 수행합니다.
사용법
/gcp-iam # 서비스 계정 목록 /gcp-iam create my-service # 서비스 계정 생성 /gcp-iam grant viewer # 역할 부여 /gcp-iam key my-service # JSON 키 생성
Workflow
1. 서비스 계정 목록
PROJECT_ID=$(gcloud config get-value project) gcloud iam service-accounts list --project=$PROJECT_ID \ --format="table(email,displayName,disabled)"
2. 서비스 계정 생성
gcloud iam service-accounts create SA_NAME \ --display-name="SA_DISPLAY_NAME" \ --description="Description" \ --project=$PROJECT_ID
3. 역할 부여
# 프로젝트 수준 역할 gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:SA_NAME@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/storage.objectViewer" # 여러 역할 부여 for role in roles/storage.objectViewer roles/logging.logWriter; do gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:SA_EMAIL" \ --role="$role" done
4. 역할 제거
gcloud projects remove-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:SA_EMAIL" \ --role="roles/ROLE_NAME"
5. JSON 키 생성
gcloud iam service-accounts keys create ./sa-key.json \ --iam-account=SA_EMAIL
6. 서비스 계정 삭제
gcloud iam service-accounts delete SA_EMAIL
자주 쓰는 역할
조회 전용
| 역할 | 설명 |
|---|---|
| 프로젝트 전체 읽기 |
| Storage 객체 읽기 |
| BigQuery 데이터 읽기 |
| 로그 읽기 |
쓰기 포함
| 역할 | 설명 |
|---|---|
| 프로젝트 전체 편집 |
| Storage 객체 관리 |
| Cloud SQL 접속 |
| Secret 읽기 |
Cloud Run / Functions
| 역할 | 설명 |
|---|---|
| Cloud Run 호출 |
| Functions 호출 |
| Cloud Run 관리 |
출력 형식
## 서비스 계정 목록 | 이메일 | 이름 | 상태 | |--------|------|------| | my-sa@project.iam.gserviceaccount.com | My Service Account | 활성 | | compute@...gserviceaccount.com | Compute Engine SA | 활성 | --- ### my-sa@project.iam.gserviceaccount.com 역할 | 역할 | 범위 | |------|------| | roles/storage.objectViewer | 프로젝트 | | roles/logging.logWriter | 프로젝트 |
현재 계정의 역할 확인
# 프로젝트 IAM 정책 조회 gcloud projects get-iam-policy $PROJECT_ID \ --flatten="bindings[].members" \ --format="table(bindings.role)" \ --filter="bindings.members:SA_EMAIL"
모범 사례
- 최소 권한: 필요한 역할만 부여
- 서비스 계정 분리: 용도별로 별도 생성
- 키 관리:
- 가능하면 키 대신 Workload Identity 사용
- 키는 90일마다 순환
- 비활성화: 미사용 계정은 비활성화 후 삭제
주의사항
는 부여하지 않음 (보안 위험)roles/owner- JSON 키는 안전하게 보관 (Git 커밋 금지!)
- 키 유출 시 즉시 삭제 후 재생성