CephFS權限管理
身份認證原理
- 用戶通過客戶端向 MON 發起請求,
- 客戶端將用戶名傳遞到 MON,
- MON 對用戶名進行檢查,若用戶存在,則通過加密用戶密鑰生成一個 session key 并回傳客戶端,
- 客戶端通過共享密鑰解密 session key,只有擁有相同用戶密鑰環檔案的客戶端可以完成解密,
- 客戶端得到 session key 后,客戶端持有 session key 再次向 MON 發起請求
- MON 生成一個 ticket,同樣使用用戶密鑰進行加密,然后發送給客戶端,
- 客戶端同樣通過共享密鑰解密得到 ticket,
- 往后,客戶端持有 ticket 向 MON、OSD 發起請求,
創建CephFS
ceph osd pool create cephfs_data 64 64 # 創建存資料的pool
ceph osd pool create cephfs_metadata 32 32 #創建存盤元資料的pool
ceph fs new lwq-fs cephfs_metadata cephfs_data #把2個pool關聯起來創建cephfs
ceph fs ls #查看cephfs
查看用戶
eph auth ls #查看已經存在的用戶
ceph auth list #可以查看用戶權限以及 key string
ceph auth get client.admin #列出用戶的權限資訊
創建用戶
ceph auth get-or-create client.bruce mon 'allow r' mds 'allow r, allow rw path=/bruce' osd 'allow rw pool=cephfs_data' #創建bruce用戶,只能在bruce目錄下面操作 其他目錄有讀權限
ceph auth get-or-create client.lzy mon 'allow r ' mds ' allow rw path=/test' osd 'allow rw pool=cephfs_data' #創建lzy用戶只能在test目錄下面操作 其他目錄沒有權限
ceph auth get-or-create client.trade mon 'allow r' mds 'allow r, allow rw path=/trade' osd 'allow rw pool=cephfs_data'
# mds caps 可以針對路徑進行授權,
# osd caps 可以針對 pool 進行授權, 這個還是比較好使的, 但是要注意與前面的 path 保持一致.
授權型別
allow:在守護行程進行訪問設定之前就已經具有特定權限,常見于管理員和守護行程用戶,
r:授予用戶讀的權限,讀取集群各個組件(MON/OSD/MDS/CRUSH/PG)的狀態,但是不能修改,
w:授予用戶寫物件的權限,與 r 配合使用,修改集群的各個組件的狀態,可以執行組件的各個動作指令,
x:授予用戶呼叫類方法的能力,僅僅和 ceph auth 操作相關,
class-read:授予用戶呼叫類讀取方法的能力,是 x 的子集,
class-write:授予用戶呼叫類寫入方法的能力,是 x 的子集,
*:授予用戶 rwx 權限,
客戶端掛載
ceph auth print-key client.bruce > bruce.key #匯出密鑰
scp密鑰到客戶端的/etc/ceph/ 目錄下面
mount -t ceph 10.4.7.18:6789:/bruce /mnt/bruce -o name=bruce,secret=AQBpi8FhWy2gBxAAKUNrlRnDqMTL7V9ejo+oKg== #明文掛載
mount -t ceph 10.4.7.18:6789:/bruce /mnt/bruce -o name=bruce,secretfile=/etc/bruce.key #這樣歷史記錄里面就沒有密鑰的明文資訊了
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/397539.html
標籤:其他
