当前位置 : 主页 > 编程语言 > 其它开发 >

OpenStack平台开放镜像权限

来源:互联网 收集:自由互联 发布时间:2022-05-30
openstack对镜像权限开放 场景分析 (1)背景 某OpenStack云平台有两个租户,A租户与B租户,分别属于两个部门,该公司对镜像的管理比较严格,镜像都由管理员进行上传和权限管理。 (
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用户,查看是否能看到镜像)
在这里插入图片描述

网友评论