設定身份驗證
Rancher 為 Kubernetes 新增的關鍵功能之一是集中式使用者身份驗證。此功能允許您的使用者使用一組憑證來驗證任何 Kubernetes 叢集。
這種集中式使用者身份驗證是透過 Rancher 身份驗證代理實現的,該代理與 Rancher 的其餘部分一起安裝。此代理驗證您的使用者,並使用服務帳戶將其請求轉發到您的 Kubernetes 叢集。
用於啟用外部提供者的帳戶將被授予管理員權限。如果您使用測試帳戶或非管理員帳戶,該帳戶仍將被授予管理員級別的權限。請參閱外部身份驗證設定和主要使用者以了解原因。
外部與本地身份驗證
Rancher 身份驗證代理與以下外部身份驗證服務整合。
| 驗證服務 |
|---|
| Microsoft Active Directory |
| GitHub |
| Microsoft Azure AD |
| FreeIPA |
| OpenLDAP |
| Microsoft AD FS |
| PingIdentity |
| Keycloak (OIDC) |
| Keycloak (SAML) |
| Okta |
| Google OAuth |
| Shibboleth |
| Generic (OIDC) |
然 而,Rancher 也提供本地身份驗證。
在大多數情況下,您應該使用外部身份驗證服務而不是本地身份驗證,因為外部身份驗證允許從中央位置進行使用者管理。但是,在極少數情況下,您可能希望使用一些本地身份驗證使用者來管理 Rancher,例如外部身份驗證提供者不可用或正在進行維護時。
使用者和群組
- 本地身份驗證不支援建立或管理群組。
- 設定外部身份驗證提供者後,請注意,本地 Rancher 範圍的管理使用者僅顯示他們在相應身份驗證提供者中所屬的資源,例如使用者和群組。
Rancher 依賴使用者和群組來確定誰被允許登入 Rancher 以及他們可以存取哪些資源。使用外部提供者進行身份驗證時,群組是根據使用者從外部提供者提供的。這些使用者和群組被賦予特定角色來存取叢集、專案和全域 DNS 提供者和條目等資源。當您授予群組存取權限時,在身份驗證提供者中作為該群組成員的所有使用者將能夠使用您指定的權限存取資源。有關角色和權限的更多資訊,請參閱基於角色的存取控制。
有關更多資訊,請參閱使用者和群組
Rancher 授權範圍
設定 Rancher 允許使用外部身份驗證服務登入後,您應該設定誰被允許登入和使用 Rancher。以下選項可用:
| 存取層級 | 描述 |
|---|---|
| 允許任何有效使用者 | 授權服務中的_任何_使用者都可以存取 Rancher。我們通常不鼓勵使用此設定! |
| 允許叢集、專案的成員,以及授權的使用者和組織 | 授權服務中的任何使用者以及新增為叢集成員或專案成員的任何群組都可以登入 Rancher。此外,您新增到授權使用者和組織清單的身份驗證服務中的任何使用者或群組都可以登入 Rancher。 |
| 僅限制存取授權的使用者和組織 | 只有新增到授權使用者和組織的身份驗證服務中的使用者或群組才能登入 Rancher。 |
只有受信任的管理員級別使用者才應該存取本地叢集,該叢集管理 Rancher 實例中的所有其他叢集。Rancher 直接安裝在本地叢集上,Rancher 的管理功能允許本地叢集上的管理員佈建、修改、連線和檢視有關下游叢集的詳細資訊。由於本地叢集是 Rancher 實例架構的關鍵,不當的存取會帶來安全風險。
要為授權服務中的使用者設定 Rancher 存取層級,請按照以下步驟操作:
- 在左上角,點擊 ☰ > Users & Authentication。
- 在左側導覽列中,點擊 Auth Provider。
- 為驗證提供者設定設定詳細資訊後,使用 Site Access 選項來設定使用者授權的範圍。上表說明了每個選項的存取層級。
- 選擇性:如果您選擇 Allow any valid Users 以外的選項,則可以透過在出現的文字欄位中搜尋使用者,將使用者新增到授權使用者和組織清單中。
- 點擊 Save。
結果: Rancher 存取設定設定已套用。
- 在 Rancher 中為使用者和群組分配權限時,不會驗證它們。
- 新增使用者時,必須正確輸入確切的使用者 ID(即
UID Field)。當您輸入使用者 ID 時,不會搜尋其他可能匹配的使用者 ID。 - 新增群組時,您必須從文字方塊旁邊的下拉式選單中選擇群組。Rancher 假設來自文字方塊的任何輸入都是使用者。
- 群組下拉式選單僅顯示您所屬的群組。但是,如果您擁有管理員權限或受限管理員權限,您可以加入您不是成員的群組。
外部身份驗證設定和主要使用者
設定外部身份驗證需要:
- 分配管理員角色的本地使用者,以下稱為_本地主體_。
- 可以使用外部身份驗證服務進行身份驗證的外部使用者,以下稱為_外部主體_。
外部身份驗證的設定也會影響 Rancher 中主要使用者的管理方式。具體來說,當使用者帳戶啟用外部提供者時,它會被授予管理員級別的權限。這是因為本地主體和外部主體共享相同的使用者 ID 和存取權限。
以下說 明演示了這些效果:
-
以本地主體身分登入 Rancher 並完成外部身份驗證的設定。

-
Rancher 將外部主體與本地主體關聯。這兩個使用者共享本地主體的使用者 ID。
-
完成設定後,Rancher 會自動登出本地主體。
-
然後,Rancher 會自動將您以外部主體身分登入。
-
由於外部主體和本地主體共享一個 ID,因此在使用者頁面上不會顯示外部主體的唯一物件。
-
外部主體和本地主體共享相同的存取權限。
如果您需要重新設定或停用然後重新啟用先前設定的提供者,請確保嘗試這樣做的使用者 以外部使用者身分登入 Rancher,而不是本地管理員。
停用驗證提供者
當您停用驗證提供者時,Rancher 會刪除與其相關的所有資源,例如:
- Secret。
- 全域角色綁定。
- 叢集角色範本綁定。
- 專案角色範本綁定。
- 與提供者關聯但從未以本地使用者身分登入 Rancher 的外部使用者。
由於此操作可能導致許多資源丟失,您可能希望在提供者上新增保護措施。為了確保在停用驗證提供者時不執行此清理程序,請將特殊註解新增到相應的驗證設定。
例 如,要為 Azure AD 提供者新增保護措施,請註解 azuread authconfig 物件:
kubectl annotate --overwrite authconfig azuread management.cattle.io/auth-provider-cleanup='user-locked'
Rancher 在您將註解設定為 unlocked 之前不會執行清理。
手動執行資源清理
即使您設定了另一個驗證提供者,Rancher 也可能在本地叢集中保留先前停用的驗證提供者設定的資源。例如,如果您使用提供者 A,然後停用它並開始使用提供者 B,當您升級到新版本的 Rancher 時,您可以手動觸發提供者 A 設定的資源清理。
要手動觸發已停用驗證提供者的清理,請將值為 unlocked 的 management.cattle.io/auth-provider-cleanup 註解新增到其驗證設定。