Identity Management¶
构想¶
Identity Management Service 管理 MindSphere 平台中的租户、用户和组。客户可以通过该服务访问 MindSphere 中使用的 User Accounts and Authentication (UAA) Service,从而进行身份管理和授权。
访问¶
要访问此服务,您需要具有 Identity Management 角色和范围中列出的相应角色。
基础知识¶
租户¶
租户是面向数据的组织特定逻辑环境。租户通常代表法人实体,例如企业或公司。MindSphere 是一个多租户架构。
租户最多包含两个区域,用于进行身份管理和访问控制:
-
用户区域
每个租户都有一个用户区域。租户的用户可以通过用户区域登录和使用公司订阅的应用。租户管理员可以在用户区域管理用户并为其分配角色,使其可以访问订阅的应用。 -
提供者区域
提供者区域代表 Web 应用和 API 开发与操作所需的附加环境。每个 DevOps 计划租户都有一个提供者区域,该区域存储与开发或操作所需访问权限管理相关的所有信息(例如,角色、权限、应用和技术用户)。
由于租户名称是在全球范围内使用的资源,因此每个租户的名称必须是唯一的。
每个用户租户需要至少定义一个管理员来管理此租户的用户和角色。
用户和组¶
每个租户都有自己的用户,并可使用根据其订阅的应用提供的角色。角色表示访问应用所需的一组权限。 通过将角色建模为 SCIM 组,MindSphere 中的用户和角色管理能够满足 SCIM 标准(跨域 Identity Management 系统)的相关要求。
目前,在用户区域内,SCIM 组仅用于表示角色。
此外,SCIM 组还可以代表用户组(用于管理用户组)、数据组(用于管理最终客户对数据、assets 等的访问)以及权限(仅用于在租户的提供者区域内管理对资源更细化的访问)。
角色和范围¶
以下信息仅适用于具有提供者区域的租户。
如果公开面向 Web 应用的 API,则范围将定义应用特定的权限。范围名称通常采用可以体现权限的语法,如下所示:
{apiName}.{permission/action}
以下列表列出了 IoT 服务的 CRUD 权限示例:
iot.c
(在 IoT 中创建对象的权限)iot.r
(在 IoT 中读取对象的权限)iot.u
(在 IoT 中更新对象的权限)iot.d
(在 IoT 中删除对象的权限)
范围将映射到特定角色。角色名称采用如下语法:
mdsp:{tenantName}:{application/apiName}.{roleName/action}
因此,上文的所有范围都可以映射到以下角色
mdsp:core:iot.admin
特定于应用的角色和范围在提供者租户中定义,并且可以在 Developer Cockpit 应用中进行管理。另请参见 Cloud Foundry 应用指南。
OAuth 客户端¶
以下信息仅适用于具有提供者区域的租户。
OAuth客户端(也称为技术用户)让应用可以获取令牌以访问受保护的资源,无需人工干预。这对于在应用中定期执行后台操作(批次操作)是必须的。如果您的应用不是托管在MindSphere Gateway背后的,导致在请求头部中接收不到交互式用户令牌,那么也是需要使用OAuth客户端的。OAuth 客户端在租户的提供者区域中定义,包含客户端 ID 和客户端密钥,支持使用客户端凭证授权 (RFC 6749) 获取令牌。
说明
Identity Management API 的 userID 和解码 token 中的 user_id 不同。包含用户电子邮件地址的过滤器需要用来获取指定用户的特定数据。
有关如何为提供者租户获取OAuth客户端,请参考自托管应用指南.
客户端密钥在过期前应及时更新, 具体说明请参考客户端密钥轮换.
功能¶
Identity Management Service 公开其 API 以实现以下任务:
- 列出租户的所有用户
- 创建、获取、更新、删除租户的用户
- 获取分配给自己用户的所有角色
- 列出租户用户区域内的所有 SCIM 组
- 创建、获取、更新、删除租户用户区域内的 SCIM 组
- 列出、添加、删除租户用户区域内的 SCIM 组成员
示例场景¶
某啤酒厂的管理人员希望为其 Web 应用的新开发者准备租户。
使用 Identity Management Service 为租户添加新用户并为其分配开发所需的角色(例如,mdsp:core:StandardUser、mdsp:core:Developer)。