GCP IAM의 관점
- 어느 리소스 범위에 권한을 줄 것인가
- 누구에게 줄 것인가
- 어떤 Role을 줄 것인가
-
특정 리소스 범위에 대해 Principal과 Role을 Binding 하는 구조
-
최소 권한 원칙 / 적절한 범위 설정 중요
GCP 리소스 계층 구조
- Organization
- Folder
- Project
- Resource
- 권한이 상위에서 하위로 상속 가능
GCP IAM
Principal
- 권한을 받는 주체
ex)
- 사용자 계정
- Google 그룹
- Service Account
- 도메인
user:alice@example.com
group:dev-team@example.com
serviceAccount:web-sa@my-project.iam.gserviceaccount.com
Permission
- 실제 수행 가능한 개별 작업
ex)
- VM 조회
- VM 생성
- Storage 객체 읽기
- 로그 조회
compute.instances.get
compute.instances.create
storage.objects.get
storage.objects.create
- 가장 작은 권한 단위, 보통 Role로 묶어서 관리
Role
- 여러 Permission을 묶은 권한 집합
ex)
-
Compute Viewer
-
Storage Object Viewer
-
Logging Viewer
-
Compute Admin
-
실제 권한 부여는 Role 단위
-
종류
-
Basic Role
- 가장 기본적이고 범위가 넓은 역할
- Viewer
- Editor
- Owner
- 특징
- 이해하기 쉽다
- 범위가 넓다
- 실습에는 편하지만 실무에는 과할 수 있다
- 가장 기본적이고 범위가 넓은 역할
-
Predefined Role
- Google이 서비스별로 미리 정의해 둔 역할
- ex)
roles/compute.viewerroles/compute.instanceAdmin.v1roles/storage.objectViewerroles/logging.viewer
- 특징
- 서비스별로 세분화
- Basic Role보다 정밀
- 최소 권한 원칙을 적용하기 좋다
- 보통 Predefined Role 우선 사용
-
Custom Role
- 조직이나 프로젝트에서 직접 만드는 사용자 정의 역할
- 특징
- 필요한 Permission만 골라 매우 정밀하게 설계 가능
- 유지관리 부담 O
- Predefined Role만으로 정확히 맞추기 어려울 때 사용
Policy Binding
- 누구에게
- 어떤 Role을
- 어느 리소스 범위에 연결할 지
ex) 하나의 Binding
-
alice@example.com에게 -
roles/viewer를 -
특정 Project에 부여
-
GCP IAM = Principal + Role + Resource Scope를 연결하는 구조
권한 상속 (Inheritance)
-
상위 계층에서 부여한 권한 → 하위 계층 영향
-
범위가 넓을수록 관리 효율 좋음 / 불필요한 접근 늘어날 수 있다
-
가능한 필요한 범위에만 권한 부여
-
Project 단위 권한 설계부터 이해
-
상위 계층 권한 신중하게 사용
Service Account
- 사람 X
- 애플리케이션이나 워크로드가 사용하는 계정
ex)
- VM이 Cloud Storage에 접근 시
- 애플리케이션이 Secret을 읽을 시
- 서버 애플리케이션이 GCP API를 호출할 시
- Service Account 생성
- 필요한 Role 부여
- VM 또는 서비스에 연결
- 애플리케이션이 해당 권한으로 GCP API 접근
- 결국, Principal의 한 종류
AWS IAM vs GCP IAM
운영 경계
- AWS
- Account 중심 운영
- 계정 단위 권한 경계 강함
- GCP
- Project 중심 운영
- Organization / Folder / Project 구조와 상속 고려
권한 부여 방식
- AWS
- Policy를 작성하고 User / Group / Role 에 부착
- GCP
- 특정 리소스 범위에 Principal과 Role을 Binding 함
워크로드 권한
- AWS
- IAM Role
- AssumeRole
- IRSA
- GCP
- Service Account
- Worload Identity 계열
주요 명령어
프로젝트 IAM 정책 조회 : gcloud projects get-iam-policy [Project_ID]
CLI로 권한 부여
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member="user:user1@example.com" \
--role="roles/viewer"
Service Account 생성
gcloud iam service-accounts create web-sa \
--display-name="web service account"
결과 : web-sa@[PROJECT_ID].iam.gserviceaccount.com
Service Account 권한 부여
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member="serviceAccount:web-sa@[PROJECT_ID].iam.gserviceaccount.com" \
--role="roles/storage.objectViewer"