前文我們了解了Ceph集群存盤池操作相關話題,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/16743611.html;今天我們來聊一聊在ceph上認證和授權的相關話題;
我們知道ceph作為一個分布式存盤系統,用戶想要在其上面存盤資料,首先得通過認證以后,才能正常使用ceph;那么對于ceph來講,它是怎么認證用戶的呢?除了認證,我們知道不是所有用戶都能在ceph上創建存盤池,洗掉存盤池等;這也意味著每個用戶都有一定的權限,在自己的權限范圍內操作,ceph才算得上是一個安全的存盤系統;那么ceph的認證和授權到底是怎么做的呢?
CephX認證機制

Ceph使用cephx協議對客戶端進行身份認證,其程序大致是這樣的;每個mon都可以對客戶端進行身份驗證并分發密鑰;這意味著認證靠mon節點完成,不會存在單點和性能瓶頸;mon會回傳用于身份驗證的資料結構,其中包含獲取Ceph服務時用到的session key;所謂session key就是客戶端用來向mon請求所需服務的憑證;session key是通過客戶端的密鑰進行加密傳輸;當mon收到客戶端認證請求后,首先生成session key,然后用客戶端的密鑰加密session key,然后發送給客戶端,客戶端用自己的密鑰將其解密,拿到session key;客戶端有了session key以后,它就可以用這個session key向mon請求服務,mon收到客戶端的請求(攜帶session key),此時mon會向客戶端提供一個ticket(入場卷,票據)然后用session key加密后發送給客戶端;隨后客戶端用session key解密,拿著這個憑證到對應osd完成認證;
以上程序,我們需要注意,客戶端的密鑰是通過mon節點在創建用戶帳號時就會生成,所以mon節點有對應客戶端的密鑰,所以通過客戶端的密鑰加密,客戶端可以用自己的密鑰解密;其次mon節點生成的session key 是有記錄的,所以對于不同客戶端來說,都有不同的記錄;并且該session key是有時間限制的;過期即便是對應客戶端,也沒法正常使用;所以客戶端拿著對應session key向mon請求服務,對應mon都是認可的,所以mon會發放ticket;最后我們要知道,MON和OSD都是共享客戶端的密鑰和session key,以及mon發放的ticket,所以客戶端拿著mon發放的ticket,對應osd是認可的;這也意味著不管是那個mon節點發放的ticket,對應所有mon節點和osd都是知道的;簡單講就是集群組件之間共享同一個secret;
CephX身份驗證MDS和OSD

提示:簡要程序是客戶端請求創建用戶,mon創建用戶并回傳與共享密鑰給客戶端;客戶端向mon發起認證,認證成功,mon會回傳一個session key;在規定時效范圍內,客戶端拿著session key向mon請求ticket,mon生成ticket并用對應session加密,客戶端收到對應mon回傳的資料用session key解密,拿到ticket;隨后客戶端拿著對應當ticket去mds或者osd進行資料存取操作,對應組件會被認證通過,因為mon和mds、osd之間都是共享secret;
這里需要注意,CephX身份驗正功能僅限制Ceph的各組件之間,它不能擴展到其它非Ceph組件;其次它并不解決資料傳輸加密的問題;什么意思呢?我們知道ceph的客戶端介面有rbd、cephfs和radosgw;對于ceph來講,它并不關心什么樣的客戶端通過rbd、cephfs、radosgw介面量訪問資料;它只關心rbd、cephfs、radosgw這些客戶端介面程式能夠正常認證通過;簡單講就是資料最后“一公里”它不負責,至于用rbd、cephfs、radosgw這些介面的客戶端是誰,怎么傳輸資料它管不著;
認證與授權相關術語
無論Ceph客戶端是何型別,Ceph都會在存盤池中將所有資料存盤為物件;Ceph用戶需要擁有存盤池訪問權限才能讀取和寫入資料;Ceph用戶必須擁有執行權限才能使用Ceph的管理命令;
用戶:所謂用戶是指個人或系統參與者(例如應用);通過創建用戶,可以控制誰(或哪個參與者)能夠訪問Ceph存盤集群、以及可訪問的存盤池及存盤池中的資料;Ceph支持多種型別的用戶,但可管理的用戶都屬于Client型別;區分用戶型別的原因在于,MON、OSD和MDS等系統組件也使用cephx協議,但它們非人為客戶端;通過點號來分隔用戶型別和用戶名,格式為TYPE.ID,例如client.admin等
授權和使能:Ceph基于“使能(caps)”來描述用戶可針對MON、OSD或MDS使用的權限范圍或級別;通用語法格式:daemon-type 'allow caps' [...];MON使能,包括r、w、x和allow profile cap,例如:mon 'allow rwx',以及mon 'allow profile osd'等;OSD使能包括r、w、x、class-read、class-write和profile osd;此外,OSD 使能還允許進行存盤池和名稱空間設定;MDS使能只需要allow,或留空;
使能的意義
allow:需先于守護行程的訪問設定指定,僅對MDS表示rw之意,其它的表示字面意義;
r:讀取權限,訪問MON以檢索CRUSH時依賴此使能;
w:物件寫入權限;
x:呼叫類方法(讀取和寫入)的能力,以及在MON上執行auth操作的能力;
class-read:x能力的子集,授予用戶呼叫類讀取方法的能力;
class-write:x的子集,授予用戶呼叫類寫入方法的能力;
*:授予用戶對特定守護行程/存盤池的讀取、寫入和執行權限,以及執行管理命令的能力;
profile osd:授予用戶以某個OSD身份連接到其他OSD或監視器的權限,授予OSD權限,使OSD能夠處理復制檢測信號流量和狀態報告;
profile mds: 授予用戶以某個MDS身份連接到其他MDS或監視器的權限;
profile bootstrap-osd: 授予用戶引導OSD的權限,授權給部署工具,使其在引導OSD時有權添加密鑰;
profile bootstrap-mds:授予用戶引導元資料服務器的權限,授權給部署工具,使其在引導元資料服務器時有權添加密鑰;
Ceph用戶管理
Ceph集群管理員能夠直接在Ceph集群中創建、更新和洗掉用戶;創建用戶時,可能需要將密鑰分發到客戶端,以便將密鑰添加到密鑰環;所謂密鑰環,我們就可以理解為存放密鑰的一個檔案,該檔案可以同時存放一個或多個用戶的密鑰資訊;有點類似我們生活中的鑰匙環,我們可以在上面掛一個或多個鑰匙;
列出用戶命令:ceph auth list
[root@ceph-admin ~]# ceph auth list
installed auth entries:
mds.ceph-mon02
key: AQDT1y9jaMUZDRAA79b3XSXqBbXUlNsT0RLeiw==
caps: [mds] allow
caps: [mon] allow profile mds
caps: [osd] allow rwx
osd.0
key: AQD3+i1j5IJQCxAAOjQdvckg8TskXu7c4MbPAA==
caps: [mgr] allow profile osd
caps: [mon] allow profile osd
caps: [osd] allow *
osd.1
key: AQAo7C1j+dEDEBAAAA47bD+nZQZuV4kJjnqACA==
caps: [mgr] allow profile osd
caps: [mon] allow profile osd
caps: [osd] allow *
osd.2
key: AQA77C1j5ot+DhAAJ+Y1KwgI2zsxRHmTUkfing==
caps: [mgr] allow profile osd
caps: [mon] allow profile osd
caps: [osd] allow *
osd.3
key: AQBM7C1jdIuHEhAAYBA9gzC4J+kZUxkMzhjq4g==
caps: [mgr] allow profile osd
caps: [mon] allow profile osd
caps: [osd] allow *
osd.4
key: AQBq7C1jZrNZKhAAK+TvnPgK0jAWIwz0PYFT/g==
caps: [mgr] allow profile osd
caps: [mon] allow profile osd
caps: [osd] allow *
osd.5
key: AQB57C1jVcczERAAxJ3iqvKS/2kfE4HlFQHIWQ==
caps: [mgr] allow profile osd
caps: [mon] allow profile osd
caps: [osd] allow *
osd.6
key: AQCP7C1jB80KGhAA9iXzAg+9ANWjgPb2ZdWdhw==
caps: [mgr] allow profile osd
caps: [mon] allow profile osd
caps: [osd] allow *
osd.7
key: AQCe7C1jbx4rNxAANOB3PPLxRXi/st1UYiTWqQ==
caps: [mgr] allow profile osd
caps: [mon] allow profile osd
caps: [osd] allow *
osd.8
key: AQCz7C1jUGzQIhAAj6aTVM6rNsTO3Lp08rePzg==
caps: [mgr] allow profile osd
caps: [mon] allow profile osd
caps: [osd] allow *
osd.9
key: AQDA7C1jwXTrEBAATszxwOKepUHzZ5WKwIMu7w==
caps: [mgr] allow profile osd
caps: [mon] allow profile osd
caps: [osd] allow *
client.admin
key: AQB94C1jTO8jJhAAY4Zhy40wduyIONnRqxtkEA==
caps: [mds] allow *
caps: [mgr] allow *
caps: [mon] allow *
caps: [osd] allow *
client.bootstrap-mds
key: AQB94C1jRPwjJhAAZsfgne6whasyCmSCgefocw==
caps: [mon] allow profile bootstrap-mds
client.bootstrap-mgr
key: AQB94C1jvQQkJhAA9y2LmEvBTG0Mjew8k0ecdw==
caps: [mon] allow profile bootstrap-mgr
client.bootstrap-osd
key: AQB94C1jDg4kJhAAhQPCebi6JfF9HZo4q39WGA==
caps: [mon] allow profile bootstrap-osd
client.bootstrap-rbd
key: AQB94C1jkxYkJhAAEUjId8hdDCA67PX+SQXAYw==
caps: [mon] allow profile bootstrap-rbd
client.bootstrap-rgw
key: AQB94C1jPx4kJhAAXIwArGEkQ76tQG1NnJ0Wmw==
caps: [mon] allow profile bootstrap-rgw
client.rgw.ceph-mon01
key: AQD0zS9jI7e4BRAA7fvC/02D6j2YoGHZwveQCQ==
caps: [mon] allow rw
caps: [osd] allow rwx
mgr.ceph-mgr01
key: AQDi5S1jgpYLHRAAWHJeiwwD86AVg0YzUOPCmQ==
caps: [mds] allow *
caps: [mon] allow profile mgr
caps: [osd] allow *
mgr.ceph-mgr02
key: AQDk5S1jY6tkBhAAXPIK4N+bia3W6IoqlJRehw==
caps: [mds] allow *
caps: [mon] allow profile mgr
caps: [osd] allow *
mgr.ceph-mon01
key: AQDD9C1ja0vhOBAAnUkp5RcLBkZl8qfb4qXXLw==
caps: [mds] allow *
caps: [mon] allow profile mgr
caps: [osd] allow *
[root@ceph-admin ~]#
提示:該命令是列出集群上所有用戶資訊,即非人為用戶和普通用戶;也可以是ceph auth ls命令來列出所有用戶資訊;
檢索特定用戶命令格式:ceph auth get TYPE.ID或者ceph auth export TYPE.ID
[root@ceph-admin ~]# ceph auth get client.admin
exported keyring for client.admin
[client.admin]
key = AQB94C1jTO8jJhAAY4Zhy40wduyIONnRqxtkEA==
caps mds = "allow *"
caps mgr = "allow *"
caps mon = "allow *"
caps osd = "allow *"
[root@ceph-admin ~]# ceph auth export client.admin
export auth(auid = 18446744073709551615 key=AQB94C1jTO8jJhAAY4Zhy40wduyIONnRqxtkEA== with 4 caps)
[client.admin]
key = AQB94C1jTO8jJhAAY4Zhy40wduyIONnRqxtkEA==
caps mds = "allow *"
caps mgr = "allow *"
caps mon = "allow *"
caps osd = "allow *"
[root@ceph-admin ~]#
提示:如果我們需要將上述資訊匯出到檔案,可以使用-o來指定檔案,或者輸出重定向到方式;
[root@ceph-admin ~]# ceph auth get client.admin -o client.admin.keyring
exported keyring for client.admin
[root@ceph-admin ~]# ls
ceph-deploy-ceph.log client.admin.keyring
[root@ceph-admin ~]# cat client.admin.keyring
[client.admin]
key = AQB94C1jTO8jJhAAY4Zhy40wduyIONnRqxtkEA==
caps mds = "allow *"
caps mgr = "allow *"
caps mon = "allow *"
caps osd = "allow *"
[root@ceph-admin ~]# ceph auth export client.admin > client.admin.cluster.keyring
export auth(auid = 18446744073709551615 key=AQB94C1jTO8jJhAAY4Zhy40wduyIONnRqxtkEA== with 4 caps)
[root@ceph-admin ~]# ls
ceph-deploy-ceph.log client.admin.cluster.keyring client.admin.keyring
[root@ceph-admin ~]# cat client.admin.cluster.keyring
[client.admin]
key = AQB94C1jTO8jJhAAY4Zhy40wduyIONnRqxtkEA==
caps mds = "allow *"
caps mgr = "allow *"
caps mon = "allow *"
caps osd = "allow *"
[root@ceph-admin ~]#
添加用戶命令格式:auth add <entity> {<caps> [<caps>...]}
[root@ceph-admin ~]# ceph auth add client.testuser mon 'allow r' osd 'allow rw'
added key for client.testuser
[root@ceph-admin ~]# ceph auth get client.testuser
exported keyring for client.testuser
[client.testuser]
key = AQAoaThjCJLsBhAA8gwl/UQkjjSF+DwB6oB/wg==
caps mon = "allow r"
caps osd = "allow rw"
[root@ceph-admin ~]#
提示:ceph add 是添加用戶的規范方法,它能夠創建用戶、生成密鑰并添加指定的caps;這里需要注意我指定的用戶是有type.id組成,一般普通用戶都是client型別,后面的ID就是用戶名稱;
ceph auth get-or-create:簡便方法,創建用戶并回傳密鑰檔案格式的密鑰資訊,或者在用戶存在時回傳用戶名及密鑰檔案格式的密鑰資訊;
[root@ceph-admin ~]# ceph auth get-or-create client.testuser mon 'allow *' osd 'allow rw pool=rbdpool'
Error EINVAL: key for client.testuser exists but cap mon does not match
[root@ceph-admin ~]# ceph auth get-or-create client.testuser mon 'allow r' osd 'allow rw' [client.testuser]
key = AQAoaThjCJLsBhAA8gwl/UQkjjSF+DwB6oB/wg==
[root@ceph-admin ~]# ceph auth get-or-create client.tom mon 'allow *' osd 'allow rw pool=rbdpool'
[client.tom]
key = AQBcajhj8INfChAAKKFCESxmbHFJqAwiRE4ufg==
[root@ceph-admin ~]# ceph auth get client.tom
exported keyring for client.tom
[client.tom]
key = AQBcajhj8INfChAAKKFCESxmbHFJqAwiRE4ufg==
caps mon = "allow *"
caps osd = "allow rw pool=rbdpool"
[root@ceph-admin ~]#
提示:使用ceph auth get-or-create命令添加用戶,如果用戶存在,但授權不匹配,它會提示我們用戶存在,但是權限不匹配;如果用戶存在,權限資訊也都匹配,則回傳對應用戶的key;如果用戶不存在,則創建對應用并回傳用戶的key;
ceph auth get-or-create-key:簡便方法,創建用戶并回傳密鑰資訊,或者在用戶存在時回傳密鑰資訊;
[root@ceph-admin ~]# ceph auth get-or-create-key client.testuser mon 'allow r' osd 'allow *'
Error EINVAL: key for client.testuser exists but cap osd does not match
[root@ceph-admin ~]# ceph auth get-or-create-key client.testuser mon 'allow r' osd 'allow rw'
AQAoaThjCJLsBhAA8gwl/UQkjjSF+DwB6oB/wg==
[root@ceph-admin ~]# ceph auth get-or-create-key client.jerry mon 'allow r' osd 'allow rw'
AQDDazhjLbMTIhAADsXyBkPS079vU7dqGs2E+A==
[root@ceph-admin ~]# ceph auth get client.jerry
exported keyring for client.jerry
[client.jerry]
key = AQDDazhjLbMTIhAADsXyBkPS079vU7dqGs2E+A==
caps mon = "allow r"
caps osd = "allow rw"
[root@ceph-admin ~]#
提示:該命令和上面的get-or-create類似,都是用戶存在,如果權限匹配則回傳對應用戶的key,如果不匹配則告訴我們用戶存在,但權限不匹配;如果不存在則創建,并回傳對應用戶的key;不同的是回傳key的格式不同;get-or-create是回傳keyring檔案中的格式;而get-or-create-key則回傳key的值,沒有key = ;
注意:典型的用戶至少對 Ceph monitor 具有讀取功能,并對 Ceph OSD 具有讀取和寫入功能;另外,用戶的 OSD 權限通常應該限制為只能訪問特定的存盤池,否則,他將具有訪問集群中所有存盤池的權限;
列出用戶的密鑰格式 命令:ceph auth print-key TYPE.ID
[root@ceph-admin ~]# ceph auth print-key client.jerry AQDDazhjLbMTIhAADsXyBkPS079vU7dqGs2E+A==[root@ceph-admin ~]#
匯入用戶命令:ceph auth import
[root@ceph-admin ~]# ll
total 16
-rw-r--r-- 1 root root 1568 Sep 25 11:40 ceph-deploy-ceph.log
-rw-r--r-- 1 root root 151 Oct 2 00:14 client.admin.cluster.keyring
-rw-r--r-- 1 root root 151 Oct 2 00:14 client.admin.keyring
-rw-r--r-- 1 root root 164 Oct 2 00:43 client.test.keyring
[root@ceph-admin ~]# cat client.test.keyring
[client.test]
key = AQB94C1jTO8jJhAAY4Zhy40wduyIONnRqxtkEA==
caps mds = "allow *"
caps mgr = "allow *"
caps mon = "allow r"
caps osd = "allow rw pool=rbdpool"
[root@ceph-admin ~]# ceph auth get client.test
Error ENOENT: failed to find client.test in keyring
[root@ceph-admin ~]# ceph auth import -i client.test.keyring
imported keyring
[root@ceph-admin ~]# ceph auth get client.test
exported keyring for client.test
[client.test]
key = AQB94C1jTO8jJhAAY4Zhy40wduyIONnRqxtkEA==
caps mds = "allow *"
caps mgr = "allow *"
caps mon = "allow r"
caps osd = "allow rw pool=rbdpool"
[root@ceph-admin ~]#
提示:從keyring檔案匯入用戶需要用到-i選項來指定對應匯入的keyring檔案;
修改用戶caps命令:ceph auth caps TYPE.ID daemon 'allow [r|w|x|*|...] [pool=pool-name] [namespace=namespace-name]' ...
[root@ceph-admin ~]# ceph auth get client.test
exported keyring for client.test
[client.test]
key = AQB94C1jTO8jJhAAY4Zhy40wduyIONnRqxtkEA==
caps mds = "allow *"
caps mgr = "allow *"
caps mon = "allow r"
caps osd = "allow rw pool=rbdpool"
[root@ceph-admin ~]# ceph auth caps client.test mds 'allow rw' mgr 'allow r' mon 'allow rw'
updated caps for client.test
[root@ceph-admin ~]# ceph auth get client.test
exported keyring for client.test
[client.test]
key = AQB94C1jTO8jJhAAY4Zhy40wduyIONnRqxtkEA==
caps mds = "allow rw"
caps mgr = "allow r"
caps mon = "allow rw"
[root@ceph-admin ~]# ceph auth caps client.test mds 'allow rw' mgr 'allow r' mon 'allow rw' osd 'allow rw pool=rbdpool'
updated caps for client.test
[root@ceph-admin ~]# ceph auth get client.test
exported keyring for client.test
[client.test]
key = AQB94C1jTO8jJhAAY4Zhy40wduyIONnRqxtkEA==
caps mds = "allow rw"
caps mgr = "allow r"
caps mon = "allow rw"
caps osd = "allow rw pool=rbdpool"
[root@ceph-admin ~]#
提示:該命令會覆寫用戶現有權限因此建立事先使用ceph auth get TYPE.ID命令查看用戶的caps;若是為添加caps,則需要先指定現有的caps;若為洗掉某些權限,則對應權限不指定即可;
洗掉用戶命令:ceph auth del TYPE.ID
[root@ceph-admin ~]# ceph auth del client.test updated [root@ceph-admin ~]# ceph auth del client.tom updated [root@ceph-admin ~]# ceph auth del client.jerry updated [root@ceph-admin ~]# ceph auth del client.testuser updated [root@ceph-admin ~]# ceph auth get client.testuser Error ENOENT: failed to find client.testuser in keyring [root@ceph-admin ~]#
Keyring
客戶端訪問Ceph集群時,客戶端會于本地查找密鑰環, 默認情況下,Ceph會使用以下四個密鑰環名稱預設密鑰環;
? /etc/ceph/cluster-name.user-name.keyring:保存單個用戶的keyring
? /etc/ceph/cluster.keyring:保存多個用戶的keyring
? /etc/ceph/keyring
? /etc/ceph/keyring.bin
cluster-name是為集群名稱,user-name是為用戶標識(TYPE.ID), client.admin用戶的在名為ceph的集群上的密鑰環檔案名為ceph.client.admin.keyring;
管理keyring
創建keyring命令:ceph-authtool --create-keyring /path/to/kerying
[root@ceph-admin ~]# ceph-authtool --create-keyring ./client.abc.keyring creating ./client.abc.keyring [root@ceph-admin ~]# cat ./client.abc.keyring [root@ceph-admin ~]#
提示:創建keyring檔案,里面沒有任何內容,我們需要用ceph auth add 添加用戶,然后通過ceph auth get或export命令將對應用戶資訊匯入到對應keyring檔案即可;這里說一下keyring檔案的命名規則,keyring檔案一般應該保存于/etc/ceph目錄中,以便客戶端能自動查找;創建包含多個用戶的keyring檔案時,應該使用cluster-name.keyring作為檔案名;創建僅包含單個用戶的kerying檔案時,應該使用cluster-name.user-name.keyring作為檔案名;這個是規范的keyring命名方式;
將用戶的keyring合并至一個統一的keyring檔案中命令:ceph-authtool /etc/ceph/cluster-name.keyring --import-key /etc/ceph/cluster-name.user-name.keyring
[root@ceph-admin ~]# ll
total 16
-rw-r--r-- 1 root root 1568 Sep 25 11:40 ceph-deploy-ceph.log
-rw------- 1 root root 0 Oct 2 00:57 client.abc.keyring
-rw-r--r-- 1 root root 151 Oct 2 00:14 client.admin.cluster.keyring
-rw-r--r-- 1 root root 151 Oct 2 00:14 client.admin.keyring
-rw-r--r-- 1 root root 164 Oct 2 00:43 client.test.keyring
[root@ceph-admin ~]# cat client.test.keyring
[client.test]
key = AQB94C1jTO8jJhAAY4Zhy40wduyIONnRqxtkEA==
caps mds = "allow *"
caps mgr = "allow *"
caps mon = "allow r"
caps osd = "allow rw pool=rbdpool"
[root@ceph-admin ~]# ceph-authtool ./client.test.keyring --import-keyring ./client.admin.keyring
importing contents of ./client.admin.keyring into ./client.test.keyring
[root@ceph-admin ~]# cat client.test.keyring
[client.admin]
key = AQB94C1jTO8jJhAAY4Zhy40wduyIONnRqxtkEA==
caps mds = "allow *"
caps mgr = "allow *"
caps mon = "allow *"
caps osd = "allow *"
[client.test]
key = AQB94C1jTO8jJhAAY4Zhy40wduyIONnRqxtkEA==
caps mds = "allow *"
caps mgr = "allow *"
caps mon = "allow r"
caps osd = "allow rw pool=rbdpool"
[root@ceph-admin ~]#
使用ceph-authtool命令管理用戶
ceph-authtool命令可直接創建用戶、授予caps并創建keyring
命令使用幫助
[root@ceph-admin ~]# ceph-authtool -h
usage: ceph-authtool keyringfile [OPTIONS]...
where the options are:
-l, --list will list all keys and capabilities present in
the keyring
-p, --print-key will print an encoded key for the specified
entityname. This is suitable for the
'mount -o secret=..' argument
-C, --create-keyring will create a new keyring, overwriting any
existing keyringfile
-g, --gen-key will generate a new secret key for the
specified entityname
--gen-print-key will generate a new secret key without set it
to the keyringfile, prints the secret to stdout
--import-keyring FILE will import the content of a given keyring
into the keyringfile
-n NAME, --name NAME specify entityname to operate on
-u AUID, --set-uid AUID sets the auid (authenticated user id) for the
specified entityname
-a BASE64, --add-key BASE64 will add an encoded key to the keyring
--cap SUBSYSTEM CAPABILITY will set the capability for given subsystem
--caps CAPSFILE will set all of capabilities associated with a
given key, for all subsystems
--mode MODE will set the desired file mode to the keyring
e.g: '0644', defaults to '0600'
[root@ceph-admin ~]#
提示:-l或--list表示列出所有用戶資訊;-p表示列印對應用戶的key資訊,-C表示keyring檔案,-g表示給指定用戶生成key;-n用于指定用戶名稱;--cap 用于指定權限資訊;--mode用于指定keyring檔案的權限資訊,默認是0600,即只有root或對應宿主擁有讀寫權限;
[root@ceph-admin ~]# ceph-authtool -C client.usera.keyring -n client.usera --gen-key --cap mon 'allow r' --cap osd 'allow rw pool=rbdpool'
creating client.usera.keyring
[root@ceph-admin ~]# ll
total 20
-rw-r--r-- 1 root root 1568 Sep 25 11:40 ceph-deploy-ceph.log
-rw------- 1 root root 0 Oct 2 00:57 client.abc.keyring
-rw-r--r-- 1 root root 151 Oct 2 00:14 client.admin.cluster.keyring
-rw-r--r-- 1 root root 151 Oct 2 00:14 client.admin.keyring
-rw-r--r-- 1 root root 315 Oct 2 01:03 client.test.keyring
-rw------- 1 root root 121 Oct 2 01:25 client.usera.keyring
[root@ceph-admin ~]# ceph auth get client.usera
Error ENOENT: failed to find client.usera in keyring
[root@ceph-admin ~]# cat client.usera.keyring
[client.usera]
key = AQAIeDhjTnmLGhAAWgL3GqtJsPwmOD6CPbJO8Q==
caps mon = "allow r"
caps osd = "allow rw pool=rbdpool"
[root@ceph-admin ~]#
提示:使用這種方式添加用戶,對應資訊之存在于keyring檔案中,并沒有存在ceph集群,我們還需要將對應keyring檔案中的用戶資訊匯入到集群上;
[root@ceph-admin ~]# ceph auth add client.usera -i client.usera.keyring
added key for client.usera
[root@ceph-admin ~]# ceph auth get client.usera
exported keyring for client.usera
[client.usera]
key = AQAIeDhjTnmLGhAAWgL3GqtJsPwmOD6CPbJO8Q==
caps mon = "allow r"
caps osd = "allow rw pool=rbdpool"
[root@ceph-admin ~]#
提示:上述命令等同ceph auth import;
作者:Linux-1874 出處:https://www.cnblogs.com/qiuhom-1874/ 本文著作權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利.轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/510991.html
標籤:其他
上一篇:CentOS7環境原始碼安裝freeswitch1.10.7
下一篇:某道毒瘤題的做題記錄
