延續<[Open-source tool] 如何配置FreeIPA的使用者登入認證(Authentication)和存取控制(Host-Based Access Control, HBAC)?> 一文,本文進一步以cockpit服務管理為案例,說明如何配置使用者Bob的授權(Authorization)功能,達到精確掌握使用者Bob對cockpit服務權限的效果,如同本文封面影片所示。
一、硬體環境和架構
- FreeIPA Server 端:硬體為樹莓派5b/8g,Linux作業系統為AlmaLinux 10,並利用docker部署FreeIPA服務,IP為192.168.0.114,主機名為ipa.rpi.lab。
- Client 端:硬體為N100迷你主機配置的虛擬機,Linux作業系統為Ubuntu 22.04 LTS desktop, IP為192.168.0.113,主機名為ub-vm.rpi.lab。主要作為開發人員的測試平台(Dev Host)
- 使用者:Bob,所屬群組為 "dev_group"。
- 授權規則 (Authorization):使用者Bob可以登入系統並執行基本操作,但其僅具備cockpit服務的查看權限,同時其被禁止"重啟"和"停止" cockpit服務。
二、FreeIPA Server 端的配置作業
所有的管理動作都在FreeIPA Server端的Web UI與命令列中完成。
1. 配置Sudo Command
在運行授權規則(Sudo Rule)前,藉由Policy -> Sudo -> Sudo Commands路徑,定義"被禁止的指令",三條指令如下,其中第iii條的星號(*)表示萬用字元:
i. /usr/bin/systemctl restart cockpit
ii. /usr/bin/systemctl restart cockpit.socket
iii. /usr/bin/systemctl stop cockpit*
另外,為了管理方便,將上述三個指令加入名為 "forbidden_cockpit_cmds" 的 Sudo Command Group 中,屆時可直接Sudo Rule加入"forbidden_cockpit_cmds"。
2. 配置 Sudo Rule
建立一條名為 "deny_dev_group_restart_cockpit" 的 Sudo Rule,並配置Who(使用者)和Access This Host (主機區塊)等等欄位,如下:
i. Who(使用者):指定為"dev_group"群組,而目前僅有Bob一位使用者在"dev_group"群組中。
ii. Access This Host(主機區塊):指定為"dev_servers",而目前僅有Ubuntu VM一台客戶端主機在"dev_servers"中。
iii. Run Commands(指令邏輯):
- Allow:加入 "/usr/bin/systemctl status cockpit",讓Bob可查看cockpit服務狀態。
- Deny:將上述建立的"forbidden_cockpit_cmds"指令群組加入 Sudo Deny Commands。
3. 終端機(CLI)確認Sudo Rule設置結果
這是一個選擇項,除了在Web UI介面中設置和確認設置結果,後續運維作業,亦可透過終端機命列進到docker容器中確認設置結果,較節省資源,指令如下:
sudo docker exec -it freeipa ipa user-show bob
由輸出的結果,可檢視Bob的詳細屬性,包含UID(1861200006)等等資訊,其中"Indirect Member of Sudo rule: deny_dev_group_restart_cockpit"說明授權規則已套用在使用者Bob上。
三、FreeIPA Client 端的測試效果
切換到"ub-vm.rpi.lab"客戶端主機,以使用者Bob登入Ubuntu 22.04 OS後,分別執行下列指令,若看到"Sorry, user bob is not allowed to execute '/usr/bin/systemctl restart cockpit' as root on ub-vm.rpi.lab.",表示"deny_dev_group_restart_cockpit"規則已生效。
sudo systemctl stop cockpit
sudo systemctl restart cockpit
另外,關於FreeIPA的Sudo Rule規則邏輯,提醒兩點如下:
-Deny區塊優先級高於Allow區塊,換言之,只要指令出現在Deny清單,使用者Bob就無法執行。
- Allow區塊須明確加入"sudo systemctl status cockpit"指令,否則Bob連查看狀態都會被拒絕。
最後,透過NotebookLM的AI功能,將上述FreeIPA授權功能的配置過程以信息圖呈現,完整且驚艷,一併供參考。

沒有留言:
張貼留言