GCP IAM Management
서비스 계정 생성, 역할 부여, 키 관리를 수행합니다.
사용법
code
/gcp-iam # 서비스 계정 목록 /gcp-iam create my-service # 서비스 계정 생성 /gcp-iam grant viewer # 역할 부여 /gcp-iam key my-service # JSON 키 생성
Workflow
1. 서비스 계정 목록
bash
PROJECT_ID=$(gcloud config get-value project) gcloud iam service-accounts list --project=$PROJECT_ID \ --format="table(email,displayName,disabled)"
2. 서비스 계정 생성
bash
gcloud iam service-accounts create SA_NAME \ --display-name="SA_DISPLAY_NAME" \ --description="Description" \ --project=$PROJECT_ID
3. 역할 부여
bash
# 프로젝트 수준 역할
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. 역할 제거
bash
gcloud projects remove-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:SA_EMAIL" \ --role="roles/ROLE_NAME"
5. JSON 키 생성
bash
gcloud iam service-accounts keys create ./sa-key.json \ --iam-account=SA_EMAIL
6. 서비스 계정 삭제
bash
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 관리 |
출력 형식
code
## 서비스 계정 목록 | 이메일 | 이름 | 상태 | |--------|------|------| | 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
# 프로젝트 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 커밋 금지!)
- •키 유출 시 즉시 삭제 후 재생성