ceph使用cephx協(xié)議對客戶端進(jìn)行身份認(rèn)證圈盔,cephx用于對ceph保存的數(shù)據(jù)進(jìn)行認(rèn)證訪問和授權(quán),與mon通信的請求都要經(jīng)過ceph認(rèn)證通過舀奶,但是也可以在mon節(jié)點關(guān)閉ceph認(rèn)證叨襟,但是關(guān)閉認(rèn)證之后任何訪問都將被允許,因此無法保證數(shù)據(jù)的安全性辙培。同時,Mon 還負(fù)責(zé)維護(hù)整個集群的用戶名和秘鑰等邢锯;
認(rèn)證流程
Ceph 客戶端與 Mon 之間在創(chuàng)建時扬蕊,存在一對域共享秘鑰。
客戶端向 Monitor 發(fā)出請求時丹擎,Monitor 會返回用于驗證用戶身份的數(shù)據(jù)結(jié)構(gòu)尾抑,其中包含獲取 Ceph 服務(wù)時用到的臨時 Session key,這個是加密的蒂培;
客戶端拿到這個臨時加密的 Session key后再愈,客戶端通過密鑰進(jìn)行解密 Seesion key;(其實這里雙方提前有一個域共享密鑰护戳,只有有了它之后翎冲,才可以對臨時 Session key 進(jìn)行解密)
然后客戶端使用解密的 Session key 向 mon 請求所需要的服務(wù),比如OSD媳荒,然后 mon 給出一個令牌 ticket 抗悍,并且 mon 還需要檢查這個 Session key 的合法性;并且 mon 提供一個 ticket需要使用Session key 對ticket進(jìn)行對稱加密肺樟,然后發(fā)送給客戶端檐春,客戶端也具有這個Session key,所以他可以解密出ticket么伯;
客戶端然后通過tocket 去訪問對應(yīng)的服務(wù)疟暖,這里以O(shè)SD為例,去訪問OSD服務(wù);
注意session key與 ticket 都會有過期時間的俐巴,就算用戶拿到了 session key與ticket骨望,過一段時間后就失效了。
客戶端與 ceph 組件服務(wù)并沒有一直使用域共享密鑰進(jìn)行通信欣舵;域共享密鑰擎鸠,只有在客戶端與 Monitor 在共享 Session key的時候使用到;同時缘圈,還可以發(fā)現(xiàn)域共享密鑰并沒有在互聯(lián)網(wǎng)上面進(jìn)行傳輸劣光;
CephX 身份驗證功能僅限制Ceph的各組件之間,它不能擴(kuò)展到其它非Ceph組件糟把,它并不解決數(shù)據(jù)傳輸加密的問題绢涡;
ceph 用戶介紹
- 用戶是指個人(ceph管理者)或 系統(tǒng)參與者(mon/osd/mds)。
- 通過創(chuàng)建用戶遣疯,可以控制用戶或那個參與者能夠訪問ceph存儲集群雄可、以及可訪問的存儲池及存儲池的數(shù)據(jù)。
- 通過點號來分割用戶類型和用戶名缠犀,格式為TYPE.ID数苫,例如:ceph.client.admin.keyring
授權(quán)的能力
能力 | 含義 |
---|---|
r | 向用戶授予讀取權(quán)限,訪問監(jiān)視器(mon)以檢索CRUSH運行圖時需要由此能力 |
w | 向用戶授予針對對象的寫入權(quán)限 |
x | 授予用戶調(diào)用類方法(包括讀取和寫入)的能力辨液,以及在監(jiān)視器中執(zhí)行auth操作的能力 |
* | 授予用戶對特定守護(hù)進(jìn)程/存儲池的讀取虐急、寫入和執(zhí)行權(quán)限,以及執(zhí)行管理命令的能力 |
class-read | 授予用戶調(diào)用類讀取方法的能力室梅,屬于是x能力的子集 |
class-write | 授予用戶調(diào)用類寫入方法的能力戏仓,屬于是x能力的子集 |
profile osd | 授予用戶以某個OSD身份連接到其它OSD或監(jiān)視器的權(quán)限。授予OSD權(quán)限亡鼠,使OSD能夠處理復(fù)制檢測信號流量和狀態(tài)報告(獲取OSD的狀態(tài)信息) |
profile mds | 授予用戶以某個MDS身份連接到其它MDS或監(jiān)視器權(quán)限 |
profile bootstrap-osd | 授予用戶引導(dǎo)OSD的權(quán)限(初始化OSD并將OSD加入ceph集群),授權(quán)給部署工具敷待,使其在引導(dǎo)OSD時有權(quán)添加秘鑰 |
profile bootstrap-mds | 授予用戶引導(dǎo)元數(shù)據(jù)服務(wù)器的權(quán)限间涵,授權(quán)部署工具權(quán)限,使其在引導(dǎo)元數(shù)據(jù)服務(wù)器時有權(quán)添加秘鑰 |
用戶管理
ceph 主要通過ceph auth命令來進(jìn)行用戶管理榜揖。
-
列出用戶
# ceph auth ls
-
添加用戶
ceph auth add
此命令是添加用戶的規(guī)范方法勾哩。它會創(chuàng)建用戶、生成秘鑰举哟,并添加所有指定的能力思劳。# ceph auth add client.wgs mon 'allow r' osd 'allow rwx pool=wgspool' added key for client.wgs
ceph auth get-or-create 創(chuàng)建用戶并返回密鑰文件格式的密鑰信息,或者在用戶存 在時返回用戶名及密鑰文件格式的密鑰信息妨猩;
#
-
刪除用戶
# ceph auth del client.wgs
-
獲取指定用戶權(quán)限
# ceph auth get client.admin
-
驗證權(quán)限
#
-
修改權(quán)限
使用ceph auth caps命令可以指定用戶以及更改用戶的能力潜叛,設(shè)置新能力會完全覆蓋當(dāng)前的能力,因此,要加上之前的用戶已經(jīng)擁有的和新的能力威兜。#
秘鑰管理
- 秘鑰環(huán)
ceph密鑰環(huán)是一個保存了secrets销斟、keys、certificates并且能夠讓客戶端通過認(rèn)證訪問ceph的keyring file(集合文件)椒舵,一個keyring file可以保存一個或者多個認(rèn)證信息蚂踊,每一個key都有一個實體名稱加權(quán)限,類型為:{client笔宿、mon犁钟、mds、osd}.name
使用ceph-authtool命令為其創(chuàng)建用戶密鑰環(huán)文件泼橘。
-
創(chuàng)建
# cceph-authtool --create-keyring wgs.key creating wgs.key
-
驗證秘鑰環(huán)文件
# ceph-authtool -l wgs.key
-
導(dǎo)出用戶認(rèn)證信息至keyring文件
# ceph auth get client.wgs -o ceph.client.wgs.keyring exported keyring for client.wgs
-
從keyring文件恢復(fù)用戶認(rèn)證信息
參考資料
1特纤、https://www.modb.pro/db/50693