Поведение телескопов Keystone несовместимо между nova и Cinder

Я пытался обновить нашу установку OpenStack, чтобы использовать новые параметры.enforce_new_defaultsиenforce_scopeпоскольку в Валлаби для nova старые политики будут признаны устаревшими. Эта опция, похоже, присутствует во многих компонентах (nova, Cinder, Keystone, Glook и т. д.), поэтому я подумал, что было бы неплохо включить их везде. Я начал с nova и Cinder и столкнулся с интересной проблемой.

Я создал пользователяtestбез проекта по умолчанию и назначил егоadminразрешения в рамках системы и в одном проекте. Обе опции, упомянутые ранее, установлены на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- НЕУДАЧА:
  • 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, в зависимости от того, как вы их настроили). Это действительно ожидаемо? Я что-нибудь пропустил?

Соответствующие версии:

  • Краеугольное камень: 18.0.0
  • Нова: 22.0.1
  • Зола: 17.0.0
  • Клиент OpenStack: 5.4.0
  • OpenStack SDK: 0.50.0

0 ответов

Другие вопросы по тегам