Trusts

OpenStack Identity 管理身份验证和授权。Trust 是 OpenStack Identity 的一个扩展,它通过 keystone 实现委托和可选的身份冒用。Trust 扩展定义了

委托人

将自己的一组有限的权限委托给另一个用户的用户。

受托人

被委托信任的用户,在有限的时间内。

Trust 最终可以允许受托人冒用委托人的身份。出于安全原因,添加了一些安全措施。例如,如果委托人失去某个角色,用户使用该角色发出的任何 trust 以及相关的 token 将被自动撤销。

委托参数是

用户 ID

委托人和受托人的用户 ID。

权限

委托的权限是项目 ID 和必须是分配给委托人的角色的子集。

如果省略所有权限,则不委托任何内容。您不能委托所有内容。

委托深度

定义委托是否是递归的。如果是递归的,则定义委托链的长度。

指定以下值之一

  • 0。委托人不能进一步委托这些权限。

  • 1。委托人可以将权限委托给任何一组委托人,但后者不能进一步委托。

  • inf。委托是无限递归的。

端点

与委托关联的端点列表。

此参数进一步将委托限制为仅指定的端点。如果您省略端点,则委托将毫无用处。特殊值 all_endpoints 允许 trust 由与委托项目关联的所有端点使用。

时长

(可选) 包含 trust 的开始时间和结束时间。

注意

有关推荐的维护程序,请参阅管理员指南中的 删除过期的 trust

用法

可以使用 openstack trust create 命令创建 trust。该命令需要一个 委托人、一个 受托人、一个 项目 和一个 trust 被委托的 角色 列表。

例如,如果您是 admin 用户,并且希望将 admin 角色委托给用户 demo,用于项目 admin

$ openstack trust create --role admin --project admin admin demo

这将返回一个包含 trust_id 的响应。然后,可以使用此 trust_id 在用户 demo 的身份验证期间使用。例如,您可以在 clouds.yaml 中指定以下内容

devstack:
    auth:
        auth_url: 'http://example.com/identity'
        username: 'demo'
        password: '***'
        trust_id: '95946f9eef864fdc993079d8fe3e5747'
    identity_api_version: '3'
    region_name: RegionOne
    volume_api_version: '3'

使用 trust 返回的 token 具有不同的格式。您可以通过使用上述云运行带有 --debug 标志的命令来检查此信息。