动态策略叠加

https://blueprints.launchpad.net/oslo?searchtext=dynamic-policies-overlay

动态策略旨在通过改进策略的定义和传递到服务端点的机制来改进 OpenStack 中的访问控制。

动态传递策略的一个步骤是将现有的服务端点的本地策略文件与在 Keystone 服务器 中定义的自定义规则叠加。此叠加任务委托给 oslo.policy

问题描述

爱丽丝,云部署者

爱丽丝是那种喜欢新功能并热切期待新的 OpenStack 功能(如 动态 策略)以在她的云中启用它们的人。

有了这个功能,她希望能够在 Keystone 服务器 中定义她的自定义策略规则,并透明地将这些规则应用于服务端点。

在幕后,Keystone 中间件 将获取 动态 策略,其中包含自定义策略规则,用于它所服务的服务,并要求 oslo.policy 叠加 默认 策略,即现有的本地策略文件。

提议的变更

基于 动态 策略 以及现有的 policy_filepolicy_dirs 选项,为 oslo.policy 添加叠加 默认 策略 中规则的功能。

当存在规则冲突时,动态 策略 中的规则始终覆盖 默认 策略 中的规则。这意味着如果在 动态 策略 中存在该条目,则对 默认 策略 所做的任何自定义都将丢失。

备选方案

Keystone 中间件 本身执行叠加逻辑,但是这似乎根本不是它的任务,因为 oslo.policy 是处理策略文件并拥有定义文件放置位置的配置选项的组件。

Impact on Existing APIs

安全影响

此更改涉及策略规则,由于它们定义了 OpenStack 中服务 API 的访问控制,因此这些规则是敏感数据。

性能影响

Configuration Impact

开发人员影响

Testing Impact

实现

负责人

主要负责人

Samuel de Medeiros Queiroz - samueldmq

其他贡献者

Adam Young - ayoung Morgan Fainberg - mdrnstm

里程碑

完成目标里程碑:Liberty-2

工作项

  • 创建一个新函数,该函数将 动态 策略 作为 Python 字典作为输入,并使用覆盖策略在发生冲突时将其写入 默认 策略,即现有的本地策略文件。

孵化

采用

任何使用 动态 策略 机制进行访问控制的服务都将通过 Keystone 中间件 使用提议的更改,这意味着采用对服务是透明的。

提议的更改将影响 oslo.policy 库。

预计 API 稳定

文档影响

除了常规的 Python 代码级别文档之外,没有其他内容。

依赖项

可以在主题 dynamic-policies-delivery 下找到定义动态策略传递的列表中的相关规范。

参考资料

注意

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