GCP IAM Management
서비스 계정 생성, 역할 부여, 키 관리를 수행합니다.
사용법
/gcp-iam # 서비스 계정 목록
/gcp-iam create my-service # 서비스 계정 생성
/gcp-iam grant viewer # 역할 부여
/gcp-iam key my-service # JSON 키 생성
Workflow
1. 서비스 계정 목록
bash
1PROJECT_ID=$(gcloud config get-value project)
2gcloud iam service-accounts list --project=$PROJECT_ID \
3 --format="table(email,displayName,disabled)"
2. 서비스 계정 생성
bash
1gcloud iam service-accounts create SA_NAME \
2 --display-name="SA_DISPLAY_NAME" \
3 --description="Description" \
4 --project=$PROJECT_ID
3. 역할 부여
bash
1# 프로젝트 수준 역할
2gcloud projects add-iam-policy-binding $PROJECT_ID \
3 --member="serviceAccount:SA_NAME@$PROJECT_ID.iam.gserviceaccount.com" \
4 --role="roles/storage.objectViewer"
5
6# 여러 역할 부여
7for role in roles/storage.objectViewer roles/logging.logWriter; do
8 gcloud projects add-iam-policy-binding $PROJECT_ID \
9 --member="serviceAccount:SA_EMAIL" \
10 --role="$role"
11done
4. 역할 제거
bash
1gcloud projects remove-iam-policy-binding $PROJECT_ID \
2 --member="serviceAccount:SA_EMAIL" \
3 --role="roles/ROLE_NAME"
5. JSON 키 생성
bash
1gcloud iam service-accounts keys create ./sa-key.json \
2 --iam-account=SA_EMAIL
6. 서비스 계정 삭제
bash
1gcloud 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 | 프로젝트 |
현재 계정의 역할 확인
bash
1# 프로젝트 IAM 정책 조회
2gcloud projects get-iam-policy $PROJECT_ID \
3 --flatten="bindings[].members" \
4 --format="table(bindings.role)" \
5 --filter="bindings.members:SA_EMAIL"
모범 사례
- 최소 권한: 필요한 역할만 부여
- 서비스 계정 분리: 용도별로 별도 생성
- 키 관리:
- 가능하면 키 대신 Workload Identity 사용
- 키는 90일마다 순환
- 비활성화: 미사용 계정은 비활성화 후 삭제
주의사항
roles/owner는 부여하지 않음 (보안 위험)
- JSON 키는 안전하게 보관 (Git 커밋 금지!)
- 키 유출 시 즉시 삭제 후 재생성