본문으로 건너뛰기

Cloud IAM

· 약 4분
jay.prog

Cloud IAM

  • Identity and Access Management
  • 구글 클라우드 서비스의 ID 및 액세스 관리를 할 수 있도록 제공해주는 서비스
  • 누가(ID) 어떤 리소스(GCP Service)에 대한 어떤 액세스 권한(Role)을 갖는지 제어 할 수 있게 함

IAM ID

  • Google 계정
  • 서비스 계정
  • G Suite 도메인
  • Google Group

Access 관리와 관련 개념

  • 리소스
    • Project
    • Compute
    • Engine instance
    • GCS Bucket
  • 권한
    • service.resouce.verb
  • 역할
    • 권한의 집합

IAM Policy Object

IAM_Policy.json
{
"bindings": [
{
"role": "roles/storage.objectAdmin",
"members": [
"user:user@example.org",
"serviceAccount:my-service@appspot.gserviceaccount.com",
"group:admins@example.com",
"domain:google.com"
]
},
{
"role": "roles/storage.objectViwer",
"members": ["user:asdf@example.com"]
}
]
}
  • bindings : members의 목록을 role에 연결
  • role : 구성원에 배정하려는 역할 (GCS의 객체 관리자, 객체 생성자, 객체 뷰어 등...)
  • members : 해당 권한에 배정될 멤버 리스트
    • 구글 계정 (user:)
    • 서비스 어카운트 (serviceAccount:)
    • 구글 그룹 (group:)
    • G Suite or Cloud ID 도메인 (domain:)

Policy 계층 구조

  • Organization > (Folders) > Project > etc. resources

Cloud IAM 역할

기본 역할

역할 이름역할 칭호권한
roles/owner소유자프로젝트 및 프로젝트 내의 모든 리소스에 대한 역할 및 관리
프로젝트에 대한 결제 설정
roles/editor편집자뷰어 권한에 리소스 변경과 같이 상태 변경 작업까지 포함됨
roles/viewer뷰어읽기 전용 작업에 대한 권한이 부여됨
기존 리소스 또는 데이터의 조회가 해당됨

사전 정의된 역할

커스텀 역할

  • 사용자가 직접 정의
  • 생성하기 위해서는 iam.roles.create 권한이 할당 되어야 함
    • roles/iam.organizationRoleAdmin
    • roles/iam.roleAdmin

서비스 계정

  • 사용자가 아닌 애플리케이션 또는 가상 머신에 속한 계정
  • 리소스이자 ID로 사용 가능
  • 애플리케이션은 사용자 계정이 아닌 서비스 계정을 이용하여 GCP API에 접근 (계정 고유의 이메일 주소로 식별)
    • ID로 사용 : 서비스 계정에 역할을 부여하여 프로젝트와 같은 리소스에 액세스 되게 할 수 있음
    • 리소스로 사용 : 사용자에게 해당 서비스 계정에 액세스할 권한을 부여 할 수 있음
  • 서비스 계정은 서비스 계정 키 쌍과 연결이 되며, 이러한 서비스 계정 키에는 크게 2가지 유형이 있음
    • GCP 관리 : 서비스간 인증에 사용 (키의 순환 주기는 약 일주일 정도)
    • 사용자 관리 : 새로운 키를 만들면 비공개 키를 다운로드하게 됨, 서비스 계정 당 최대 10개의 서비스 계정 키를 만들 수 있으며, 10년이 지나면 자동으로 만료됨

기존 정책 가지고 오기

gcloud project get-iam-policy <project ID> --format json > iam.json

정책 적용하기

gcloud project set-iam-policy <project ID> iam.json