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 标志的命令来检查此信息。