支持策略配置目录¶
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