支持策略配置目录

https://blueprints.launchpad.net/oslo-incubator/+spec/policy-configuration-directories

本提案旨在增加一种覆盖默认策略规则的方式。

问题描述

有人抱怨策略配置使用起来比较困难。目前没有办法覆盖默认策略规则。修改默认策略规则的唯一方法是编辑 policy.conf。这对于部署者来说很不方便。

提议的变更

建议支持策略配置目录。从策略配置目录加载的策略规则将覆盖来自 ‘policy_file’ 的默认策略规则。

添加新的配置选项

cfg.ListOpt(‘policy_configuration_directories’, default=[‘policy.d’],

help=_(‘策略配置文件目录’))

‘policy_configuration_directories’ 接受一个目录列表。这些目录将按顺序迭代。这些目录中的文件将按字母顺序加载,并且规则将按该顺序被覆盖。子目录将被忽略。

如果 policy_configuration_directories 中的目录不存在,则在加载策略时将引发错误。

备选方案

Impact on Existing APIs

安全影响

策略规则将从指定的目录加载。如果这些目录具有适当的权限,则不会存在安全问题。

建议权限设置为只有管理员可以读取和写入策略配置目录和文件。并且 OpenStack 程序可以读取这些目录和文件就足够了。

性能影响

此更改需要迭代目录列表,这将减慢策略规则的初始化/重新加载速度。

Configuration Impact

此更改引入新的配置选项:policy_definition_path = [目录列表]

该选项方便部署者更改存储策略配置文件的地方。默认值为 ‘policy.d’。位置搜索将与选项 ‘policy_file’ 相同。

开发人员影响

当开发者将此功能添加到应用程序中时,开发者需要添加 UpgradeImpact 标志和升级文档,以通知部署者在其开发中创建 ‘policy.d’ 目录,否则 ‘policy.d’ 找不到将引发错误。

实现

负责人

主要负责人

Alex Xu (xuhj@linux.vnet.ibm.com)

里程碑

完成目标里程碑:Juno-3

工作项

此更改只需要一个补丁。它将在 oslo-incubator/openstack/common/policy.py:Enforcer 中实现

Enforcer.load_rules 将扫描策略配置目录,并加载它们以按顺序覆盖规则。

孵化

采用

Nova 将使用此功能来改进策略规则的配置。但此功能可用于大多数支持策略规则的 OpenStack 项目。

预计 API 稳定

文档影响

新选项应在配置文档中记录。 https://docs.openstack.org/icehouse/config-reference/content

我们还应该描述如何编写策略,以解释如何组合多个策略文件来构建完整的规则集。

依赖项

参考资料

https://etherpad.openstack.org/p/juno-nova-devops

注意

本作品采用知识共享署名 3.0 非移植许可协议授权。 http://creativecommons.org/licenses/by/3.0/legalcode