概述
只要是個公司,基本上都有郵箱和 AD(Active Directory). 在 AD 裡,已經有了:
- 使用者
- 賬號密碼
- 郵箱
- 使用者組
- 組織架構
所以對於一些僅限於本公司一定範圍內人員使用的管理或後臺或運營運維類系統,其實是非常適合對接 AD 來進行認證、分組,以及根據分組來進行許可權分配的。
對於 Rancher,假設使用者只會有這麼幾類:
- 管理員:運維部門
- 專案管理員: 專案負責人
- 使用者: 開發
- 只讀使用者: 其他人員
那麼就可以直接對接 AD 來實現認證、登入、分組、授權。
?️Reference:
這使 Rancher 管理員可以對外部使用者系統中的使用者和組進行叢集和專案的訪問控制,同時允許終端使用者在登入 Rancher UI 時使用其 Active Directory 憑據進行身份驗證。
AD 賬號申請
首先必須從郵箱管理員或 AD 管理員那申請一個新的 AD 使用者,以用作 Rancher 的服務賬戶。此使用者需要的許可權是:
- 可以搜尋、讀取(只讀即可) AD 域下的使用者和組,及其屬性 (比如至少要有 運維部門/開發部門/專案部門相關 OU 下的許可權)
配置步驟
詳細的步驟直接檢視這裡:對接 Active Directory | Rancher 文件
這裡結合個人的實踐說一些實用技巧:
AD 伺服器引數
- 服務帳戶 (service account) 使用者名稱:就是 AD 管理員提供給你的 CN, 這裡可能會給到你這樣的一個串:
CN=RancherSA,OU=ApplicationAccount,DC=example,DC=com
, 那麼就只需要填寫RancherSA
就好了。 - 使用者搜尋庫:如果 運維部門/開發部門/專案部門 都在 IT 部之下,IT 部的 OU 是:
OU=ITDepartment,DC=example,DC=com
, 那麼就填寫這個。 - 使用者組搜尋庫:這裡折騰了很久,你一定要規劃清楚要根據什麼維度來劃分使用者組,並且該使用者組對應的
objectClass
是什麼,而且該objectClass
一定要有member
這樣的屬性和使用者來關聯。
關於使用者組的確認,我使用 JXplorer 來進行詳細的分析和檢視,具體如下:
JXplorer
這裡我使用 AD Client - JXplorer
登入截圖如下:
關於使用者組,當初是想直接使用組織架構來作為使用者組,組織架構的資訊如下:
objectClass: organizationalUnit
- 雖然從下圖來看,組織架構 和 使用者是有層次關係的,但是,在其屬性中,
member
卻為空!
所以,這個是不能用作使用者組的.
如果用了這個,並根據使用者組來配置許可權,那麼許可權是無法透過使用者組來對映到具體的使用者的。
第二個選項,是想用郵件組 (mail group)作為使用者組,郵件組的資訊如下:
objectClass: group
member
和使用者 (objectClass: person
) 是關聯的。如下圖:
如上,那麼是可以將郵件組 (mail group)作為使用者組。而且?注意,郵件組是位於另外一個 OU 的,具體為:OU=Mail Group,DC=example,DC=com
綜上,使用者組搜尋庫最終為:OU=Mail Group,DC=example,DC=com
配置使用者
這裡還是透過 JXplorer, 點選具體的一個人,檢視其屬性資訊,示例如下圖:
- 物件類:
person
或user
都可以 - 使用者名稱屬性:
name
或cn
都可以 - 登入屬性:一般都為
sAMAccountName
, 如果想要使用郵箱登入,就是userPrincipalName
- 搜尋屬性:
sAMAccountName|sn|giverName
(預設值)(可以透過使用管道 (“|”) 符號分隔屬性來指定多個屬性。) - 使用者啟用屬性:
userAccountControl
(預設值)
配置組
- 物件類:
group
(郵件組) - 名稱屬性:
name
- 使用者組成員屬性:
distinguishedName
(預設值) - 使用者組成員對映屬性:
member
- 使用者組域名屬性:
name
測試身份驗證
這裡填寫管理員賬號對應的 AD 賬號。驗證成功該 AD 賬號直接就是管理員級別的許可權.
授權組
至此,就可以根據使用者組來進行授權,如下圖:
叢集級別授權
可以根據使用者組來對叢集級別進行授權,如下圖:
專案級別授權
可以根據使用者組來對專案級別進行授權,如下圖:
???
系列文章
?️參考文件
三人行, 必有我師; 知識共享, 天下為公. 本文由東風微鳴技術部落格 EWhisper.cn 編寫.