Keystone 作用域行为在 nova 和 cinder 之间不一致

Keystone 作用域行为在 nova 和 cinder 之间不一致

我一直在尝试更新我们的 OpenStack 安装以使用新选项enforce_new_defaultsenforce_scope因为在 Wallaby 中,nova 的旧策略将被弃用。这些选项似乎存在于许多组件中(nova、cinder、keystone、glance 等),所以我认为在所有组件中启用它们是个好主意。我从 nova 和 cinder 开始,遇到了有趣的问题。

我创建了test没有默认项目的用户,并为其分配了admin系统范围和一个项目中的权限。之前提到的两个选项均在 nova 和 cinder 中设置true。策略文件不存在(因为我想测试默认值)。

进行基本测试(https://docs.openstack.org/keystone/latest//admin/tokens-overview.html#authorization-scopes):

  • openstack token issue给了我无范围的令牌
  • openstack --os-system-scope=all token issue给了我系统范围的令牌
  • openstack --project-name=NAX.Prod token issue给了我项目范围的令牌

到目前为止一切顺利。现在开始好玩了:

  • openstack volume service list- 失败:The service catalog is empty.
  • openstack --os-system-scope=all volume service list- 失败:public endpoint for volumev3 service not found
  • openstack --os-project-name=NAX.Prod volume service list- 好的

系统范围的请求没有通过,因为volumev3服务/v3/%(project_id)s在端点 URL 中使用(仔细检查文档),因此似乎如果不对某些项目进行身份验证它就无法工作。

查看生成的策略,它似乎不支持此请求的范围:

# List all services.
# GET  /os-services
#"volume_extension:services:index": "rule:admin_api"

好的,现在是新星:

  • openstack compute service list- 失败:The service catalog is empty.
  • openstack --os-system-scope=all compute service list- 好的
  • openstack --os-project-name=NAX.Prod compute service list- 失败:Policy doesn't allow os_compute_api:os-services:list to be performed.

相关政策:

# List all running Compute services in a region.
# GET  /os-services
# Intended scope(s): system
#"os_compute_api:os-services:list": "rule:system_reader_api"

因此它确实看上去如预期那样工作。


也就是说,如果您想管理 OpenStack 对不同组件(列出服务)执行相同的操作,则必须使用不同的范围(不同的 OS_CLOUD 或 CLI 参数,具体取决于您的设置方式)。这真的是预期的吗?我遗漏了什么吗?

相关版本:

  • Keystone:18.0.0
  • 新星:22.0.1
  • 煤渣:17.0.0
  • OpenStack客户端:5.4.0
  • OpenStack SDK:0.50.0

相关内容