如何为OpenStack平台中的镜像设置开放访问权限?

2026-05-22 09:252阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计686个文字,预计阅读时间需要3分钟。

如何为OpenStack平台中的镜像设置开放访问权限?

OpenStack镜像权限开放,环境分析(1)背景:某OpenStack云平台有两个用户,A用户和B用户,分别属于不同部门。公司对镜像管理较为严格,所有镜像均由管理员进行上传和权限管理。

openstack对镜像权限开放
  1. 场景分析
    (1)背景

某OpenStack云平台有两个租户,A租户与B租户,分别属于两个部门,该公司对镜像的管理比较严格,镜像都由管理员进行上传和权限管理。

如何为OpenStack平台中的镜像设置开放访问权限?

(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用户,查看是否能看到镜像)

本文共计686个文字,预计阅读时间需要3分钟。

如何为OpenStack平台中的镜像设置开放访问权限?

OpenStack镜像权限开放,环境分析(1)背景:某OpenStack云平台有两个用户,A用户和B用户,分别属于不同部门。公司对镜像管理较为严格,所有镜像均由管理员进行上传和权限管理。

openstack对镜像权限开放
  1. 场景分析
    (1)背景

某OpenStack云平台有两个租户,A租户与B租户,分别属于两个部门,该公司对镜像的管理比较严格,镜像都由管理员进行上传和权限管理。

如何为OpenStack平台中的镜像设置开放访问权限?

(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用户,查看是否能看到镜像)