設定 GKE Identity Service 的 OIDC 供應商

本文適用於平台管理員,或貴機構中負責管理身分設定的人員。本文說明如何為 GKE Identity Service 設定所選的 OpenID Connect (OIDC) 識別資訊提供者。

向供應商註冊 GKE Identity Service

設定 GKE Identity Service 時,您需要提供身分識別提供者的單一用戶端 ID 和密鑰。GKE Identity Service 會在連線至供應商時使用這個 ID 和密碼,做為使用者驗證流程的一部分。如要取得這些資訊,您必須按照所選供應商的標準程序,向供應商註冊 GKE Identity Service 做為用戶端應用程式。下一節將提供熱門供應商的特定註冊詳細資料。

如果是重新導向網址,請指定下列值:

  • 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 和密鑰。將這些詳細資料提供給需要設定 GKE Identity Service 的叢集管理員。

識別資訊提供者設定資訊

本節提供註冊 GKE Identity Service 的其他供應商專屬資訊。如果您的供應商列於此處,請按照下列操作說明,向供應商註冊 GKE Identity Service 做為用戶端應用程式。

Microsoft AD FS

使用一組 AD FS 管理精靈,設定 AD FS 伺服器和 AD 使用者資料庫。

  1. 開啟 AD FS 管理窗格。

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

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

  4. 如上所述,輸入兩個重新導向網址。您會取得用戶端 ID。AD FS 伺服器就是透過這個 ID 識別 GKE Identity Service。儲存用戶端 ID 以供日後使用。

  5. 選取「產生共用密鑰」。GKE Identity Service 會使用這個密碼向 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. 在「Claim rule name」(宣告規則名稱) 中輸入 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 註冊 GKE Identity Service

以系統管理員模式開啟 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

Azure AD

向 Azure 註冊 OAuth 用戶端

如要向 Azure 註冊 OAuth 用戶端,請完成下列連結中的步驟:

  1. 如果尚未完成上述設定,請在 Azure Active Directory 中設定租戶

  2. 透過 Microsoft Identity Platform 註冊應用程式

  3. 在 Azure 入口網站中開啟「應用程式註冊」頁面,然後依名稱選取應用程式。

  4. 建立用戶端密碼。

    1. 按一下「基本資訊」下方的「新增憑證或密鑰」。畫面上會顯示憑證和密鑰清單。

    2. 按一下「新增用戶端密碼」。為密鑰命名,然後按一下「新增」

    3. 將密鑰的「值」* 儲存在安全的位置。關閉或重新整理頁面後,就無法再擷取該內容。

  5. 新增重新導向 URI。

    1. 返回應用程式頁面。

    2. 選取「基本資料」下方的「新增重新導向 URI」。系統隨即會顯示「Authentication」(驗證) 頁面。

    3. 選擇「新增平台」,右側會顯示「設定平台」面板。

    4. 選擇「網頁」。在「重新導向 URI」下方,輸入 gcloud CLI 登入流程的 http://localhost:PORT/callback。選擇大於 1024 的 PORT。按一下「設定」按鈕。

    5. 按一下「新增 URI」按鈕,新增另一個 URI,https://console.cloud.google.com/kubernetes/oidc用於 Google Cloud 控制台登入。

    6. 按一下頂端的「儲存」按鈕。

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

  • 簽發者 URIhttps://login.microsoftonline.com/TENANT_ID/v2.0。租戶 ID 會顯示為 Azure 入口網站應用程式頁面上的 Directory (tenant) ID

  • 用戶端 ID:用戶端 ID 會顯示為 Azure 入口網站應用程式頁面上的 Application (client) ID

  • 用戶端密鑰:這是您在上個步驟中取得的。如果建立密鑰後關閉頁面,就無法再擷取密鑰。請務必將值儲存在安全位置 (或在忘記先前的值時產生新的密鑰)。

Azure AD 進階設定

只有在您想使用 Azure AD 群組授權政策設定叢集,且叢集使用者屬於超過 200 個 Azure AD 群組時,才建議使用這項進階設定。Azure AD 的進階設定支援下列平台:

  • 地端 GKE 叢集 (VMware 和裸機):從 GKE Enterprise 1.14 開始
  • AWS 中的 Anthos 叢集:從 GKE Enterprise 1.14 (Kubernetes 1.25 版或更新版本)
  • Anthos clusters on Azure:從 GKE Enterprise 1.14 (Kubernetes 1.25 以上版本)
  • Anthos clusters on AWS (舊版):從 GKE Enterprise 1.14 開始

開始前,請確認每位使用者都有相關聯的電子郵件地址,且該地址已在 Azure AD 中設為識別碼。GKE Identity Service 會使用使用者的電子郵件地址來聲明使用者身分,並驗證要求。

請務必確認您在上一個章節中註冊的用戶端已委派權限,可從 Microsoft Graph API 取得使用者和群組資訊。這些權限可讓 GKE Identity Service 外掛程式存取 Microsoft Graph API 端點,從中擷取群組資訊。如果沒有這個步驟,GKE Identity Service 就無法列出使用者的群組,且以群組為基礎的 RBAC 授權政策也無法正常運作。

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

  1. 登入 Azure 入口網站。
  2. 如果您可以存取多個租戶,請使用頂端選單中的「目錄 + 訂閱項目」篩選器,選取包含用戶端應用程式註冊的租戶。
  3. 選取「Azure Active Directory - 應用程式註冊」,然後選取用戶端應用程式。
  4. 依序選取「API permissions」-「Add a permission」-「Microsoft Graph」-「Delegated permissions」
  5. 在「群組」分頁下方,勾選「Group.Read.All」。在「User」分頁中,勾選「User.Read.All」
  6. 按一下「新增權限」即可完成程序。
  7. 按一下「Grant admin consent for...」(為...授予管理員同意) 按鈕,代表所有使用者授予同意聲明。如要進一步瞭解如何授予管理員同意聲明,請參閱「進一步瞭解 API 權限和管理員同意聲明」。

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

請將下列供應商資訊提供給叢集管理員,以便設定叢集:

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

如需 GKE Identity Service 設定參數的完整清單,請參閱「設定叢集」。

後續步驟

叢集管理員可以為個別叢集機群設定 GKE Identity Service。