跳至主要内容

設定 Google OAuth

如果您的組織使用 G Suite 進行使用者身份驗證,您可以設定 Rancher 以允許您的使用者使用他們的 G Suite 憑證登入。

只有 G Suite 網域的管理員才能存取 Admin SDK。因此,只有 G Suite 管理員可以為 Rancher 設定 Google OAuth。

在 Rancher 中,只有管理員或具有 Manage Authentication 全域角色的使用者才能設定身份驗證。

前置需求​

  • 您必須設定好 G Suite 管理員帳戶。
  • G Suite 需要頂級私有網域 FQDN 作為授權網域。取得 FQDN 的一種方法是在 Route53 中為您的 Rancher 伺服器建立 A 記錄。您不需要使用該記錄更新 Rancher Server URL 設定,因為可能有叢集正在使用該 URL。
  • 您必須為您的 G Suite 網域啟用 Admin SDK API。您可以使用此頁面上的步驟來啟用它。

啟用 Admin SDK API 後,您的 G Suite 網域的 API 畫面應該如下所示: Enable Admin APIs

為 Rancher 設定 G Suite 的 OAuth​

在 Rancher 中設定 Google OAuth 之前,您需要登入您的 G Suite 帳戶並執行以下操作:

  1. 在 G Suite 中將 Rancher 新增為授權網域
  2. 為 Rancher 伺服器生成 OAuth2 憑證
  3. 為 Rancher 伺服器建立服務帳戶憑證
  4. 將服務帳戶金鑰註冊為 OAuth 客戶端

1. 將 Rancher 新增為授權網域​

  1. 點擊此處前往 Google 網域的憑證頁面。
  2. 選擇您的專案並點擊 OAuth consent screen。 OAuth Consent Screen
  3. 前往 Authorized Domains 並在清單中輸入 Rancher 伺服器 URL 的頂級私有網域。頂級私有網域是最右邊的超級網域。例如,www.foo.co.uk 的頂級私有網域是 foo.co.uk。有關頂級網域的更多資訊,請參閱此文章。
  4. 前往 Scopes for Google APIs 並確保啟用了 email、profile 和 openid。

結果: Rancher 已被新增為 Admin SDK API 的授權網域。

2. 為 Rancher 伺服器建立 OAuth2 憑證​

  1. 前往 Google API 控制台,選擇您的專案,然後前往憑證頁面。 Credentials
  2. 在 Create Credentials 下拉式選單中,選擇 OAuth client ID。
  3. 點擊 Web application。
  4. 提供名稱。
  5. 填寫 Authorized JavaScript origins 和 Authorized redirect URIs。注意:用於設定 Google OAuth 的 Rancher UI 頁面(可從 Global view 下的 Security > Authentication > Google 存取)為您提供了在此步驟中輸入的確切連結。
  • 在 Authorized JavaScript origins 下,輸入您的 Rancher 伺服器 URL。
  • 在 Authorized redirect URIs 下,輸入您的 Rancher 伺服器 URL 並附加路徑 verify-auth。例如,如果您的 URI 是 https://rancherServer,您將輸入 https://rancherServer/verify-auth。
  1. 點擊 Create。
  2. 建立憑證後,您將看到一個包含憑證清單的畫面。選擇您剛建立的憑證,在該行的最右側點擊 Download JSON。儲存檔案,以便您可以將這些憑證提供給 Rancher。

結果: 您的 OAuth 憑證已成功建立。

3. 建立服務帳戶憑證​

由於 Google Admin SDK 僅供管理員使用,普通使用者無法使用它來檢索其他使用者的個人資料或他們的群組。普通使用者甚至無法檢索自己的群組。

由於 Rancher 提供基於群組的成員資格存取,我們要求使用者能夠取得他們自己的群組,並在需要時查找其他使用者和群組。

作為取得此功能的解決方法,G Suite 建議建立服務帳戶並將您 G Suite 網域的授權委派給該服務帳戶。

本部分描述如何:

  • 建立服務帳戶
  • 為服務帳戶建立金鑰並將憑證下載為 JSON
  1. 點擊此處並選擇您為其生成 OAuth 憑證的專案。
  2. 點擊 Create Service Account。
  3. 輸入名稱並點擊 Create。 Service account creation Step 1
  4. 不要在 Service account permissions 頁面上提供任何角色,然後點擊 Continue Service account creation Step 2
  5. 點擊 Create Key 並選擇 JSON 選項。下載 JSON 檔案並儲存它,以便您可以將其作為服務帳戶憑證提供給 Rancher。 Service account creation Step 3

結果: 您的服務帳戶已建立。

4. 將服務帳戶金鑰註冊為 OAuth 客戶端​

您需要為您在上一步驟中建立的服務帳戶授予一些權限。Rancher 只要求您授予使用者和群組的唯讀權限。

使用服務帳戶金鑰的唯一 ID,使用以下步驟將其註冊為 Oauth 客戶端:

  1. 取得您剛建立的金鑰的唯一 ID。如果它沒有顯示在您建立的金鑰旁邊的金鑰清單中,您將必須啟用它。要啟用它,請點擊 Unique ID 並點擊 OK。這將在服務帳戶金鑰清單中新增 Unique ID 欄。儲存為您建立的服務帳戶列出的那個。注意:這是一個數字金鑰,不要與字母數字欄位 Key ID 混淆。

    Service account Unique ID

  2. 前往 Domain-wide Delegation 頁面。

  3. 在 Client Name 欄位中新增在上一步驟中取得的唯一 ID。

  4. 在 One or More API Scopes 欄位中,新增以下範圍:

    openid,profile,email,https://www.googleapis.com/auth/admin.directory.user.readonly,https://www.googleapis.com/auth/admin.directory.group.readonly
  5. 點擊 Authorize。

結果: 服務帳戶已在您的 G Suite 帳戶中註冊為 OAuth 客戶端。

在 Rancher 中設定 Google OAuth​

  1. 使用被分配管理員角色的本地使用者登入 Rancher。此使用者也稱為本地主體。
  2. 在左上角,點擊 ☰ > Users & Authentication。
  3. 在左側導覽選單中,點擊 Auth Provider。
  4. 點擊 Google。UI 中的說明涵蓋了使用 Google OAuth 設定身份驗證的步驟。
    1. Admin Email: 提供 GSuite 設定中管理員帳戶的電子郵件。為了執行使用者和群組查找,Google API 需要管理員的電子郵件以及服務帳戶金鑰。
    2. Domain: 提供您設定 GSuite 的網域。提供確切的網域,而不是任何別名。
    3. Nested Group Membership: 勾選此方塊以啟用巢狀群組成員資格。Rancher 管理員可以在設定授權後隨時停用此功能。
    • Step One 是關於將 Rancher 新增為授權網域,我們已經在本節中介紹過。
    • 對於 Step Two,提供您在完成本節後下載的 OAuth 憑證 JSON。您可以上傳檔案或將內容貼到 OAuth Credentials 欄位中。
    • 對於 Step Three,提供在本節結束時下載的服務帳戶憑證 JSON。只有在您成功註冊服務帳戶金鑰為 G Suite 帳戶中的 OAuth 客戶端後,憑證才能運作。
  5. 點擊 Authenticate with Google。
  6. 點擊 Enable。

結果: Google 身份驗證已成功設定。