使用外部身分驗證 GKE on Azure
員工身分聯盟可授予非 Google 身分存取Google Cloud 服務的權限。就 Azure 上的 GKE 而言,這表示您可以使用現有的外部身分建立或存取 GKE 叢集,不必依賴 Google 憑證。
使用員工身分聯盟的優點如下:
- 您不必在不同平台或供應商建立重複帳戶。
- 您只需要設定一次權限,不必在多個平台上進行設定。
- 您可簡化使用者存取權,因為登入次數和密碼需求較少。
事前準備
如要允許外部使用者或群組存取 GKE 叢集,請先完成下列步驟:
如要讓外部使用者或群組使用 GKE on Azure API,請設定員工身分聯盟:
- 如果是 Azure 使用者,請參閱「設定與 Azure AD 的工作團隊身分聯盟」。
- 如果您是 Okta 使用者,請參閱「使用 Okta 設定員工身分聯盟」。
- 如果是其他平台的使用者,請參閱「設定員工身分聯盟」。
為外部使用者或群組指派
gkemulticloud.viewer
角色,讓他們可以存取叢集。指派container.clusterViewer
角色,在 Google Cloud 控制台中查看叢集。請注意,角色是一組權限。將角色指派給實體 (使用者、群組或服務帳戶) 時,您會授予該實體角色包含的所有權限。
使用者
如要為個別使用者指派角色,請按照下列步驟操作:
gkemulticloud.viewer
gcloud projects add-iam-policy-binding PROJECT_ID \ --role="roles/gkemulticloud.viewer" \ --member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
更改下列內容:
PROJECT_ID
:您的 Google Cloud 專案 ID。WORKFORCE_POOL_ID
:用來在 Google Cloud中專屬識別工作團隊身分集區的 ID。格式化 ID 時,請務必遵循 IAM 文件中「查詢參數」提供的建議做法。SUBJECT_VALUE
:可專屬識別外部使用者的 ID。舉例來說,ID 可以是電子郵件地址,例如alex@cymbalgroup.com
。
群組
如要為群組指派角色,請指派
gkemulticloud.viewer
角色:gcloud projects add-iam-policy-binding PROJECT_ID \ --role="roles/gkemulticloud.viewer" \ --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
更改下列內容:
選用:為外部使用者或群組指派適當的 Identity and Access Management (IAM) 角色。只有在您想授予使用者或群組建立或更新叢集的權限時,才需要執行這個步驟;如要存取叢集,則不需要執行這個步驟。
使用者
如要為個別使用者指派角色,請按照下列步驟操作:
gkemulticloud.admin
gcloud projects add-iam-policy-binding PROJECT_ID \ --role="roles/gkemulticloud.admin" \ --member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
更改下列內容:
PROJECT_ID
:您的 Google Cloud 專案 ID。WORKFORCE_POOL_ID
:用來在 Google Cloud中專屬識別工作團隊身分集區的 ID。格式化 ID 時,請務必遵循 IAM 文件中「查詢參數」提供的建議做法。SUBJECT_VALUE
:可專屬識別外部使用者的 ID。舉例來說,ID 可以是電子郵件地址,例如alex@cymbalgroup.com
。
群組
如要為群組指派角色,請指派
gkemulticloud.admin
角色:gcloud projects add-iam-policy-binding PROJECT_ID \ --role="roles/gkemulticloud.admin" \ --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
更改下列內容:
如要進一步瞭解 GKE on Azure 需要哪些 API 角色和權限,請參閱「API 角色和權限」。
授予 GKE 叢集的外部存取權
設定員工身分聯盟的方法有兩種,可讓外部使用者或群組存取 GKE 叢集。
方法 1 需要定義 RBAC 檔案,並將其套用至叢集。這個方法可精細控管權限,例如允許使用者唯讀存取資源,但不會授予更廣泛的存取權。
方法 2 則要求您在建立或更新叢集時,指定外部身分的存取權。這個方法會將完整管理權限授予指定使用者或群組。
請選擇最符合所需存取權控管層級的方法:方法 1 可提供更精細的權限,方法 2 則可授予完整的叢集管理員權限。
方法 1:使用 RBAC 檔案
授予 GKE 叢集外部存取權的第一種方法是使用 RBAC 檔案。步驟如下:
定義 RBAC YAML 檔案,其中包含主體 (使用者或群組) 和您要在 GKE 叢集中授予的權限。以下是個別使用者和群組的 RBAC YAML 設定範例:
使用者
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: gateway-cluster-admin-user subjects: - kind: User name: principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io
更改下列內容:
群組
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: gateway-cluster-admin-group subjects: - kind: Group name: principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io
更改下列內容:
找出要設定的 GKE 叢集,然後使用下列指令將其設為有效內容:
kubectl config use-context CLUSTER_CONTEXT
將
CLUSTER_CONTEXT
替換為叢集的適當內容名稱。將所需的 GKE 叢集設為作用中內容後,請使用下列指令將 RBAC 設定套用至叢集:
kubectl apply -f RBAC_PATH
將
RBAC_PATH
替換為您建立或編輯的 RBAC 檔案路徑。執行這項指令後,RBAC 設定中指定的使用者或群組,現在就能存取及管理目標 GKE 叢集,權限如 RBAC 規則所定義。
如要對權限進行任何後續變更,請修改 RBAC 檔案,然後重複上述步驟,將檔案重新套用至叢集。
方法 2:在建立或更新叢集時授予外部身分存取權
方法 2 會在叢集建立或更新程序期間,授予外部身分的存取權。
如要建立叢集,請按照「建立叢集」一文中的步驟操作。 如要更新叢集,請按照「更新叢集」一節的步驟操作。
執行 gcloud
指令來建立或更新叢集時,請指定 admin-users
和/或 admin-groups
參數,如下所示:
gcloud container azure clusters [create|update] CLUSTER_NAME \
--location=LOCATION
--admin-users=principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject SUBJECT_VALUE \
--admin-groups=principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID
更改下列內容:
CLUSTER_NAME
:叢集名稱。LOCATION
:叢集管理的 Google Cloud 區域。WORKFORCE_POOL_ID
:用來在 Google Cloud中專屬識別工作團隊身分集區的 ID。格式化 ID 時,請務必遵循 IAM 說明文件「查詢參數」中提供的建議做法。SUBJECT_VALUE
:可專屬識別外部使用者的 ID。舉例來說,ID 可以是電子郵件地址,例如alex@cymbalgroup.com
。GROUP_ID
:可專屬識別外部群組的 ID。
授予外部 ID 存取 GKE 叢集的權限摘要
執行方法 1 或方法 2 後,指定外部使用者或群組即可使用 Google Cloud 控制台連線及查看叢集詳細資料。或者,他們可以使用 kubectl
和 gcloud CLI 的身分,管理、操控及與叢集通訊。
如要對 GKE 叢集執行 kubectl
指令,請參閱如何產生 kubeconfig
項目。