IAM 基本概念
誰(identity) 擁有哪些身份 (Role),而這些身份可以做哪些事情。下圖(一)為能夠代表 identity 的帳號或是群組,右方則是各個 Role。圖(二),Role 為 Permissions 的群集。Permissiosn (權限)是指可以對該 Resource 做哪些事情,例如: compute.instance.delete 就是指可以刪除 compute instance 的權限。
Cloud IAM 提供三種類型的 Roles
- Primitive roles: Owner, Editor, Viewer, Billing Administrator(管理帳單)
- Predefined roles:針對特定的雲端資源權限的 role,例如 Pub/Sub Publisher (roles/pubsub.publisher)
- Custom roles:客製化 role,多個 permissions 依照使用需求組合而成。
透過 IAM,管理員賦予權限給各個 identity,而 identity 可以為:
-
- Google account:Google account 代表一位開發者、管理者或是任何使用者使用 GCP。任何與 Google account 有關聯的電郵位址,包括 gmail.com 或是其他 domain,都視為一個 identity。
- Service account:Service account 是與應用程式做綁定的一個帳號,而不是一位真實的使用者。外部服務存取 GCP 服務或是 GCP 服務內部互相溝通,是透過 Service account 來給定權限。
- Google group:Google group 為多個 Google accounts 或是 Service accounts 的群集。每一個 Google group 都有唯一的電郵位址。Google groups 可以讓使用者方便管理多個 identities 的權限。
Google group 這個 account 本身沒有登入權限,且也不能把 Google group 當作是一個 identity 來操作雲端資源。
-
- G Suite domain:透過 G Suite account 創立的所有帳號所屬虛擬群組
- Cloud Identity domain:Cloud Identity domain 類似於 G Suite domain,差別只在於 Cloud Identity domain 的使用者無法使用 G Suite 所提供的應用程式及功能,例如:Google 硬碟、文件、簡報、試算表等
IAM Policy
IAM Policy 為敘述誰有權限做些什麼的群集。管理者可以透過設定 policy 來賦予使用者或群組至雲端存取資源的權限, 每當該雲端資源被存取時,policy 會檢查該使用者是否有權限使用。
Resource Hierarchy
GCP 雲端資源的權限等級是跟據階層來分類。Organization 是等級制度的最上層,通常代表公司,下方的層級可以分做 Folders (各部門)以及 Projects (各專案)。child 會繼承 parent 的 IAM policy。Oraganization 需要透過 G Suite 或是 Cloud Identity 創立。Project 底下就是各個雲端資源,例如 Compute Engine, Cloud Storage。如下圖: