使用者管理
使用 Keycloak 作為身分識別提供者,透過 LDAP 或 Active Directory 聯合或本機管理帳戶來管理 IBM Bob 本地部署的使用者存取。
IBM Bob 本地部署包含一個用於使用者身分驗證和存取管理的 Keycloak 身分識別提供者。使用者可以從現有的 LDAP 或 Active Directory 環境聯合,也可以直接在 Keycloak 中建立。無論以何種方式佈建,使用者必須分配適當的 Bob 角色才能存取該服務。
概觀
| 概念 | 描述 |
|---|---|
| 身分識別提供者 | Keycloak — 由 Bob Operator 部署和管理。 |
| 使用者來源 | 使用者可以直接在 Keycloak 中建立,也可以從 LDAP 或 Active Directory 服務聯合。 |
| 身分驗證 | 使用者透過 Keycloak 使用 OpenID Connect(OIDC)進行身分驗證。Keycloak 發行短期授權碼,bob-authn 將其兌換為 Bob bearer token。 |
| 授權 | 對 Bob 功能的存取權由 Keycloak 中分配給使用者的角色控制。 |
| 設定介面 | LDAP 整合透過 BobLDAP 自訂資源和 bobctl configure-idp 指令管理。 |
支援的 LDAP 目錄類型
Bob 本地部署支援任何符合 LDAPv3 規範的目錄服務。LDAP 設定中的 vendor 參數決定使用的 Keycloak 提供者範本,該範本定義所選目錄類型的通訊協定專屬設定。
vendor 數值 | 目錄類型 |
|---|---|
other | OpenLDAP 及其他通用 LDAPv3 相容目錄服務 |
ad | Microsoft Active Directory |
rhds | Red Hat Directory Server |
tivoli | IBM Security Directory Server(前稱 Tivoli Directory Server) |
edirectory | NetIQ / Micro Focus eDirectory |
身分驗證與聯合架構
當使用者登入時,Bob 將請求傳遞給 Keycloak,由其處理身分驗證。所有使用者均透過 Keycloak 進行身分驗證。LDAP 聯合是可選的,只有在設定後才會啟用。
- 已啟用 LDAP 聯合:Keycloak 直接對 LDAP 目錄驗證使用者身分。使用者密碼保留在 LDAP 目錄中,不儲存在 Keycloak 中。
- 已停用 LDAP 聯合:Keycloak 使用本機 Keycloak 使用者存放區驗證使用者身分。
身分驗證流程
- 使用者輸入憑證。
- Keycloak 驗證使用者身分。
- Keycloak 發行短期授權碼。
bob-authn將授權碼兌換為 Bob bearer token。- 所有後續 API 請求均使用 Bob 發行的 token。
使用者同步行為
Bob 本地部署支援兩種同步模式,透過 LDAP 設定中的 userSync.enabled 設定進行設定:
| 模式 | userSync.enabled | 行為 |
|---|---|---|
| 隨選(On-demand) | false(預設) | 僅當使用者首次成功登入時,才將其匯入 Keycloak,無需事先掃描目錄。此選項適合目錄項目非常龐大的環境。 |
| 積極同步(Eager sync)(建議) | true | 註冊 LDAP 提供者時,執行一次完整同步,將目錄中的所有使用者匯入。初始匯入後,Keycloak 每五分鐘自動同步使用者更新。此方式確保所有使用者立即可用,透過 adminEmails 指定的管理員帳戶無需使用者事先登入即可佈建。 |
隨選同步
此模式適用於無法立即匯入所有使用者的大型目錄。
在首次身分驗證嘗試時:
- 使用者被匯入 Keycloak。
- 使用者透過 SCIM 在 Bob 中完成佈建。
- 由於佈建延遲,首次登入嘗試會失敗。
- 佈建完成後,使用者即可成功登入。
積極同步
適合大多數部署。所有使用者在同步完成後立即可用,無需登入即可完成佈建。
同步間隔目前固定為 5 分鐘。
使用 SCIM 同步使用者
IBM Bob 本地部署使用內嵌在 Keycloak 中的自訂 SCIM 2.0 外掛程式,在 Keycloak 和 Bob 之間同步使用者帳戶。Bob Operator 會自動設定此整合,無需額外設定。
使用者同步的運作方式
當 Keycloak 中發生使用者生命週期事件時,SCIM 外掛程式會將相應事件傳送給 bob-admin 服務。Bob 隨後根據事件更新使用者存取權限和設定檔資訊。
此同步適用於 Keycloak 管理的所有使用者,包括 LDAP 聯合使用者和直接在 Keycloak 管理主控台中建立的使用者。
| 使用者事件 | Bob 動作 |
|---|---|
| 使用者已建立或首次登入 | 為使用者佈建帳戶並授予 Bob 存取權限 |
| 使用者已更新 | 同步設定檔變更 |
| 使用者從 LDAP 中移除 | 撤銷對 Bob 的存取權限,同時保留使用者資料 |
從 LDAP 中移除使用者會撤銷其對 Bob 的存取權限,但不會刪除其資料。如果該使用者被重新新增至目錄,存取權限將恢復,先前建立的工作也仍然可用。
驗證同步
Bob 目前不提供確認 SCIM 同步處於作用中狀態的狀態條件或健全狀況檢查。若要驗證佈建是否正常運作,請建立或匯入一個測試使用者,並確認該使用者在首次登入或初始 userSync 匯入後出現在 Bob 中。
管理角色和群組成員資格
IBM Bob 使用 Keycloak 群組來控制使用者角色。Bob Operator 會自動建立並維護所需的群組和角色對應。
| Keycloak 群組 | 授予的 Keycloak 角色 | 新增對象 |
|---|---|---|
bob-users | bob-user | 所有通過身分驗證的使用者在首次成功登入時透過 realm 的預設群組自動新增。 |
bob-admins | bob-admin | 在 BobLDAP 設定的 adminEmails 欄位中指定的使用者,由 Operator 在每次調試週期中自動分配。 |
管理員存取
所有通過身分驗證的使用者均可獲得標準 Bob 存取權限。
若要授予管理員權限:
- 在 IDP 設定檔的
adminEmails中新增使用者的電子郵件地址。 - 套用變更:
./bobctl configure-idp --config my-idp.yaml
若要撤銷管理員權限:
- 從
adminEmails中移除該電子郵件地址。 - 重新套用設定。
bobctl configure-idp 是管理 Bob 管理員存取權限的唯一支援方法。將電子郵件地址新增至 adminEmails 並不會建立使用者帳戶——使用者必須已透過 LDAP 聯合或直接建立的方式存在於 Keycloak 中。
管理 Keycloak
Bob 本地部署包含提供身分與存取管理服務的 Keycloak 部署。Keycloak 管理與 Bob 管理是分開的,每個介面服務於不同的目的。
管理介面
| 介面 | URL | 用途 |
|---|---|---|
| Keycloak 管理主控台 | https://bob-keycloak.<namespace>.<ingress-domain> | 管理 Keycloak 基礎架構、使用者、群組、身分識別提供者和聯合設定。 |
| Bob 管理 UI | https://bob.<namespace>.<ingress-domain>/admin | 管理 Bob 使用者、角色、邀請和租戶專屬設定。 |
Bob Operator 在安裝期間自動建立這兩條路由。
此版本的 Bob Admin UI 不提供活動日誌。若要存取服務日誌,請直接從 OpenShift Container Platform 主控台或 CLI 查看身分驗證服務、授權服務和管理服務的 Pod 日誌。如需詳細資訊,請參閱已知限制。
存取 Keycloak 管理主控台
若要在叢集中尋找 Keycloak 路由,請執行:
oc get route -n <instance-namespace> | grep keycloak從叢集 Secret 中擷取初始管理員憑證:
oc get secret bob-keycloak-initial-admin \
-n <instance-namespace> \
-o jsonpath='{.data.username}' | base64 -d && echooc get secret bob-keycloak-initial-admin \
-n <instance-namespace> \
-o jsonpath='{.data.password}' | base64 -d && echo請勿修改 bob-keycloak-initial-admin Secret。Bob Operator 在調試期間使用這些憑證。變更儲存的憑證可能會中斷 Operator 管理的功能。
如果你需要個人管理員帳戶,請使用初始管理員憑證登入,並在 master realm 中建立一個獨立的使用者,用於日常管理工作。
登入後,使用 Keycloak 主控台左上角的 realm 選取器切換至 bob realm。所有 Bob 使用者、群組、身分識別提供者和聯合提供者均從此 realm 管理。
瞭解 Keycloak Realm
Realm 是一個獨立的管理網域,包含自己的使用者、憑證、角色、群組和身分識別提供者。
Bob 本地部署使用兩個 realm:
| Realm | 用途 |
|---|---|
| master | 保留用於 Keycloak 管理。此 realm 中的使用者可以管理 Keycloak,但無法存取 Bob。 |
| bob | 包含所有 Bob 使用者、群組、LDAP 聯合提供者和應用程式用戶端。Bob Operator 建立並管理此 realm。 |
這兩個 realm 完全獨立。在一個 realm 中的成員資格或權限不會授予對另一個 realm 中資源的存取權。
bob realm 由 Operator 管理。你可以透過 Keycloak 主控台直接進行變更,但 IBM 支援僅限於解決影響 Bob 身分驗證和存取的問題。
管理 LDAP 聯合提供者
透過 bobctl configure-idp 或 BobLDAP 自訂資源設定的 LDAP 聯合提供者在 bob realm 的使用者聯合區段中可見。
Bob Operator 在建立 LDAP 提供者時註冊它們。之後直接在 Keycloak 主控台中進行的變更不會同步回對應的 BobLDAP 自訂資源。
為了保持一致的設定管理,請盡可能使用 BobLDAP 自訂資源和 bobctl configure-idp 指令。
安全考量事項
管理 Keycloak 時請遵循以下建議:
- 將對
bob-keycloak-initial-adminSecret 的存取權限限制為叢集管理員。 - 在
bobrealm 中執行 Bob 管理工作。 - 僅將
masterrealm 用於 Keycloak 基礎架構管理。 - 除非明確需要且受支援,否則不要建立額外的 realm 或用戶端。
- 透過
BobLDAP資源管理 LDAP 聯合,而不是直接在 Keycloak 主控台中編輯提供者設定。 - 將初始管理員帳戶視為緊急或啟動引導帳戶,日常管理工作使用專用的個人管理員帳戶。
管理直接 Keycloak 使用者
使用者可以直接在 Keycloak 中建立和管理,無需整合 LDAP 目錄。此方法適合概念驗證環境、小規模部署,或沒有 LDAP 伺服器的安裝情境。對於已使用企業目錄服務的生產環境,建議使用 LDAP 聯合。
新增使用者
若要建立本機使用者,請在 bob realm 的使用者區段建立新使用者帳戶。儲存使用者後,設定密碼並分配適當的群組成員資格:
- 將使用者新增至 bob-users 以授予標準存取權限。
- 將使用者同時新增至 bob-users 和 bob-admins 以授予管理員存取權限。
管理密碼
本機管理使用者的密碼透過 Keycloak 管理主控台進行管理。開啟使用者記錄,使用憑證索引標籤建立、更新或重設使用者密碼。
移除使用者
若要撤銷使用者的存取權限,請在 Keycloak 管理主控台中開啟使用者記錄,然後刪除或停用該帳戶。已停用的使用者無法再進行身分驗證,但其使用者資訊仍保留在系統中。