本頁說明如何設定 Google 群組,以便在 Google Kubernetes Engine (GKE) 叢集中使用 Kubernetes 角色型存取權控管 (RBAC)。
透過 RBAC 適用的 Google 群組,您可以將 RBAC 權限指派給 Google Workspace 中 Google 群組的成員。Google Workspace 管理員會維護使用者和群組,完全獨立於 GKE 或 Google Cloud 控制台。因此,叢集管理員不需要使用者的詳細資訊。
使用 Google 群組進行 RBAC,還能整合現有的使用者帳戶管理做法,例如在使用者離開貴機構時撤銷存取權。
本頁面適用於想要在 GKE 叢集中搭配使用 Google 群組與 Kubernetes RBAC 的安全專家和運算子。如要進一步瞭解我們在內容中提及的常見角色和範例工作,請參閱「常見的 GKE 使用者角色和工作」。 Google Cloud
閱讀本頁內容前,請務必先瞭解建立群組及新增使用者為成員時的 Google 群組限制。
如要使用 Google 群組進行 RBAC,請完成下列工作:
需求條件
如要使用「透過 Google 網路論壇進行角色型存取控管」功能,您必須有權存取 Google Workspace 或任何版本的 Cloud Identity。
限制
- 透過 RBAC 適用的 Google 網路論壇,GKE 支援安全性群組中最多 2000 個群組的成員,包括巢狀成員。
設定 Google 網路論壇
下列步驟說明如何在 Google 網路論壇中設定與 RBAC 搭配使用的群組:
- 在網域中建立名為 - gke-security-groups的群組。必須輸入- gke-security-groups名稱。請確認群組已為「群組成員」選取「查看成員」權限。詳情請參閱「設定成員和內容管理權限」。
- 如果代表一群使用者的群組 (或是代表在您的叢集上擁有不同權限的群體) 尚不存在,請建立群組,例如開發人員和叢集管理員。每個群組都必須具備「查看成員」權限,才能查看「群組成員」。 
- 將群組新增為 - gke-security-groups群組的巢狀群組。請勿將個別使用者新增為- gke-security-groups的成員。
如要進一步瞭解如何管理 Google 群組,請參閱 Google 群組說明中心。
如要檢查特定使用者是否能對叢集資源執行動作,GKE 會檢查該使用者是否為擁有存取權的群組成員,以及該群組是否巢狀位於 gke-security-groups 群組中。
Google 群組成員資訊會在短時間內快取。 群組成員資格的變更,可能需要幾分鐘時間才會反映到所有叢集。除了群組變更造成的延遲,叢集上使用者憑證的標準快取約為一小時。
在叢集上啟用 RBAC 適用的 Google 群組
您可以使用 Google Cloud CLI 或 Google Cloud 控制台,在新舊 GKE Standard 和 Autopilot 叢集上啟用 RBAC 適用的 Google 群組。
建立新叢集
gcloud
標準
如要建立新的標準叢集並啟用 RBAC 適用的 Google 群組,請執行下列指令:
gcloud container clusters create CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --security-group="gke-security-groups@DOMAIN"
更改下列內容:
- CLUSTER_NAME:新叢集的名稱。
- CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。
- DOMAIN:您建立的群組網域名稱。- gke-security-groups
Autopilot
如要建立新的 Autopilot 叢集並啟用 RBAC 適用的 Google 群組,請執行下列指令:
gcloud container clusters create-auto CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --security-group="gke-security-groups@DOMAIN"
控制台
如要建立新叢集並啟用 RBAC 適用的 Google 群組功能,請執行下列步驟:
- 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。 
- 按一下「add_box Create」(建立)。 
- 針對要使用的叢集模式,按一下「設定」。 
- 如為 Autopilot 叢集,請展開「Advanced Options」(進階選項) 部分,找出「Security」(安全性) 選項。 
- 如果是 Standard 叢集,請在「Cluster」(叢集) 區段中按一下「Security」(安全性)。 
- 勾選「Enable Google Groups for RBAC」(啟用 RBAC 適用的 Google 群組) 核取方塊。 
- 在「Security Group」(安全性群組) 中填入 - gke-security-groups@DOMAIN。
- 點選「建立」。 
更新現有叢集
gcloud
如要更新現有叢集,啟用 RBAC 適用的 Google 群組,請執行下列指令:
gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --security-group="gke-security-groups@DOMAIN"
更改下列內容:
- CLUSTER_NAME:叢集名稱。
- CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。
- DOMAIN:您建立的群組網域名稱。- gke-security-groups
控制台
如要更新現有叢集,啟用 RBAC 適用的 Google 群組,請執行下列步驟:
- 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。 
- 按一下要更新的叢集名稱。 
- 在「Details」(詳細資料) 分頁中,找到「Security」(安全性) 區段。 
- 在「Google Groups for RBAC」(RBAC 適用的 Google 群組) 欄位中,按一下 edit「Edit Google Groups for RBAC」(編輯 RBAC 適用的 Google 群組)。 
- 勾選「Enable Google Groups for RBAC」(啟用 RBAC 適用的 Google 群組) 核取方塊。 
- 在「Security Group」(安全性群組) 中填入 - gke-security-groups@DOMAIN。
- 按一下 [儲存變更]。 
定義及指派權限
建立及設定 RBAC 適用的 Google 網路論壇後,請使用角色和角色繫結定義 RBAC 權限,並將這些權限指派給 gke-security-groups 群組的成員 Google 網路論壇。如需操作說明,請參閱「定義及指派權限」。
驗證 RBAC 適用的 Google 群組設定
以下各節說明如何使用 gcloud CLI 或Google Cloud 控制台,確認您是否已成功設定 RBAC 適用的 Google 群組。
使用 gcloud CLI 驗證
執行 kubectl can-i 指令,檢查您是否可以對特定 Kubernetes 資源執行特定動作。您可以使用這個方法,在 CI/CD 工作流程中自動測試 RBAC 存取權。舉例來說,下列指令會測試 dev 名稱空間中 pods 資源的 get 存取權:
kubectl auth can-i get pods \
    --namespace=dev \
    --as=USER \
    --as-group=GROUP
更改下列內容:
- USER:要模擬的使用者名稱,例如- gke-user@example.com。指定使用者必須是您要測試存取權的群組成員。
- GROUP:要模擬的群組名稱,例如- gke-dev-users@example.com。
如果 USER 有存取權,輸出內容為 yes。如果不是,則輸出 no。
使用 Google Cloud 控制台驗證
您也可以對叢集執行 kubectl 指令並檢查記錄,驗證 RBAC 存取權。
事前準備
在開始之前,請確認下列事項:
- 您至少一小時未與要測試的叢集互動 (例如未執行任何 kubectl指令)。驗證資訊會快取一小時。讓快取憑證過期,可確保要求發生時會記錄下來。
- 您是至少一個 gke-security-groups群組成員群組的成員,確保系統會記錄部分 Google 協作平台資訊。
啟用記錄並執行測試指令
- 為 Google Cloud 專案啟用資料存取記錄。如要啟用記錄功能: - 前往 Google Cloud 控制台的「稽核記錄」頁面。 
- 在表格中選取「Kubernetes Engine API」。 
- 在「記錄類型」選單中,選取下列任一選項: - 「Admin Read」(管理員讀取)
- 「Data Read」(資料讀取)
- 「Data Write」(資料寫入)
 
- 按一下 [儲存]。 
 - 想進一步瞭解如何啟用稽核記錄,請參閱「透過 Cloud 控制台設定資料存取記錄檔」一文。 
- 請在叢集中使用 - kubectl執行指令,例如:- kubectl create ns helloworld
- 在「Logs Explorer」(記錄檔探索工具) 頁面中輸入自訂查詢。執行查詢: - 前往 Google Cloud 控制台的「Logs Explorer」頁面。 
- 按一下頁面頂端「查詢預覽」方塊中的箭頭。 
- 在隨即顯示的下拉式方塊中,指定下列查詢: - resource.type="k8s_cluster" resource.labels.location="CLUSTER_LOCATION" resource.labels.cluster_name="CLUSTER_NAME" protoPayload.resourceName="authorization.k8s.io/v1beta1/subjectaccessreviews" protoPayload.response.spec.user="EMAIL_ADDRESS"- 更改下列內容: - CLUSTER_LOCATION:叢集所在的區域或可用區。
- CLUSTER_NAME:叢集名稱。
- EMAIL_ADDRESS:您 Google 帳戶註冊的電子郵件地址。
 
- 選取「Run Query」(執行查詢),至少應會顯示一項結果。如果沒有任何結果,請嘗試增加時間範圍。 
- 選擇您要查看的叢集。 
- 按一下「Expand nested fields」(展開巢狀欄位)。 
- protoPayload.request.spec.group欄位包含的群組:- 這些群組是 gke-security-group的成員。
- 您是群組的成員。
 - 這份清單應與您所屬的群組相符。如果沒有群組,可能是群組的設定方式有問題。 
- 這些群組是 
 
- 您也可以選擇將資料存取記錄還原為先前的設定,以免產生額外費用。 
刪除群組的影響
設定 RBAC 適用的 Google 群組後,RBAC 存取權授權取決於您建立的 Google 群組是否存在。請注意,刪除群組會造成下列影響:
- gke-security-group:GKE 會使用- gke-security-group群組的專屬 ID,找出您在 RBAC 政策中參照的主體。如果刪除這個群組,RBAC 適用的 Google 群組的所有存取權授權都會失敗。- 如果重新建立 - gke-security-group群組,請按照「更新現有叢集」一節中的步驟,在叢集上重新啟用 RBAC 適用的 Google 群組。重新啟用 RBAC 適用的 Google 群組後,叢集會更新為使用新- gke-security-group群組的群組 ID。
- 成員群組:如果您刪除為 RBAC 適用的 Google 群組設定的其中一個成員群組,該群組的所有 RBAC 繫結都會失敗。因此,該群組的所有成員都會失去相應的存取權。 - 如要修正成員群組遭誤刪的問題,請建立新群組,並使用與遭刪除群組完全相同的名稱。按照「設定 Google 網路論壇」一節中的步驟,將新群組設為 - gke-security-group群組的成員。