手动 Openstack 安装:警告:...没有服务策略规则 'identity'

Manual Openstack Install: WARNING: ... No Policy rules for service 'identity'

已手动安装 Openstack Train 版本。

当以 non-admin 角色登录 Horizon 仪表板并单击仪表板时,右上角会弹出错误消息。

具体来说,在“计算”>“图像”下出现了两个错误:

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

在 error_log 中查找 httpd,它一遍又一遍地显示这些错误:

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 Documentation 但是,当我转到服务文件时,它们是空的。我的问题是是否可以简单地创建这些 policy.json 文件? Openstack 文档指出不建议更改 policy.json 文件,这让我认为这是一个错误。其他人是否遇到过类似问题?

更新

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

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

目前在这上面卡了一个星期左右。

有人遇到类似问题吗?

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

例如,在 glance 部分,所有策略都在 glancs-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 路径下。

作为用户角色,您会看到您 own/member 没有错误的项目。

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

看来 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 有关?

这么多我不确定。但我很高兴正确应用了权限。