本頁說明 Google Kubernetes Engine 中身分與存取權管理 (IAM) 和 Kubernetes 角色型存取權控管 (RBAC) 的差異,協助您管理專案內資源的存取權。
本頁內容適用於控管權限存取權的安全專家,可協助他們瞭解 IAM 和 RBAC 之間的差異和重疊之處。如要進一步瞭解 Google Cloud 內容中提及的常見角色和範例工作,請參閱常見的 GKE Enterprise 使用者角色和工作。
建立 Google Cloud 專案時,您是專案的唯一使用者。根據預設,其他使用者都不能存取您的專案或專案資源,包括 Google Kubernetes Engine (GKE) 資源。GKE 支援多種選項,可讓您使用角色型存取權控管 (RBAC),管理專案及其叢集內資源的存取權。
閱讀本頁面之前,請先熟悉下列概念:
這些機制有部分功能重疊,但是以不同類型的資源為目標。我們將於本頁面的專屬部分逐一提供簡單扼要的說明:
Kubernetes 內建 Kubernetes RBAC,可針對 Kubernetes 叢集內的物件授予精細的權限。權限是以 ClusterRole 或角色物件的形式存在於叢集內。RoleBinding 物件可將角色授予 Kubernetes 使用者、 Google Cloud 使用者、IAM 服務帳戶或 Google 群組。
如果您主要都是使用 GKE,且叢集內的所有物件和作業都需要精細的權限設定,Kubernetes RBAC 會是最佳選擇。
IAM 會管理 Google Cloud 資源,包括叢集,以及叢集內的物件類型。權限會指派給 IAM「主體」。
沒有任何可針對 IAM 內特定 Kubernetes 物件授予權限的機制。舉例來說,您可以授予使用者建立 CustomResourceDefinitions (CRD) 的權限,但您無法授予使用者只建立一個特定 CustomResourceDefinition 的權限,或將建立動作限定於特定命名空間,或限定於專案中的特定叢集。IAM 角色可授予專案中所有叢集間的權限,或所有子專案中所有叢集的權限 (如果該角色是在資料夾層級套用)。
如果您使用多個 Google Cloud 元件,且不需要管理精細的 Kubernetes 特定權限,IAM 是個不錯的選擇。
Kubernetes RBAC
Kubernetes 可提供內建 RBAC 支援,可讓您建立存在於 Kubernetes 叢集內的精細角色。角色的範圍可界定於某個特定 Kubernetes 物件或某種類型的 Kubernetes 物件,以及定義角色針對該物件授予哪些相關動作 (稱為動詞)。RoleBinding 也是一種 Kubernetes 物件,且可將角色授予使用者。GKE 使用者可以是下列任何一種:
- Google Cloud 使用者
- IAM 服務帳戶
- Kubernetes ServiceAccount
- Google Workspace 使用者
- Google Workspace Google 群組
- 使用 X509 用戶端憑證通過驗證的使用者
詳情請參閱角色型存取權控管。
IAM
IAM 可讓您將角色授予主體。角色是一組權限,授予主體後,即可控制一或多項 Google Cloud 資源的存取權。你可以使用下列類型的角色:
- 基本角色提供限於擁有者、編輯者和檢視者的粗略權限。
- 預先定義的角色 (例如 GKE 適用的預先定義角色) 提供比基本角色更精細的存取權,且適用於許多常見用途。
- 自訂角色可讓您建立唯一的權限組合。
主體可以是下列任一值:
- 使用者帳戶
- 服務帳戶
- Google Workspace Google 群組
- Google Workspace 網域
- Cloud Identity 網域
IAM 政策類型
IAM 支援下列政策類型:
即使 IAM 允許政策授予主體含有相關權限的角色,您仍可使用拒絕政策,限制特定主體在專案、資料夾或機構中執行特定動作。
IAM 建議
建議使用下列 IAM 預先定義角色,簡化常見情境:
- Kubernetes Engine 叢集檢視者 (
roles/container.clusterViewer
):只需要連線至叢集的 DevOps、工程師和應用程式開發人員。 - Kubernetes Engine 叢集管理員 (
roles/container.clusterAdmin
):平台管理員和叢集運算子,需要在 Google Cloud 專案中管理一或多個叢集。
如需可用預先定義 IAM 角色的清單,請參閱「預先定義的 GKE 角色」。
GKE 會使用附加至節點的 IAM 服務帳戶,執行記錄和監控等系統工作。這些節點服務帳戶至少必須具備專案的「Kubernetes Engine 預設節點服務帳戶」(roles/container.defaultNodeServiceAccount
) 角色。根據預設,GKE 會使用專案中自動建立的 Compute Engine 預設服務帳戶做為節點服務帳戶。
IAM 與 Kubernetes RBAC 的互動
IAM 和 Kubernetes RBAC 互相搭配運作,可協助管理叢集存取權。RBAC 用於控制叢集和命名空間層級的存取,而 IAM 則適用於專案層級。實體必須擁有其中一個層級的完整權限,才能使用您叢集中的資源。