本文適用於平台管理員,或貴機構中負責管理身分設定的人員。本文說明如何設定所選的 OpenID Connect (OIDC) 身分識別提供者,以便驗證不在 Google Cloud上的 Kubernetes 叢集。
向供應商註冊用戶端應用程式
在使用者驗證流程中,叢集會使用用戶端 ID 和密鑰連線至您的身分識別提供者。您可以為 Kubernetes 設定用戶端應用程式,從身分識別提供者取得用戶端 ID 和密鑰。設定用戶端應用程式的程序取決於您的供應商。下一節將說明熱門供應商的特定註冊詳細資料。
請為重新導向網址指定下列值:
https://console.cloud.google.com/kubernetes/oidc是 Google Cloud 控制台的重新導向網址。http://localhost:PORT/callback是 gcloud CLI 的重新導向網址。您可以指定任何大於 1024 的通訊埠編號。- 如果您選擇使用 FQDN 存取機制進行驗證,
APISERVER_URL:11001/finish-login就是重新導向網址。將APISERVER_URL替換為叢集 Kubernetes API 伺服器的 FQDN。舉例來說,如果APISERVER_URL是https://apiserver.company.com,則redirect_uri應為https://apiserver.company.com:11001/finish-login。
儲存註冊步驟中取得的用戶端 ID 和密鑰。將這些詳細資料提供給需要設定叢集的叢集管理員。
識別資訊提供者設定資訊
本節提供向 Microsoft Active Directory 同盟服務 (AD FS) 或 Microsoft Entra ID 註冊用戶端應用程式的步驟。
Microsoft AD FS
使用一組 AD FS 管理精靈,設定 AD FS 伺服器和 AD 使用者資料庫。
開啟 AD FS 管理窗格。
依序選取「應用程式群組」 >「動作」 >「新增應用程式群組」。
選取「伺服器應用程式」。輸入您選用的名稱和說明。 點選「下一步」。
如上所述,輸入兩個重新導向網址。您會取得用戶端 ID。 AD FS 會使用這個用戶端 ID 識別叢集。儲存用戶端 ID,稍後會用到。
選取「產生共用密鑰」。Kubernetes 驗證機制會使用這個密鑰向 AD FS 伺服器進行驗證。儲存密碼以供日後使用。
設定安全群組 (選用)
在 AD FS 管理中,依序選取「信賴憑證者信任」 >「新增信賴憑證者信任」。
選取「Claims aware」,然後按一下「Start」。
選取「手動輸入信賴憑證者相關資料」。
輸入顯示名稱。
請略過接下來的兩個步驟。
輸入信賴憑證者信任 ID。建議:
token-groups-claim。將「存取控管政策」設為「允許所有人」。也就是說,所有使用者都會與 gcloud CLI 和Google Cloud 控制台分享安全群組資訊。
按一下「完成」。
將 LDAP 屬性對應至聲明名稱
在 AD FS 管理中,依序選取「信賴憑證者信任」 >「編輯宣告發行原則」。
選取 [Send LDAP Attributes as Claims] (以宣告方式傳送 LDAP 屬性),然後按一下 [Next] (下一步)。
在「宣告規則名稱」中輸入
groups。在「屬性存放區」部分,選取「Active Directory」。
在表格中,針對「LDAP Attribute」選取:
- AD FS 5.0 以上版本:依網域名稱限定的權杖群組
- AD FS 5.0 之前的版本:符記群組 - 完整名稱
在「傳出宣告類型」部分,選取:
- AD FS 5.0 以上版本:群組
- AD FS 5.0 之前的版本:群組
按一下「完成」,然後按一下「套用」。
向 AD FS 註冊 Kubernetes 用戶端應用程式
以系統管理員模式開啟 PowerShell 視窗,然後輸入下列指令:
Grant-AD FSApplicationPermission ` -ClientRoleIdentifier "[CLIENT_ID]" ` -ServerRoleIdentifier [SERVER_ROLE_IDENTIFIER] ` -ScopeName "allatclaims", "openid"
更改下列內容:
[CLIENT_ID] 是您先前取得的用戶端 ID。
[SERVER_ROLE_IDENTIFIER] 是您先前輸入的換修 ID。請注意,建議的 ID 為
token-groups-claim。
Microsoft Entra ID
如要向 Microsoft Entra ID 註冊 OAuth 用戶端,請完成下列連結中的步驟:
如果尚未完成,請設定 Microsoft Entra 租戶。
在 Microsoft Entra 系統管理中心開啟「App registrations」頁面,然後選取您的應用程式。應用程式總覽頁面隨即開啟。
建立用戶端密鑰:
- 按一下導覽選單中的「憑證和密鑰」。
- 按一下「Client secrets」分頁標籤。
- 按一下「New client secret」。為密鑰命名,然後按一下「新增」。
- 將密鑰的「值」儲存在安全的位置。關閉或重新整理頁面後,就無法再擷取該內容。
詳情請參閱「Add and manage application credentials in Microsoft Entra ID」(在 Microsoft Entra ID 中新增及管理應用程式憑證)。
新增重新導向 URI:
- 按一下導覽選單中的「Authentication」(驗證)。
- 在「平台設定」部分,按一下「新增平台」。「設定平台」窗格會隨即開啟。
- 按一下「網站」。
- 在「重新導向 URI」欄位中,輸入
http://localhost:PORT/callback,以用於 gcloud CLI 登入流程。選擇大於 1024 的 PORT。 - 按一下 [設定]。
- 按一下「新增 URI」即可新增其他 URI。
- 輸入
https://console.cloud.google.com/kubernetes/oidc,以啟動Google Cloud 控制台登入流程。 - 儲存設定。
詳情請參閱「如何為應用程式新增重新導向 URI」。
現在,客戶註冊程序已完成。您應提供下列資訊給叢集管理員:
簽發者 URI:
https://login.microsoftonline.com/TENANT_ID/v2.0。在 Microsoft Entra 系統管理中心的應用程式總覽頁面中,租戶 ID 會顯示為Directory (tenant) ID。用戶端 ID:用戶端 ID 會顯示為 Microsoft Entra 系統管理中心應用程式總覽頁面中的
Application (client) ID。用戶端密鑰:您在註冊用戶端應用程式時建立的用戶端密鑰值。如果無法存取這個值,請產生新的密鑰。
Microsoft Entra ID 進階設定
只有在您想使用 Microsoft Entra ID 群組授權政策設定叢集,且叢集使用者屬於超過 200 個 Microsoft Entra ID 群組時,才建議使用這項進階設定。Microsoft Entra ID 的進階設定支援下列平台:
- 地端 Google Distributed Cloud (VMware 和裸機):1.14 以上版本
- AWS 上的 GKE:1.14 以上版本 (Kubernetes 1.25 以上版本)
- GKE on Azure:1.14 以上版本 (Kubernetes 1.25 以上版本)
開始前,請確認每位使用者都有相關聯的電子郵件地址,且該地址已在 Microsoft Entra ID 中設定為識別碼。這個電子郵件地址用於聲明使用者身分,並驗證要求。
您必須確保在上一節中註冊的用戶端已委派權限,可從 Microsoft Graph API 取得使用者和群組資訊。Kubernetes 驗證機制可透過這些權限,存取 Microsoft Graph API 端點,從中擷取群組資訊。如果沒有這個步驟,叢集就無法取得使用者的群組資訊,導致以群組為基礎的 RBAC 授權政策無法正常運作。
您必須具備全域管理員或機構管理員權限,才能執行這項設定步驟。
- 登入 Microsoft Entra 系統管理中心。
- 選取含有用戶端應用程式的 Microsoft Entra 租戶。
- 選取「App registrations」(應用程式註冊),然後選取用戶端應用程式。
- 依序選取「API permissions」-「Add a permission」-「Microsoft Graph」-「Delegated permissions」。
- 在「群組」分頁下方,勾選「Group.Read.All」。在「使用者」分頁中,勾選「User.Read.All」。
- 按一下「新增權限」,完成程序。
- 按一下「授予管理員同意...」,代表所有使用者授予同意。詳情請參閱進一步瞭解 API 權限和管理員同意聲明。
分享識別資訊提供者詳細資料
請與叢集管理員分享下列供應商資訊,以便設定叢集:
- 供應商的核發者 URI
- 用戶端密鑰
- 用戶端 ID
- 您為 gcloud CLI 指定的重新導向 URI 和通訊埠
- 供應商用來在權杖中識別使用者的使用者名稱欄位 (聲明) (設定叢集時的預設值為
sub) - 供應商用來傳回安全性群組的群組名稱欄位 (憑證附加資訊),如有。
- 任何其他供應商專屬的範圍或參數,如上一節所述。舉例來說,如果授權伺服器提示要透過 Microsoft Entra ID 和 Okta 驗證來取得同意聲明,叢集管理員就必須將
prompt=consent指定為參數。如果您已設定 AD FS 提供安全群組資訊,相關的其他參數為resource=token-groups-claim(或您選擇做為信賴憑證者信任識別碼的任何項目)。 - (選用) 如果供應商使用的憑證並非由公開憑證授權單位簽署 (例如使用自行簽署的憑證),則您需要身分識別提供者的憑證 (或憑證鏈結)。憑證 (或憑證鏈結) 至少須包含根憑證 (可接受部分鏈結,只要鏈結可連續回溯至根憑證即可)。在 ClientConfig 中提供這個值時,必須採用 Base64 編碼字串格式。如要建立字串,請將完整的 PEM 編碼憑證串連成單一字串,然後進行 Base64 編碼。
如要進一步瞭解叢集的設定參數,請參閱「設定叢集」。