使用者管理

使用 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 數值目錄類型
otherOpenLDAP 及其他通用 LDAPv3 相容目錄服務
adMicrosoft Active Directory
rhdsRed Hat Directory Server
tivoliIBM Security Directory Server(前稱 Tivoli Directory Server)
edirectoryNetIQ / Micro Focus eDirectory

身分驗證與聯合架構

當使用者登入時,Bob 將請求傳遞給 Keycloak,由其處理身分驗證。所有使用者均透過 Keycloak 進行身分驗證。LDAP 聯合是可選的,只有在設定後才會啟用。

  • 已啟用 LDAP 聯合:Keycloak 直接對 LDAP 目錄驗證使用者身分。使用者密碼保留在 LDAP 目錄中,不儲存在 Keycloak 中。
  • 已停用 LDAP 聯合:Keycloak 使用本機 Keycloak 使用者存放區驗證使用者身分。

身分驗證流程

  1. 使用者輸入憑證。
  2. Keycloak 驗證使用者身分。
  3. Keycloak 發行短期授權碼。
  4. bob-authn 將授權碼兌換為 Bob bearer token。
  5. 所有後續 API 請求均使用 Bob 發行的 token。

使用者同步行為

Bob 本地部署支援兩種同步模式,透過 LDAP 設定中的 userSync.enabled 設定進行設定:

模式userSync.enabled行為
隨選(On-demand)false(預設)僅當使用者首次成功登入時,才將其匯入 Keycloak,無需事先掃描目錄。此選項適合目錄項目非常龐大的環境。
積極同步(Eager sync)(建議)true註冊 LDAP 提供者時,執行一次完整同步,將目錄中的所有使用者匯入。初始匯入後,Keycloak 每五分鐘自動同步使用者更新。此方式確保所有使用者立即可用,透過 adminEmails 指定的管理員帳戶無需使用者事先登入即可佈建。

隨選同步

此模式適用於無法立即匯入所有使用者的大型目錄。

在首次身分驗證嘗試時:

  1. 使用者被匯入 Keycloak。
  2. 使用者透過 SCIM 在 Bob 中完成佈建。
  3. 由於佈建延遲,首次登入嘗試會失敗。
  4. 佈建完成後,使用者即可成功登入。

積極同步

適合大多數部署。所有使用者在同步完成後立即可用,無需登入即可完成佈建。

注意:

同步間隔目前固定為 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-usersbob-user所有通過身分驗證的使用者在首次成功登入時透過 realm 的預設群組自動新增。
bob-adminsbob-admin在 BobLDAP 設定的 adminEmails 欄位中指定的使用者,由 Operator 在每次調試週期中自動分配。

管理員存取

所有通過身分驗證的使用者均可獲得標準 Bob 存取權限。

若要授予管理員權限:

  1. 在 IDP 設定檔的 adminEmails 中新增使用者的電子郵件地址。
  2. 套用變更:./bobctl configure-idp --config my-idp.yaml

若要撤銷管理員權限:

  1. 從 adminEmails 中移除該電子郵件地址。
  2. 重新套用設定。
重要:

bobctl configure-idp 是管理 Bob 管理員存取權限的唯一支援方法。將電子郵件地址新增至 adminEmails 並不會建立使用者帳戶——使用者必須已透過 LDAP 聯合或直接建立的方式存在於 Keycloak 中。

管理 Keycloak

Bob 本地部署包含提供身分與存取管理服務的 Keycloak 部署。Keycloak 管理與 Bob 管理是分開的,每個介面服務於不同的目的。

管理介面

介面URL用途
Keycloak 管理主控台https://bob-keycloak.<namespace>.<ingress-domain>管理 Keycloak 基礎架構、使用者、群組、身分識別提供者和聯合設定。
Bob 管理 UIhttps://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 && echo
oc 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-admin Secret 的存取權限限制為叢集管理員。
  • 在 bob realm 中執行 Bob 管理工作。
  • 僅將 master realm 用於 Keycloak 基礎架構管理。
  • 除非明確需要且受支援,否則不要建立額外的 realm 或用戶端。
  • 透過 BobLDAP 資源管理 LDAP 聯合,而不是直接在 Keycloak 主控台中編輯提供者設定。
  • 將初始管理員帳戶視為緊急或啟動引導帳戶,日常管理工作使用專用的個人管理員帳戶。

管理直接 Keycloak 使用者

使用者可以直接在 Keycloak 中建立和管理,無需整合 LDAP 目錄。此方法適合概念驗證環境、小規模部署,或沒有 LDAP 伺服器的安裝情境。對於已使用企業目錄服務的生產環境,建議使用 LDAP 聯合。

新增使用者

若要建立本機使用者,請在 bob realm 的使用者區段建立新使用者帳戶。儲存使用者後,設定密碼並分配適當的群組成員資格:

  • 將使用者新增至 bob-users 以授予標準存取權限。
  • 將使用者同時新增至 bob-users 和 bob-admins 以授予管理員存取權限。

管理密碼

本機管理使用者的密碼透過 Keycloak 管理主控台進行管理。開啟使用者記錄,使用憑證索引標籤建立、更新或重設使用者密碼。

移除使用者

若要撤銷使用者的存取權限,請在 Keycloak 管理主控台中開啟使用者記錄,然後刪除或停用該帳戶。已停用的使用者無法再進行身分驗證,但其使用者資訊仍保留在系統中。

這個主題如何?