所有资源类型的资源选项

bug #1807751

资源选项已针对用户资源类型实现。这些用于 PCI-DSS 控制(例如,免除用户密码更改要求)和多因素身份验证登录规则。Keystone 中的其他资源类型将受益于类似的技术集。用例示例包括

  • 将登录限制为特定来源(IP 地址),用于作用域限定于给定项目或域的令牌

  • 将默认 PCI-DSS 选项应用于包含在域中的所有用户,例如,免除 service 域中的所有服务用户密码更改要求。

  • 将默认多因素身份验证规则应用于所有作用域限定于给定域或项目中的登录。

问题描述

每个资源类型可能具有明确的控制或选项,这些控制或选项是该资源类的独有属性(例如,免除用户 PCI-DSS 密码更改要求)。本规范建议将资源选项功能从用户扩展到涵盖所有资源类型。这是为未来选项构建的支架。本规范的范围内不会添加任何选项。

这是为了支持诸如不可变资源、与 PCI-DSS 选项相关的整个域的默认设置(例如,免除所有服务用户密码过期)、作用域限定于给定域的多因素身份验证默认规则等概念而添加的。

提议的变更

为所有当前未实现资源选项的资源类型添加相同的控制、数据库表和响应。这将作为 Keystone 中定义的基类 SQL 模型的一部分实现,所有未来的资源类型都将预期实现资源选项功能。

备选方案

  • 选项 #1:在需要为给定资源类时显式实现资源选项。

  • 选项 #2:不实现资源选项,而是为相同行为单独构建该功能。

安全影响

这是结构和代码能力实现,不应产生任何安全影响。

通知影响

其他最终用户影响

用户将看到资源添加的 resource_options 响应。

性能影响

提取资源选项的额外数据库查询将为 Keystone 添加额外的负载。大多数资源将没有资源选项,并且那些具有资源选项的资源将(默认情况下)依赖于 SQL 索引来减轻潜在的额外负载。

其他部署者影响

在未来选项实现之前,不会对部署者产生影响。

开发人员影响

开发人员需要在实现此规范后,为所有新的资源类型实现资源选项功能。

实现

负责人

主要负责人

morgan fainberg <morgan.fainberg@gmail.com>

工作项

  • 实施数据库迁移,为每种资源类型/类添加资源选项表。

  • 实施 API 处理程序,以处理和验证每种资源类型的资源选项。

  • 将资源选项基础代码实施到 Keystone 中定义的基类 SQL 模型中。

依赖项

文档影响

需要有关添加新资源选项的文档。

参考资料

N/A