三、Ceph的認證


Ceph作為一個分布式存儲系統,支持對象存儲、塊設備和文件系統。為了在網絡傳輸中防止數據被篡改,做到較高程度的安全性,加入了Cephx加密認證協議。其目的是識別身份,加密、驗證傳輸中的數據。

cephx 用於對ceph 保存的數據進行認證訪問和授權,用於對訪問ceph 的請求進行認證和授權檢測,與mon 通信的請求都要經過ceph 認證通過,但是也可以在mon 節點關閉cephx認證,但是關閉認證之后任何訪問都將被允許,因此無法保證數據的安全性。

Client與OSD必須先連接到mon上完成認證,Client才能讀寫數據。

下面為ceph.conf中的cephx的配置:

$vim /etc/ceph/ceph.conf
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

  

1、Ceph的授權流程

(1)每個mon 節點都可以對客戶端進行身份認證並分發秘鑰,因此多個mon 節點就不存在單點故障和認證性能瓶頸。

(2)mon 節點會返回用於身份認證的數據結構,其中包含獲取ceph 服務時用到的session key,session key 通過客戶端秘鑰進行加密,秘鑰是在客戶端提前配置好的,/etc/ceph/ceph.client.admin.keyring。

(3)客戶端使用session key 向mon 請求所需要的服務,mon 向客戶端提供一個tiket,用於向實際處理數據的OSD 等服務驗證客戶端身份,MON 和OSD 共享同一個secret,因此OSD會信任所有MON 發放的tiket。

(4)tiket 存在有效期。

注意:
CephX 身份驗證功能僅限制在Ceph 的各組件之間,不能擴展到其他非ceph 組件
Ceph 只負責認證授權,不能解決數據傳輸的加密問題

要訪問 Ceph 集群,客戶端首先訪問 Ceph monitor,並只把它的用戶名發送給 monitor。Cephx 協議的工作方式是,客戶端和 monitor 雙方都有一份密鑰的副本,因此能在不暴露密鑰的情況下互相證明自己的身份。這就是為什么客戶端只需要發送它的用戶名而不是密鑰給 monitor。

Ceph monitor 隨即為該用戶產生一個會話密鑰(sessionkey),並且使用該用戶的密鑰對它進行加密。然后, monitor 將加密后的會話密鑰發回給客戶端。然后客戶端使用它自己的密鑰對加密過的會話密鑰進行解密來獲取原始的會話密鑰。該會話密鑰會在當前會話中一直保持有效。 使用這個會話密鑰,客戶端向 Ceph monitor 申請一個 ticket(票券)。Cephmonitor 首先校驗會話密鑰,然后產生一個 ticket,使用該用戶的密鑰對它加密,然后將它傳回給客戶端。然后客戶端將它解密以獲得 ticket,並使用它對將要發給 OSD 和元數據服務器的請求做簽名。

Cephx 協議會對客戶端和 Ceph 集群節點之間的通信進行身份驗證。在最初的身份驗證之后,客戶端和 Ceph 節點之間傳遞的所有消息都會被這個 ticket 簽名,然后這些消息會被 monitor、OSD 和元數據節點使用共享的密鑰做驗證。而且,Cephx ticket 是會過期的,因此一個攻擊者無法使用一個過期的 ticket 或者會話密鑰來獲取 Ceph 集群的訪問權限。下圖顯示了完整的用戶身份驗證過程。

 

2、Ceph的訪問流程

無論ceph 客戶端是哪種類型,例如塊設備、對象存儲、文件系統,ceph 都會在存儲池中將所有數據存儲為對象。

ceph 用戶需要擁有存儲池pool訪問權限,才能讀取和寫入數據。

ceph 用戶必須擁有執行權限才能使用ceph 的管理命令。

(1)Client向mon申請一個有權限可以訪問osd的用戶,client和mon共享該用戶權限信息。

(2)同時該用戶也會給mon、mds和osd共享。

(3)Client拿到了授權用戶開始向mon認證。

(4)mon通過認證后,會生成一個隨機並加密的session key發送給Client.

(5)Client收到mon發送過來的session key並解密后,再向mon發起ticket申請請求。

(6)mon將ticket信息發送給client。

(7)Client接受到mon發來的ticke后,下面開始請求數據。

(8)如果Client訪問的是cephfs,client會向mds發送請求;如果Client訪問是塊存儲等設備,則直接向osd發送請求。

3、Ceph的用戶

用戶是指個人(ceph 管理者)或系統參與者(MON/OSD/MDS)。 通過創建用戶,可以控制用戶或哪個參與者能夠訪問ceph 存儲集群、以及可訪問的存儲池及存儲池中的數據。 ceph 支持多種類型的用戶,但可管理的用戶都屬於client 類型區分用戶類型的原因在於,MON/OSD/MDS 等系統組件特使用cephx 協議,但是它們為非客戶端。

通過點號來分割用戶類型和用戶名,格式為TYPE.ID,例如client.admin。client.admin:用戶命名遵循 <TYPE.ID> 的命名規則,也就是<用戶類型.用戶名>。其中 Type 有 mon、osd、mgr 為守護進程,client為客戶端用戶。

ceph@ceph-deploy:~$ cat /etc/ceph/ceph.client.admin.keyring 
[client.admin]
	key = AQAKyxthqvTaORAA/aUa9o2vAcfalDI+nWaoqg==   #admin用戶的加密密鑰
	#下面為admin用戶對ceph集群各個組件的管理權限
	caps mds = "allow *"
	caps mgr = "allow *"
	caps mon = "allow *"
	caps osd = "allow *"

  查看指定用戶信息:

ceph@ceph-deploy:~$ ceph osd tree
ID  CLASS  WEIGHT   TYPE NAME             STATUS  REWEIGHT  PRI-AFF
-1         0.29228  root default                                   
-3         0.07794      host ceph-node01                           
16    hdd  0.01949          osd.16            up   1.00000  1.00000
17    hdd  0.01949          osd.17            up   1.00000  1.00000
18    hdd  0.01949          osd.18            up   1.00000  1.00000
19    hdd  0.01949          osd.19            up   1.00000  1.00000
-5         0.05846      host ceph-node02                           
 4    hdd  0.01949          osd.4             up   1.00000  1.00000
 5    hdd  0.01949          osd.5             up   1.00000  1.00000
 6    hdd  0.01949          osd.6             up   1.00000  1.00000
-7         0.07794      host ceph-node03                           
 8    hdd  0.01949          osd.8             up   1.00000  1.00000
 9    hdd  0.01949          osd.9             up   1.00000  1.00000
10    hdd  0.01949          osd.10            up   1.00000  1.00000
11    hdd  0.01949          osd.11            up   1.00000  1.00000
-9         0.07794      host ceph-node04                           
12    hdd  0.01949          osd.12            up   1.00000  1.00000
13    hdd  0.01949          osd.13            up   1.00000  1.00000
14    hdd  0.01949          osd.14            up   1.00000  1.00000
15    hdd  0.01949          osd.15            up   1.00000  1.00000




ceph@ceph-deploy:~$ ceph auth get osd.10
[osd.10]
	key = AQCn3xth8E1QKhAAiNtNqTYia0PKroZrPTKkBw==
	caps mgr = "allow profile osd"
	caps mon = "allow profile osd"
	caps osd = "allow *"
exported keyring for osd.10

#osd.10  用戶類型為osd,id號為10

ceph@ceph-deploy:~$ ceph auth get client.admin
[client.admin]
	key = AQAKyxthqvTaORAA/aUa9o2vAcfalDI+nWaoqg==
	caps mds = "allow *"
	caps mgr = "allow *"
	caps mon = "allow *"
	caps osd = "allow *"
exported keyring for client.admin

  

4、Ceph授權及使能

用戶的授權,只有在授權之后,用戶才可以使用權限范圍內的 MON、OSD、MDS 的功能。

ceph 基於使能/能力(Capabilities,簡稱caps )來描述用戶可針對MON/OSD 或MDS 使用的授權范圍或級別。

通用的語法格式:daemon-type ‘allow caps’ [...]

能力一覽表:

授權階段分2種:訪問授權和能力授權
訪問授權:
allow:在守護進程進行訪問設置之前就已經具有特定權限,僅對 MDS 隱含 rw
r:向用戶授予讀取權限。訪問監視器(mon)以檢索CRUSH 運行圖時需具有此能力。
w:向用戶授予針對對象的寫入權限。
x:授予用戶調用類方法(包括讀取和寫入)的能力,以及在監視器中執行auth 操作的能力。
*,all:授予用戶對特定守護進程/存儲池的讀取、寫入和執行權限,以及執行管理命令的能力
class-read:授予用戶調用類讀取方法的能力, x 的子集
class-write:授予用戶調用類寫入方法的能力, x 的子集

能力授權:
profile osd :授予用戶以某個OSD 身份連接到其他OSD 或監視器的權限。授予OSD 權限,使OSD 能夠處理復制檢測信號流量和狀態報告(獲取OSD 的狀態信息)。
profile mds :授予用戶以某個MDS 身份連接到其他MDS 或監視器的權限。
profile bootstrap-osd:授予用戶引導OSD 的權限(初始化OSD 並將OSD 加入ceph 集群),授權給部署工具,使其在引導OSD 時有權添加密鑰。通常授予部署工具ceph-deploy,讓它們在引導 OSD 時就有增加密鑰的權限了.
profile bootstrap-mds:授予用戶引導元數據服務器的權限,授權部署工具權限,使其在引導元數據服務器時有權添加密鑰。
profile bootstrap-rbd:授權用戶引導 RBD 守護進程的能力,同上
profile bootstrap-rbd-mirror:授權用戶引導 rbd-mirror守護進程的能力,同上
profile rbd:授權一個用戶可以操作rbd image的權限
profile rbd-mirror:授權一個用戶可以操作rbd image的權限和獲得osd Mirroring配置秘鑰
profile rbd-read-only:授權一個用戶只讀rbd image的權限

  MON 能力:

包括r/w/x 和allow profile cap(ceph 的運行圖)
例如:
mon 'allow rwx'
mon 'allow profile osd'

  OSD 能力:

包括r、w、x、class-read、class-write(類讀取))和profile osd(類寫入),另外OSD 能力還允
許進行存儲池和名稱空間設置。
osd 'allow capability' [pool=poolname] [namespace=namespace-name]

  MDS 能力:

只需要allow 或空都表示允許。
mds 'allow'

  

5、Ceph用戶管理

用戶管理功能可讓Ceph 集群管理員能夠直接在Ceph 集群中創建、更新和刪除用戶。 在Ceph 集群中創建或刪除用戶時,可能需要將密鑰分發到客戶端,以便將密鑰添加到密鑰環中/etc/ceph/ceph.client.admin.keyring,此文件中可以包含一個或者多個用戶認證信息,凡是擁有此文件的節點,將具備訪問ceph 的權限,而且可以使用其中任何一個賬戶的權限,此文件類似於linux 系統的中的/etc/passwd 文件。

1創建用戶的流程

要使用 Cephx,集群的管理員(administrator),也就是 client.admin,需要在集群中創建一個用戶賬號(user account)。要創建用戶賬號,client.admin 需要調用 ceph auth get-or-create 命令。Ceph 用戶驗證子系統會產生一 個用戶名(username)和一個密鑰(secret key),並將它們保存在Ceph monitor 上,再將用戶密鑰返回給client.admin。Ceph 系統管理員需要將用戶名和密碼提供給需要安全地訪問 Ceph 存儲服務的客戶端。

 

2列出用戶

ceph@ceph-deploy:~$ ceph auth list
osd.10
	key: AQCn3xth8E1QKhAAiNtNqTYia0PKroZrPTKkBw==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.11
	key: AQC73xthe8HdLhAAPn3Odus1lnVgS33FTKMsOw==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.12
	key: AQDY3xthEimIJhAAZBtxRVnGk7lQ4ePrQX/IFg==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.13
	key: AQDu3xthFw/BAxAA188g6znSfBhVp0KS2rfuDw==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.14
	key: AQBW4BthbLItCRAAZToVdPYXX3OioYSk7drN2A==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.15
	key: AQBJ4Rth1J7yEhAAEBjhszfv+/l8Sn8oC5CIwQ==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.16
	key: AQDUohxhNOYfFhAAvia7vpPfuAHTJkH+Y//a6g==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.17
	key: AQD2ohxheYwbNBAAUJeYKzBkG3DdEytc3oJ04g==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.18
	key: AQAioxxhX99KKxAApi1oYobuhiNob/Sya1dHZw==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.19
	key: AQBLoxxhNQU1GxAAr9hDPMy/szq/4fEvkcLucQ==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.4
	key: AQAe3xthhdCRJRAAB/pYzWMaoBImp79bS0FDWg==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.5
	key: AQA03xthXTvYJRAAqkRD4AAo7mlYD7C+u5AmpQ==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.6
	key: AQBJ3xthAu98ABAAYjUZPZLY9dc0G+2tyzPHSA==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.8
	key: AQB+3xthHQYTABAAVGRxMD3LtfSuCkuasVrLAQ==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
osd.9
	key: AQCS3xthK5WJOBAAXQomcwWHG7wgQe/AZrtcLw==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
client.admin
	key: AQAKyxthqvTaORAA/aUa9o2vAcfalDI+nWaoqg==
	caps: [mds] allow *
	caps: [mgr] allow *
	caps: [mon] allow *
	caps: [osd] allow *
client.bootstrap-mds
	key: AQAKyxthbBHbORAARZ9YWc91MsEpI47n4bBiaQ==
	caps: [mon] allow profile bootstrap-mds
client.bootstrap-mgr
	key: AQAKyxthhCbbORAAAU6l1aSb76vYWU/U8Ow++w==
	caps: [mon] allow profile bootstrap-mgr
client.bootstrap-osd
	key: AQAKyxthJzrbORAAeoL4+iqegTQqAAhg51yEYg==
	caps: [mon] allow profile bootstrap-osd
client.bootstrap-rbd
	key: AQAKyxth+EzbORAABONpnXhO6FmRXZmrQTRqaw==
	caps: [mon] allow profile bootstrap-rbd
client.bootstrap-rbd-mirror
	key: AQAKyxthNF/bORAAuO3Tx8uZOEOelSW1V2U2sQ==
	caps: [mon] allow profile bootstrap-rbd-mirror
client.bootstrap-rgw
	key: AQAKyxthNHDbORAARVjOD8xlmwg8pRnG/gdr0g==
	caps: [mon] allow profile bootstrap-rgw
mgr.ceph-mgr01
	key: AQB50Bthh1XKDxAAigNmg5O8ROcafDZysfJCgg==
	caps: [mds] allow *
	caps: [mon] allow profile mgr
	caps: [osd] allow *
mgr.ceph-mgr02
	key: AQCuqxxhtqofCRAAJ4HdN+6Bmv2k8zF8REcIjQ==
	caps: [mds] allow *
	caps: [mon] allow profile mgr
	caps: [osd] allow *
installed auth entries:

注意:TYPE.ID 表示法 針對用戶采用TYPE.ID 表示法,例如osd.0 指定是osd 類並且ID 為0 的用戶(節點),client.admin是client 類型的用戶,其ID 為admin。

注意,每個項包含一個key=xxxx 項,以及一個或多個caps 項。 可以結合使用-o 文件名選項和ceph auth list 將輸出保存到某個文件。

ceph@ceph-deploy:~$ ceph auth list -o /tmp/ceph_user.key

  

3用戶管理命令

添加一個用戶會創建用戶名(TYPE.ID)、機密密鑰,以及包含在命令中用於創建該用戶的所有能力,用戶可使用其密鑰向Ceph 存儲集群進行身份驗證。用戶的能力授予該用戶在Ceph monitor (mon)、Ceph OSD (osd) 或Ceph 元數據服務器(mds) 上進行讀取、寫入或執行的能力,可以使用以下幾個命令來添加用戶。

3.1創建用戶及獲取用戶信息

3.1.1 ceph auth add

此命令是添加用戶的規范方法。它會創建用戶、生成密鑰,並添加所有指定的能力。

ceph@ceph-deploy:~$ ceph auth add -h
auth add <entity> {<caps> [<caps>...]}

ceph@ceph-deploy:~$ ceph osd pool ls
device_health_metrics
myrbd1
#給pool=myrbd1創建一個client的ywx用戶,對mon有r權限,對myrbd1地址池有rwx權限
ceph@ceph-deploy:~$ ceph auth add client.ywx mon 'allow r' osd 'allow rwx pool=myrbd1'
added key for client.ywx
ceph@ceph-deploy:~$ ceph auth get client.ywx
[client.ywx]
	key = AQAjNCJhFgTkCBAA+Xzg30Mu0F1k7eqGOvEaMw==
	caps mon = "allow r"
	caps osd = "allow rwx pool=myrbd1"
exported keyring for client.ywx
3.1.2 ceph auth get-or-create

ceph auth get-or-create 此命令是創建用戶較為常見的方式之一,它會返回包含用戶名(在方括號中)和密鑰的密鑰文,如果該用戶已存在,此命令只以密鑰文件格式返回用戶名和密鑰,還可以使用-o 指定文件名選項將輸出保存到某個文件。

#創建kaka用戶
ceph@ceph-deploy:~$ ceph auth get-or-create client.kaka mon 'allow r' osd 'allow rwx pool=myrbd1'
[client.kaka]
	key = AQDBNCJhJAYrFBAAHcvwhjqqUzQuSlNVm8sWWQ==
ceph@ceph-deploy:~$ ceph auth get client.kaka
[client.kaka]
	key = AQDBNCJhJAYrFBAAHcvwhjqqUzQuSlNVm8sWWQ==
	caps mon = "allow r"
	caps osd = "allow rwx pool=myrbd1"
exported keyring for client.kaka
#再次創建kaka用戶
ceph@ceph-deploy:~$ ceph auth get-or-create client.kaka mon 'allow r' osd 'allow rwx pool=myrbd1'
[client.kaka]
	key = AQDBNCJhJAYrFBAAHcvwhjqqUzQuSlNVm8sWWQ==
#注意:該命令為沒有創建的用戶,則創建用戶並顯示用戶名(在方括號中)和密鑰的密鑰文;創建的用戶已存在,則直接顯示用戶名(在方括號中)和密鑰的密鑰文。
3.1.3 ceph auth get-or-create-key

此命令是創建用戶並僅返回用戶密鑰,對於只需要密鑰的客戶端(例如libvirt),此命令非常有用。如果該用戶已存在,此命令只返回密鑰。您可以使用-o 文件名選項將輸出保存到某個文件。 創建客戶端用戶時,可以創建不具有能力的用戶。不具有能力的用戶可以進行身份驗證,但不能執行其他操作,此類客戶端無法從監視器檢索集群地圖,但是,如果希望稍后再添加能力,可以使用ceph auth caps 命令創建一個不具有能力的用戶。典型的用戶至少對Ceph monitor 具有讀取功能,並對Ceph OSD 具有讀取和寫入功能。此外,用戶的OSD 權限通常限制為只能訪問特定的存儲池。

ceph@ceph-deploy:~$ ceph auth get-or-create-key client.kaka mon 'allow r' osd 'allow rwx pool=myrbd1'
AQDBNCJhJAYrFBAAHcvwhjqqUzQuSlNVm8sWWQ==
#1、僅僅只顯示用戶密鑰key
#2、用戶有key就顯示,沒有key就創建
3.1.4 ceph auth print-key

獲取單個指定用戶的key 信息

ceph@ceph-deploy:~$ ceph auth print-key client.kaka
AQDBNCJhJAYrFBAAHcvwhjqqUzQuSlNVm8sWWQ==

3.2修改用戶權限能力

使用ceph auth caps 命令可以指定用戶以及更改該用戶的能力,設置新能力會完全覆蓋當前的能力,因此要加上之前的用戶已經擁有的能和新的能力,如果看當前能力,可以運行ceph auth get USERTYPE.USERID,如果要添加能力,使用以下格式時還需要指定現有能力:

root # ceph auth caps USERTYPE.USERID daemon 'allow [r|w|x||...] \
[pool=pool-name] [namespace=namespace-name]' [daemon 'allow [r|w|x||...] \
[pool=pool-name] [namespace=namespace-name]']

案例

#查看上面創建的kaka用戶權限
ceph@ceph-deploy:~$ ceph auth get client.kaka
[client.kaka]
	key = AQDBNCJhJAYrFBAAHcvwhjqqUzQuSlNVm8sWWQ==
	caps mon = "allow r"
	caps osd = "allow rwx pool=myrbd1"
exported keyring for client.kaka
#將mon權限改為rw,osd權限改為rw

ceph@ceph-deploy:~$ ceph auth caps client.kaka mon 'allow rw' osd 'allow rw pool=myrbd1'
updated caps for client.kaka
#驗證權限
ceph@ceph-deploy:~$ ceph auth get client.kaka
[client.kaka]
	key = AQDBNCJhJAYrFBAAHcvwhjqqUzQuSlNVm8sWWQ==
	caps mon = "allow rw"
	caps osd = "allow rw pool=myrbd1"
exported keyring for client.kaka

3.3刪除用戶

要刪除用戶使用ceph auth del TYPE.ID,其中TYPE 是client、osd、mon 或mds 之一,ID 是用戶名或守護進程的ID。

#刪除kaka用戶
ceph@ceph-deploy:~$ ceph auth del client.kaka
updated
ceph@ceph-deploy:~$ ceph auth get client.kaka
Error ENOENT: failed to find client.kaka in keyring
#無kaka用戶

6、密鑰環管理

ceph 的秘鑰環是一個保存了secrets、keys、certificates 並且能夠讓客戶端通認證訪問ceph的keyring file(集合文件),一個keyring file 可以保存一個或者多個認證信息,每一個key 都有一個實體名稱加權限,類型為:

 
{client、mon、mds、osd}.name

  當客戶端訪問ceph 集群時,ceph 會使用以下四個密鑰環文件預設置密鑰環設置:

/etc/ceph/<$cluster name>.<user $type>.<user $id>.keyring #保存單個用戶的keyring
/etc/ceph/cluster.keyring #保存多個用戶的keyring
/etc/ceph/keyring #未定義集群名稱的多個用戶的keyring
/etc/ceph/keyring.bin #編譯后的二進制文件

  

6.1創建密鑰環文件

密鑰環文件的創建分為:用戶創建--->空的keyring文件創建--->把用戶信息導入keyring文件。

 
#1、創建一個user1的用戶文件
ceph@ceph-deploy:~$ ceph auth get-or-create client.user1 mon 'allow r' osd 'allow rwx pool=myrbd1'
[client.user1]
	key = AQCbOyJhNlfvKhAAQz3KBvxKKbOMQi8PJKX3lw==
ceph@ceph-deploy:~$ ceph auth get client.user1
[client.user1]
	key = AQCbOyJhNlfvKhAAQz3KBvxKKbOMQi8PJKX3lw==
	caps mon = "allow r"
	caps osd = "allow rwx pool=myrbd1"
exported keyring for client.user1


#2、創建一個名為ceph.client.user1.keyring的空的密鑰環文件
ceph@ceph-deploy:~$ ceph-authtool --create-keyring ceph.client.user1.keyring
creating ceph.client.user1.keyring #是個空文件

ceph@ceph-deploy:~$ file ceph.client.user1.keyring
ceph.client.user1.keyring: empty

#3、導出user1信息之指定的keyring文件
ceph@ceph-deploy:~$ ceph auth get client.user1 -o ceph.client.user1.keyring 
exported keyring for client.user1
ceph@ceph-deploy:~$ cat ceph.client.user1.keyring
[client.user1]
	key = AQCbOyJhNlfvKhAAQz3KBvxKKbOMQi8PJKX3lw==
	caps mon = "allow r"
	caps osd = "allow rwx pool=myrbd1"

  

在創建包含單個用戶的密鑰環時,通常建議使用ceph 集群名稱、用戶類型和用戶名及keyring來命名, 並將其保存在/etc/ceph 目錄中。例如為client.user1 用戶創建ceph.client.user1.keyring。

6.2從keyring文件恢復刪除的用戶認證信息

 
#1、刪除client.user1用戶
ceph@ceph-deploy:~$ ceph auth get client.user1
[client.user1]
	key = AQCbOyJhNlfvKhAAQz3KBvxKKbOMQi8PJKX3lw==
	caps mon = "allow r"
	caps osd = "allow rwx pool=myrbd1"
exported keyring for client.user1
#刪除client.use1
ceph@ceph-deploy:~$ ceph auth del client.user1
updated
#驗證client.user1用戶被刪除
ceph@ceph-deploy:~$ ceph auth get client.user1
Error ENOENT: failed to find client.user1 in keyring

#2、使用client.user1的keyring恢復用戶client.user1的認證信息
ceph@ceph-deploy:~$ ceph auth import -i ceph.client.user1.keyring 
imported keyring
#client.user1信息被恢復
ceph@ceph-deploy:~$ ceph auth get client.user1
[client.user1]
	key = AQCbOyJhNlfvKhAAQz3KBvxKKbOMQi8PJKX3lw==
	caps mon = "allow r"
	caps osd = "allow rwx pool=myrbd1"
exported keyring for client.user1

  

6.3將多用戶信息導入至同一個keyring

#1、創建一個空的keyring 文件:
ceph@ceph-deploy:~$ ceph-authtool --create-keyring ceph.client.user.keyring
creating ceph.client.user.keyring
#2、將admin用戶keyring文件內容導入到user的keyring文件
ceph@ceph-deploy:~$ ceph-authtool --create-keyring ceph.client.user.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring 
creating ceph.client.user.keyring
importing contents of /etc/ceph/ceph.client.admin.keyring into ceph.client.user.keyring
#3、驗證ceph.client.user.keyring文件
ceph@ceph-deploy:~$ ceph-authtool -l ./ceph.client.user.keyring 
[client.admin]
	key = AQAKyxthqvTaORAA/aUa9o2vAcfalDI+nWaoqg==
	caps mds = "allow *"
	caps mgr = "allow *"
	caps mon = "allow *"
	caps osd = "allow *"
#4、再把ceph.client.user1.keyring文件內容信息導入到user的keyrig文件中
ceph@ceph-deploy:~$ ceph-authtool ./ceph.client.user.keyring --import-keyring ./ceph.client.user1.keyring 
importing contents of ./ceph.client.user1.keyring into ./ceph.client.user.keyring
#5、驗證ceph.client.user.keyring文件信息
ceph@ceph-deploy:~$ ceph-authtool -l ./ceph.client.user.keyring 
[client.admin]
	key = AQAKyxthqvTaORAA/aUa9o2vAcfalDI+nWaoqg==
	caps mds = "allow *"
	caps mgr = "allow *"
	caps mon = "allow *"
	caps osd = "allow *"
[client.user1]
	key = AQCbOyJhNlfvKhAAQz3KBvxKKbOMQi8PJKX3lw==
	caps mon = "allow r"
	caps osd = "allow rwx pool=myrbd1"

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM