1. 程式人生 > 其它 >OpenStack平臺開放映象許可權

OpenStack平臺開放映象許可權

  1. 場景分析
    (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使用者,檢視是否能看到映象)