設定 OIDC 供應商,以便向叢集進行驗證

本文適用於平台管理員,或貴機構中負責管理身分設定的人員。本文說明如何設定所選的 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_URLhttps://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 使用者資料庫。

  1. 開啟 AD FS 管理窗格。

  2. 依序選取「應用程式群組」 >「動作」 >「新增應用程式群組」

  3. 選取「伺服器應用程式」。輸入您選用的名稱和說明。 點選「下一步」

  4. 如上所述,輸入兩個重新導向網址。您會取得用戶端 ID。 AD FS 會使用這個用戶端 ID 識別叢集。儲存用戶端 ID,稍後會用到。

  5. 選取「產生共用密鑰」。Kubernetes 驗證機制會使用這個密鑰向 AD FS 伺服器進行驗證。儲存密碼以供日後使用。

設定安全群組 (選用)

  1. 在 AD FS 管理中,依序選取「信賴憑證者信任」 >「新增信賴憑證者信任」

  2. 選取「Claims aware」,然後按一下「Start」

  3. 選取「手動輸入信賴憑證者相關資料」

  4. 輸入顯示名稱。

  5. 請略過接下來的兩個步驟。

  6. 輸入信賴憑證者信任 ID。建議:token-groups-claim

  7. 將「存取控管政策」設為「允許所有人」。也就是說,所有使用者都會與 gcloud CLI 和Google Cloud 控制台分享安全群組資訊。

  8. 按一下「完成」

將 LDAP 屬性對應至聲明名稱

  1. 在 AD FS 管理中,依序選取「信賴憑證者信任」 >「編輯宣告發行原則」

  2. 選取 [Send LDAP Attributes as Claims] (以宣告方式傳送 LDAP 屬性),然後按一下 [Next] (下一步)

  3. 在「宣告規則名稱」中輸入 groups

  4. 在「屬性存放區」部分,選取「Active Directory」

  5. 在表格中,針對「LDAP Attribute」選取:

    • AD FS 5.0 以上版本:依網域名稱限定的權杖群組
    • AD FS 5.0 之前的版本:符記群組 - 完整名稱
  6. 在「傳出宣告類型」部分,選取:

    • AD FS 5.0 以上版本:群組
    • AD FS 5.0 之前的版本:群組
  7. 按一下「完成」,然後按一下「套用」

向 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 用戶端,請完成下列連結中的步驟:

  1. 如果尚未完成,請設定 Microsoft Entra 租戶

  2. 在 Microsoft Entra ID 中註冊應用程式

  3. 在 Microsoft Entra 系統管理中心開啟「App registrations」頁面,然後選取您的應用程式。應用程式總覽頁面隨即開啟。

  4. 建立用戶端密鑰:

    1. 按一下導覽選單中的「憑證和密鑰」
    2. 按一下「Client secrets」分頁標籤。
    3. 按一下「New client secret」。為密鑰命名,然後按一下「新增」
    4. 將密鑰的「值」儲存在安全的位置。關閉或重新整理頁面後,就無法再擷取該內容。

    詳情請參閱「Add and manage application credentials in Microsoft Entra ID」(在 Microsoft Entra ID 中新增及管理應用程式憑證)。

  5. 新增重新導向 URI:

    1. 按一下導覽選單中的「Authentication」(驗證)
    2. 在「平台設定」部分,按一下「新增平台」。「設定平台」窗格會隨即開啟。
    3. 按一下「網站」
    4. 在「重新導向 URI」欄位中,輸入 http://localhost:PORT/callback,以用於 gcloud CLI 登入流程。選擇大於 1024 的 PORT
    5. 按一下 [設定]
    6. 按一下「新增 URI」即可新增其他 URI。
    7. 輸入 https://console.cloud.google.com/kubernetes/oidc,以啟動Google Cloud 控制台登入流程。
    8. 儲存設定。

    詳情請參閱「如何為應用程式新增重新導向 URI」。

現在,客戶註冊程序已完成。您應提供下列資訊給叢集管理員:

  • 簽發者 URIhttps://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 授權政策無法正常運作。

您必須具備全域管理員或機構管理員權限,才能執行這項設定步驟。

  1. 登入 Microsoft Entra 系統管理中心。
  2. 選取含有用戶端應用程式的 Microsoft Entra 租戶。
  3. 選取「App registrations」(應用程式註冊),然後選取用戶端應用程式。
  4. 依序選取「API permissions」-「Add a permission」-「Microsoft Graph」-「Delegated permissions」
  5. 在「群組」分頁下方,勾選「Group.Read.All」。在「使用者」分頁中,勾選「User.Read.All」
  6. 按一下「新增權限」,完成程序。
  7. 按一下「授予管理員同意...」,代表所有使用者授予同意。詳情請參閱進一步瞭解 API 權限和管理員同意聲明

分享識別資訊提供者詳細資料

請與叢集管理員分享下列供應商資訊,以便設定叢集:

  • 供應商的核發者 URI
  • 用戶端密鑰
  • 用戶端 ID
  • 您為 gcloud CLI 指定的重新導向 URI 和通訊埠
  • 供應商用來在權杖中識別使用者的使用者名稱欄位 (聲明) (設定叢集時的預設值為 sub)
  • 供應商用來傳回安全性群組的群組名稱欄位 (憑證附加資訊),如有。
  • 任何其他供應商專屬的範圍或參數,如上一節所述。舉例來說,如果授權伺服器提示要透過 Microsoft Entra ID 和 Okta 驗證來取得同意聲明,叢集管理員就必須將 prompt=consent 指定為參數。如果您已設定 AD FS 提供安全群組資訊,相關的其他參數為 resource=token-groups-claim (或您選擇做為信賴憑證者信任識別碼的任何項目)。
  • (選用) 如果供應商使用的憑證並非由公開憑證授權單位簽署 (例如使用自行簽署的憑證),則您需要身分識別提供者的憑證 (或憑證鏈結)。憑證 (或憑證鏈結) 至少須包含根憑證 (可接受部分鏈結,只要鏈結可連續回溯至根憑證即可)。在 ClientConfig 中提供這個值時,必須採用 Base64 編碼字串格式。如要建立字串,請將完整的 PEM 編碼憑證串連成單一字串,然後進行 Base64 編碼。

如要進一步瞭解叢集的設定參數,請參閱「設定叢集」。

後續步驟