Endpoint Policy Extension¶
扩展 OS-ENDPOINT-POLICY 提供了一种将策略文件分配给特定端点的机制。此扩展需要 Identity API v3.3。
问题描述¶
OpenStack 提供了基于角色的访问控制 (RBAC) 功能,用于控制对基于项目的资源的访问。但是,它没有提供 RBAC 功能来控制哪些端点可以消费这些资源。
说明此问题的典型用例是分为测试、QA 和生产区域的云。在这样的环境中,通常希望限制可以发出影响生产的 API 调用的用户,例如,限制他们访问测试环境。目前,实现此目的的唯一方法是为每个环境创建一个不同的项目,并使用端点过滤来限制每个项目中的端点集(然后为这些项目中的每个项目使用不同的角色要求)。这可能会迅速导致项目爆炸,特别是考虑到您可能有不同的地理生产区域,也许每个区域都有自己的管理员用户。真正需要的的是根据端点调整 RBAC 要求。
提议的变更¶
此更改提供了将给定的策略文件(存储在 Keystone 中,由策略 ID 表示)与端点或一组端点关联的能力。将支持三种类型的关联
与特定端点关联的策略
与给定区域中的服务关联的策略
与服务关联的策略
现有的 Identity 策略 API 将被扩展,以允许为特定端点检索策略,其中为该端点创建的关联将用于选择适当的策略文件,方法是按上述三种类型的关联顺序进行检查。对于具有父级的区域,将按升序搜索这些父级。将使用找到的第一个关联匹配项 - 不会因多个关联而进行策略文件的组合。如果未找到关联,则将返回错误。
此扩展不会更改允许通过策略 ID 检索策略的现有 API,而是提供另一种选择,即端点能够检索适当的策略,而不是必须通过策略 ID 指定它。鉴于此,在本提案中,假设端点将继续仅在启动时获取其策略。未来的增强功能(本提案未涵盖)可能允许 Keystone 在策略更改时提供通知,以便端点可以刷新其策略。
此更改将允许云管理员,例如,指定在生产区域中执行某些操作所需的受限角色分配集。例如,云提供商可能会定义一个 nova 策略,对于生产环境,具有如下规则:
"compute_extension:admin_actions:pause": "rule:admin_or_owner",
而在测试区域中,策略规则可能更宽松,例如:
"compute_extension:admin_actions:pause": "rule:admin_or_owner or role:tester",
通过将这两个策略文件与各自区域的 nova 服务关联,如果端点通过端点 ID 获取其策略,将自动向任一区域中的任何 nova 端点返回正确的策略文件。
备选方案¶
当前解决方案(使用多个项目),结合端点过滤,可以继续使用,并伴有上述问题。
数据模型影响¶
对数据模型的更改将限制为用于存储端点策略关联的新表。
REST API 影响¶
确切的 API 规范将在审查 Identity API 的更改时定义。这将包括
定义策略关联的 API
扩展现有的 Identity 策略 API 以请求策略
安全影响¶
除了允许端点从 Keystone 获取策略(这已受支持)之外,没有重大的安全影响。
通知影响¶
所有策略关联更改都将是可审计事件。
其他最终用户影响¶
端点需要调用 Keystone 来获取其策略(而不是从文件读取),才能利用此更改。Keystone 中间件应为此提供支持。
性能影响¶
可以忽略不计 - 策略将不频繁地获取。
其他部署者影响¶
端点需要一个配置设置来告诉它们从哪里获取其策略(即文件或 Keystone)。
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
henry-nash
- 附加负责人
ayoung
工作项¶
达成 API 规范一致
实现策略关联代码
扩展策略 API 以启用任何关联的使用
修改 Keystone 中间件以公开此新功能
将使用单独的补丁/蓝图来修改其他项目的策略加载,以便能够使用此功能。
依赖项¶
在获得此扩展的优势之前,需要更改其他项目的策略加载。
测试¶
由于本提案的更改具有相互依赖性,因此将提供一些 Tempest 测试。
文档影响¶
对 Identity API 和 configuringservices.rst 的更改。
参考资料¶
无