Claude-skill-registry gcp-iam

GCP IAM 서비스 계정 및 권한 관리

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.md
source 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

자주 쓰는 역할

조회 전용

역할설명
roles/viewer
프로젝트 전체 읽기
roles/storage.objectViewer
Storage 객체 읽기
roles/bigquery.dataViewer
BigQuery 데이터 읽기
roles/logging.viewer
로그 읽기

쓰기 포함

역할설명
roles/editor
프로젝트 전체 편집
roles/storage.objectAdmin
Storage 객체 관리
roles/cloudsql.client
Cloud SQL 접속
roles/secretmanager.secretAccessor
Secret 읽기

Cloud Run / Functions

역할설명
roles/run.invoker
Cloud Run 호출
roles/cloudfunctions.invoker
Functions 호출
roles/run.admin
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"

모범 사례

  1. 최소 권한: 필요한 역할만 부여
  2. 서비스 계정 분리: 용도별로 별도 생성
  3. 키 관리:
    • 가능하면 키 대신 Workload Identity 사용
    • 키는 90일마다 순환
  4. 비활성화: 미사용 계정은 비활성화 후 삭제

주의사항

  • roles/owner
    는 부여하지 않음 (보안 위험)
  • JSON 키는 안전하게 보관 (Git 커밋 금지!)
  • 키 유출 시 즉시 삭제 후 재생성