编排授权模型

编排授权模型定义了在延迟操作期间请求的授权过程。一个常见的例子是自动伸缩组的更新。在自动伸缩更新操作期间,编排服务会请求其他组件的资源(例如来自计算服务的服务器或来自网络服务的网络)来扩展或减少自动伸缩组的容量。

编排服务提供以下授权模型

  • 密码授权

  • OpenStack Identity 信任授权

密码授权

编排服务支持密码授权。密码授权要求用户将用户名和密码传递给编排服务。加密后的密码存储在数据库中,并用于延迟操作。

密码授权涉及以下步骤

  1. 用户通过提供令牌、用户名和密码来请求创建堆栈。仪表板或 python-heatclient 代表用户请求令牌。

  2. 如果堆栈包含任何需要延迟操作的资源,那么编排引擎将在用户未提供有效的用户名/密码的情况下,使验证检查失败。

  3. 用户名/密码将被加密并存储在编排数据库中。

  4. 编排创建堆栈。

  5. 稍后,编排服务检索凭据并代表用户请求另一个令牌。该令牌不受范围限制,并提供对堆栈所有者所有角色的访问权限。

OpenStack Identity 信任授权

信任是 OpenStack Identity 扩展,它支持通过 OpenStack Identity 服务进行授权和可选的身份冒充。关键术语是 信任人(授权的用户)和 被信任人(被授权的用户)。

要创建信任,信任人(在本例中,编排服务中创建堆栈的用户)将以下信息提供给 OpenStack Identity 服务

  • 被信任人的 ID(您想要授权的对象,在本例中为编排服务用户)。

  • 要授权的角色。通过 heat.conf 文件配置角色。确保配置包含执行用户代表的延迟操作所需的任何角色。例如,响应自动伸缩事件启动 OpenStack 计算实例。

  • 是否启用身份冒充。

OpenStack Identity 服务提供一个 信任 ID,该 ID 由被信任人使用以获取一个 信任范围令牌。此令牌的范围有限,因此被信任人对已授权的角色具有有限的访问权限。此外,如果创建信任时选择了它,被信任人具有信任人用户的有效身份冒充。有关更多信息,请参阅 身份管理信任

信任授权涉及以下步骤

  1. 用户通过 API 请求创建堆栈(只需要令牌)。

  2. 编排服务使用令牌在堆栈所有者(信任人)和编排服务用户(被信任人)之间创建信任。该服务会委托在编排配置文件中的 trusts_delegated_roles 列表中定义的特殊角色(或角色)。默认情况下,编排服务会使信任人提供的所有角色都可用于被信任人。部署者可以修改此列表以反映本地 RBAC 策略。例如,为了确保 heat 进程只能访问在冒充堆栈所有者时期望的服务。

  3. 编排将加密的 信任 ID 存储在编排数据库中。

  4. 当需要延迟操作时,编排服务检索 信任 ID 并请求信任范围令牌,该令牌使服务用户能够在延迟操作期间冒充堆栈所有者。身份冒充很有用,例如,以便服务用户可以响应自动伸缩事件代表堆栈所有者启动计算实例。

授权模型配置

最初,密码授权模型是默认授权模型。从 Kilo 版本开始,信任授权模型默认情况下已为编排服务启用。

要启用密码授权模型,请更改 heat.conf 文件中的以下参数

deferred_auth_method=password

要启用信任授权模型,请更改 heat.conf 文件中的以下两个参数。

指定用于延迟编排操作的身份验证方法。此参数触发创建 信任 ID 并将其存储在编排数据库中

deferred_auth_method=trusts

允许使用存储的 信任 ID 进行重新身份验证,以便对长期运行的任务颁发信任范围令牌

reauthentication_auth_method=trusts

要指定信任人委托给被信任人进行授权的角色,请在 heat.conf 文件中指定 trusts_delegated_roles 参数。如果未定义 trusts_delegated_roles,则信任人的所有角色都将委托给被信任人。

注意

必须在 OpenStack Identity 服务中使用它们之前,在 OpenStack Identity 服务中预配置信任人委托的角色。