OpenStack平臺開放映象許可權
阿新 • • 發佈:2022-05-07
- 場景分析
(1)背景
某OpenStack雲平臺有兩個租戶,A租戶與B租戶,分別屬於兩個部門,該公司對映象的管理比較嚴格,映象都由管理員進行上傳和許可權管理。
(2)訴求
該公司有一個映象,需要共享給A租戶使用,對B租戶不可見,實現這種方式最簡單的方式,是由A租戶中的使用者自行上傳映象,這樣A租戶裡面的使用者可以看見該映象,而B租戶中的使用者看不見。但是現在映象不能由普通使用者去上傳,只能通過管理員進行操作。
(3)解決方案
通過管理員上傳該映象,並使用相關命令開放給A租戶。
登入OpenStack平臺,建立租戶depA和depB,並且在這兩個租戶下各創一個使用者userA和userB的普通使用者,建立完之後(建立過程不再贅述)
[root@controller ~]# source /etc/keystone/admin-openrc.sh [root@controller ~]# openstack project list +----------------------------------+---------+ | ID | Name | +----------------------------------+---------+ | 04a7be4d89a04a48a9a41a8057c3a045 | demo | | 3beab2dd6bd94fa3ad81fbd06ca584e0 | depA | | 3ddafa07c84640b19943f80f235e8cac | service | | 4ca4043915984ed3a50b5d70b1f66feb | depB | | bf36698d9afd45c4b46c1933469a9101 | admin | +----------------------------------+---------+ [root@controller ~]# openstack user list +----------------------------------+-------------------+ | ID | Name | +----------------------------------+-------------------+ | 010afff7d2924bc3bacc61c8c76c1c4b | nova | | 1d5bd18258044f3e948b48cd45dc6b81 | userB | | 25f32050e0a94da49768b4febd4486bc | barbican | | 320f2793652d404ea6ce79a4007e806f | heat_domain_admin | | 34b40a9a53b84cac8d98654910862938 | demo | | 489dc6695a77406eb1a773d463b4c841 | glance | | 5b3e1e3cf32f4c31a535dadcd48135b8 | neutron | | 5fe5db55da2a4d10ba59cb5913cc9ccd | userA | | 6edeb159c80049bea70fec001f7b7dbf | heat | | 81997190056048dcb9458512b2cdcb56 | placement | | 8c5e980e66b24c048e5147ae0290b210 | cinder | | 97ef3d67343f456b83b0ea24f7224680 | swift | | beafd0ad1b67482e968af2c8a6575c26 | admin | +----------------------------------+-------------------+
可以看見租戶與使用者均已存在。
上傳映象
使用cirros-0.3.4-x86_64-disk.img上傳至控制節點的/root目錄下,並上傳至雲平臺中
[root@controller ~]# glance image-create --name cirros --disk-format qcow2 --container-format bare --progress < cirros-0.3.4-x86_64-disk.img [=============================>] 100% +------------------+--------------------------------------+ | Property | Value | +------------------+--------------------------------------+ | checksum | ee1eca47dc88f4879d8a229cc70a07c6 | | container_format | bare | | created_at | 2022-05-07T16:16:56Z | | disk_format | qcow2 | | id | 746c6ae9-f916-4820-bec7-a383ad3684b0 | | min_disk | 0 | | min_ram | 0 | | name | cirros | | owner | bf36698d9afd45c4b46c1933469a9101 | | protected | False | | size | 13287936 | | status | active | | tags | [] | | updated_at | 2022-05-07T16:16:58Z | | virtual_size | None | | visibility | shared | +------------------+--------------------------------------+
上傳映象後,userA和userB都不能看到該映象。接下來做相關配置,使得A租戶中的使用者可以看到該映象。
許可權配置
首先將映象共享給A租戶
命令格式: glance member-create <映象id> <租戶depA的id>
[root@controller ~]# glance member-create 746c6ae9-f916-4820-bec7-a383ad3684b0 3beab2dd6bd94fa3ad81fbd06ca584e0
+--------------------------------------+----------------------------------+---------+
| Image ID | Member ID | Status |
+--------------------------------------+----------------------------------+---------+
| 746c6ae9-f916-4820-bec7-a383ad3684b0 | 3beab2dd6bd94fa3ad81fbd06ca584e0 | pending |
+--------------------------------------+----------------------------------+---------+
注:如果建立錯誤可以:glance member-delete <映象id> <租戶id>刪除
在共享之後,映象的狀態是pending狀態,此時還需要啟用映象
[root@controller ~]# glance member-update 746c6ae9-f916-4820-bec7-a383ad3684b0 3beab2dd6bd94fa3ad81fbd06ca584e0 accepted
+--------------------------------------+----------------------------------+----------+
| Image ID | Member ID | Status |
+--------------------------------------+----------------------------------+----------+
| 746c6ae9-f916-4820-bec7-a383ad3684b0 | 3beab2dd6bd94fa3ad81fbd06ca584e0 | accepted |
+--------------------------------------+----------------------------------+----------+
此時映象的狀態就變為了accepted,可以在dashboard介面登入userA使用者,檢視是否可以看到cirros映象(也可以登入userB使用者,檢視是否能看到映象)