Azure 数字孪生中基于角色的访问控制
Azure 数字孪生可实现对空间图中特定数据、资源和操作的精确访问控制。 它通过精细的角色和权限管理来实现,称为 基于角色的访问控制 (RBAC) 。 RBAC 包括“角色”和“角色分配”。 角色标识权限的级别。 角色分配将角色与用户或设备相关联。
使用 RBAC 可将权限授予:
- 用户。
- 设备。
- 服务主体。
- 用户定义的函数。
- 属于某个域的所有用户。
- 租户。
还可以微调访问权限的程度。
RBAC 具有唯一性,原因在于权限沿着空间图继承。
RBAC 的作用是什么?
开发人员可以使用 RBAC 来实现以下目的:
- 授予用户管理权限,使其能够管理整个建筑内或仅特定房间或楼层内的设备。
- 授予管理员全局访问权限,使其能够访问整个图或某部分图的所有空间图节点。
- 向支持专家授予图的读取访问权限,但访问密钥除外。
- 向域的每个成员授予所有图对象的读取访问权限。
RBAC 最佳做法
基于角色的访问控制是一种继承驱动的安全策略,用于管理访问权限、权限和角色。 子代角色从父角色继承权限。 也可以在不从父角色继承的情况下分配权限。 还可以指定权限以根据需要自定义角色。
例如,空间管理员可能需要全局访问权限,才能运行指定空间的所有操作。 访问涉及空间下面或空间内的所有节点。 设备安装程序可能只需要设备和传感器的读取和更新权限。
根据最小特权原则,在任何情况下向角色授予的访问权限都应准确且不超出其完成任务所需的访问权限。 根据此原则,只向某个身份授予:
- 完成其作业所需的访问权限。
- 合适的角色,且仅限于执行其作业。
重要
请始终遵循最低权限原则。
需要遵循的其他两个重要的基于角色的访问控制做法:
- 定期审核角色分配,以验证每个角色均拥有正确的权限。
- 当个人更改角色或分配时,应清除原有角色和分配。
角色
角色定义
角色定义是组成权限和构成角色的其他属性的集合。 角色定义列出了允许的操作,包括具有该角色的任何对象可执行的创建、读取、更新和删除操作。 它还指定权限应用于的对象类型。
下表介绍了 Azure 数字孪生中可用的角色:
角色 | 说明 | Identifier |
---|---|---|
空间管理员 | 指定空间和其下所有节点的 CREATE、READ、UPDATE 和 DELETE 权限。 全局权限。 | 98e44ad7-28d4-4007-853b-b9968ad132d1 |
用户管理员 | 用户及用户相关对象的 CREATE、READ、UPDATE 和 DELETE 权限。 空间的 READ 权限。 | dfaac54c-f583-4dd2-b45d-8d4bbc0aa1ac |
设备管理员 | 设备及设备相关对象的 CREATE、READ、UPDATE 和 DELETE 权限。 空间的 READ 权限。 | 3cdfde07-bc16-40d9-bed3-66d49a8f52ae |
密钥管理员 | 访问密钥的 CREATE、 READ、 UPDATE 和 DELETE 权限。 空间的 READ 权限。 | 5a0b1afc-e118-4068-969f-b50efb8e5da6 |
令牌管理员 | 访问密钥的 READ 和 UPDATE 权限。 空间的 READ 权限。 | 38a3bb21-5424-43b4-b0bf-78ee228840c3 |
用户 | 空间、传感器和用户(包括其相应的相关对象)的 READ 权限。 | b1ffdb77-c635-4e7e-ad25-948237d85b30 |
支持专家 | 除访问密钥之外的所有内容的 READ 权限。 | 6e46958b-dc62-4e7c-990c-c3da2e030969 |
设备安装员 | 设备和传感器(包括其相应的相关对象)的 READ 和 UPDATE 权限。 空间的 READ 权限。 | b16dd9fe-4efe-467b-8c8c-720e2ff8817c |
网关设备 | 传感器的 CREATE 权限。 设备和传感器的 READ 权限,其中包括相应的相关对象。 | d4c69766-e9bd-4e61-bfc1-d8b6e686c7a8 |
注意
若要检索上述角色的完整定义,请查询系统/角色 API。 阅读创建和管理角色分配了解详细信息。
对象标识符类型
objectIdType
(或对象标识符类型)是指赋予某个角色的标识类型。 除 DeviceId
和 UserDefinedFunctionId
类型外,对象标识符类型与 Azure Active Directory 对象的属性相对应。
下表包含 Azure 数字孪生中支持的对象标识符类型:
类型 | 说明 |
---|---|
UserId | 向用户分配角色。 |
DeviceId | 向设备分配角色。 |
DomainName | 向域名分配角色。 具有指定域名的每位用户都将拥有相应角色的访问权限。 |
TenantId | 向租户分配角色。 属于指定 Azure AD 租户 ID 的每位用户都将拥有相应角色的访问权限。 |
ServicePrincipalId | 向服务主体对象 ID 分配角色。 |
UserDefinedFunctionId | 向用户定义的函数 (UDF) 分配角色。 |
提示
阅读创建和管理角色分配了解如何向服务主体授予权限。
以下参考文档介绍了:
- 如何查询用户的对象 ID。
- 如何获取服务主体的对象 ID。
- 如何检索 Azure AD 租户的对象 ID。
角色分配
Azure 数字孪生角色分配将某个对象(例如用户或 Azure AD 租户)与角色和空间相关联。 向属于该空间的所有对象授予权限。 空间包括其下的整个空间图。
例如,向某用户分配某空间图(代表建筑)的根节点的 DeviceInstaller
角色。 然后,该用户可以读取和更新该节点的设备,以及读取和更新建筑中所有其他子空间的设备。
若要向接收方授予权限,请创建角色分配。 若要撤消权限,请删除角色分配。
重要
阅读创建和管理角色分配了解关于角色分配的详细信息。
后续步骤
若要详细了解如何创建和管理 Azure 数字孪生角色分配,请阅读创建和管理角色分配。
详细了解 适用于 Azure 的 RBAC。