0

手动安装 Openstack Train 版本。

当以非管理员角色登录 Horizo​​n 仪表板并单击仪表板时,右上角会弹出错误。

具体来说,在 Compute > Images 下会出现两个错误:

  1. 错误:禁止。请求的操作权限不足
  2. 错误:无法检索项目

查看 httpd 的 error_log 会一遍又一遍地显示这些错误:

WARNING openstack_auth.policy No policy rules for service 'network' in /usr/share/openstack-dashboard/openstack_dashboard/conf/neutron_policy.json 
WARNING openstack_auth.policy No policy rules for service 'identity' in /usr/share/openstack-dashboard/openstack_dashboard/conf/keystone_policy.json

当试图去/usr/share/openstack-dashboard/openstack_dashboard/ 查看 keystone_policy.json 或 neutron_policy.json 时,conf 目录丢失了,文件也丢失了。

Openstack 声明每个服务都有自己的 policy.json 文件(如果使用较新版本,则为 yaml)。Openstack 文档 但是,当我转到服务文件时,它们是空的。我的问题是简单地创建这些 policy.json 文件吗?Openstack 文档指出不建议更改 policy.json 文件,这让我认为这是一个错误。其他人是否遇到过类似的问题?

更新

我已经conf/usr/share/openstack-dashboard/openstack_dashboard. 然后,我使用 oslo 生成器使用以下命令为每个服务创建新的策略文件:oslopolicy-policy-generator --namespace keystone --output-file keystone_policy.json

我重新启动了 apache 并以管理员身份登录到 Horizo​​n,发现我的管理员用户无法创建项目、用户或角色。

目前被困在这个问题上大约一个星期。

有人有类似的问题吗?

4

2 回答 2

0

所以看起来 yaml 文件在 Train 版本中可能无法正常工作。

oslopolicy-policy-generator --namespace keystone --output-file keystone_policy.json 命令生成一个以 .json 结尾的文件,但实际上看起来像 yaml snytax。

放置在/usr/share/openstack-dashboard/openstack_dashboard/conf文件夹中时,策略文件未正确应用。

以下命令最终解决了我与策略文件有关的所有问题:

oslopolicy-policy-upgrade \
--config-file /etc/keystone/keystone.conf \
--format json \
--namespace keystone \
--output-file keystone_policy_2.json \
--policy keystone_policy.json

检查/var/log/keystone/keystone.log时注意到以下消息:
Deprecated policy rules found. Use oslopolicy-policy-generator and oslopolicy-policy-upgrade to detect and resolve deprecated policies in your configuration.这就是提示使用的原因oslopolicy-policy-upgrade -h

还要确保/openstack_dashboard/defaults.py说以下内容:

POLICY_FILES = {
    'identity': 'keystone_policy.json',
    'compute': 'nova_policy.json',
    'volume': 'cinder_policy.json',
    'image': 'glance_policy.json',
    'network': 'neutron_policy.json',
}

我想指出,这两个不同的命令输出了两个不同的 keystone_policy.json 文件。第一个命令有很多关于 system_scope:all 的提及,第二个命令有更简单的规则,例如:“identity:list_users_in_group”:“rule:admin_required”。所以也许这与使用 IdentityV3 和 V2 有关?

我不确定。但我很高兴权限被正确应用。

于 2020-08-25T03:53:10.617 回答
0

我自己经历了这个问题的一部分。

例如,glance所有策略都在 glncs-api/registry 主机中定义,/etc/glance/policy.json并且相同的文件存在于我的仪表板集群中的路径下/etc/openstack-dashboard。在local_settings查找部分POLICY_FILES = 并将其注释掉,这样role = user您就不会遇到错误。

至于identity根据政策

POLICY_FILES = {
   'identity': 'keystone_policy.json',
}

您必须确保keystone_policy.json存在于 openstack-dashboard 路径下。

作为用户角色,您将看到您拥有/成员的项目没有错误。

我已经进行了这些更改,现在在测试环境中运行,然后再投入生产,以确保所有更改都不会造成损害。

于 2020-08-21T09:30:33.920 回答