权限管理
如果您使用设备接入服务后,需要为企业中的员工设置不同的用户访问权限,以达到不同员工之间的权限隔离,您可以使用统一身份认证服务(Identity and Access Management,简称IAM)进行精细的权限管理。该服务提供用户身份认证、权限分配、访问控制等功能,可以帮助您安全的控制云服务资源的访问。
IAM是华为云提供权限管理的基础服务,无需付费即可使用,您只需要为您账号中的资源进行付费。关于IAM的详细介绍,请参见《IAM产品介绍》。
通过IAM,您可以在华为云账号中给员工创建IAM用户,并授权控制他们对华为云资源的访问范围。例如您的员工中有负责统计数据的人员,您希望他们拥有IoTDA的查看权限,但是不希望他们拥有增删设备接入服务资源等高危操作的权限,那么您可以使用IAM为开发人员创建用户,通过授予仅能使用IoTDA的查看操作,控制他们对IoTDA资源的使用范围。
如果华为云账号已经能满足您的要求,不需要创建独立的IAM用户进行权限管理,您可以跳过本章节,不影响您使用设备接入服务的其它功能。
IoTDA权限
默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略和角色,才能使得用户组中的用户获得策略定义的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。
IoTDA为项目级服务,授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如华南-广州)对应的项目(cn-south-1)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问IoTDA时,需要先切换至授权区域。
- 角色:IAM提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。
- 策略:IAM提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对IoTDA服务,管理员能够控制IAM用户仅能对某一个实例或者资源空间进行指定的管理操作。多数细粒度策略以API接口为粒度进行权限拆分,IoTDA支持的API授权项请参见权限与授权项说明。
当添加了IoTDA FullAccess权限的子账号在Console控制台界面使用其他功能时仍没有操作权限,需要您单独添加对应服务或功能的Admin或者FullAccess权限。具体详情如下:
- GSL、DIS当前不支持细粒度鉴权,需要添加对应admin权限。
- BCS、FunctionGraph,SMN,OBS,SWR,AOM,IAM,LTS,VPC,TMS,DMS(Kafka),VPCEP 等,FullAccess中缺少对应权限,需单独添加;
更多相关功能需要的权限,请参见表1所示。
由于缓存的存在,对用户、用户组授予IoTDA相关的角色后,大概需要等待15分钟角色才能生效;授予IoTDA相关的策略后,大概需要等待5分钟策略才能生效。
服务功能 |
权限 |
---|---|
BCS |
bcs:huaweiCloudChainInstance:list bcs:huaweiCloudChainEndpoint:list bcs:huaweiCloudChainChain:getChain bcs:huaweiCloudChainInstance:get bcs:huaweiCloudChainContract:list |
FunctionGraph |
FunctionGraph:function:list |
SMN |
smn:topic:list |
OBS |
obs:bucket:ListAllMyBuckets obs:bucket:ListBucket |
SWR |
swr:repository:listNamespaces swr:instance:listCenters |
AOM |
aom:alarm:list aom:metric:list |
IAM |
iam:projects:listProjects iam:permissions:listRolesForAgency iam:permissions:listRolesForAgencyOnProject iam:permissions:checkRoleForAgencyOnProject iam:permissions:grantRoleToAgencyOnProject iam:roles:listRoles iam:agencies:createAgency iam:agencies:listAgencies |
LTS |
lts:topics:list lts:groups:list lts:groups:create lts:topics:create |
VPC |
vpc:vpcs:list vpc:subnets:get vpc:securityGroups:get |
TMS |
tms:predefineTags:list |
DMS(Kafka) |
dms:instance:list dms:instance:get |
VPCEP |
vpcep:endpointServices:list vpcep:endpointServices:get |
系统角色/策略名称 |
描述 |
类别 |
---|---|---|
Tenant Administrator |
拥有该权限的用户拥有除IAM外,其他所有服务的所有执行权限 |
系统角色 |
Tenant Guest |
拥有该权限的用户拥有除IAM外,其他所有服务的只读权限。 |
系统角色 |
IoTDA FullAccess |
拥有设备接入服务所有权限 |
系统策略 |
IoTDA ReadOnlyAccess |
拥有设备接入服务只读权限 |
系统策略 |
操作名称 |
Tenant Administrator |
Tenant Guest |
IoTDA FullAccess |
IoTDA ReadOnlyAccess |
---|---|---|---|---|
创建产品 |
√ |
x |
√ |
x |
查询产品列表 |
√ |
√ |
√ |
√ |
查询产品 |
√ |
√ |
√ |
√ |
修改产品 |
√ |
x |
√ |
x |
删除产品 |
√ |
x |
√ |
x |
创建设备 |
√ |
x |
√ |
x |
查询设备列表 |
√ |
√ |
√ |
√ |
查询设备 |
√ |
√ |
√ |
√ |
修改设备 |
√ |
x |
√ |
x |
删除设备 |
√ |
x |
√ |
x |
重置设备密钥 |
√ |
x |
√ |
x |
冻结设备 |
√ |
x |
√ |
x |
解冻设备 |
√ |
x |
√ |
x |
重置设备指纹 |
√ |
x |
√ |
x |
灵活搜索设备列表 |
√ |
√ |
√ |
√ |
下发设备消息 |
√ |
x |
√ |
x |
查询设备消息 |
√ |
√ |
√ |
√ |
查询指定消息id的消息 |
√ |
√ |
√ |
√ |
下发广播消息 |
√ |
x |
√ |
x |
下发设备命令 |
√ |
x |
√ |
x |
下发异步设备命令 |
√ |
x |
√ |
x |
查询指定id的命令 |
√ |
√ |
√ |
√ |
修改设备属性 |
√ |
√ |
√ |
√ |
下发设备消息 |
√ |
x |
√ |
x |
查询指定消息id的消息 |
√ |
√ |
√ |
√ |
查询产品列表 |
√ |
√ |
√ |
√ |
创建产品 |
√ |
x |
√ |
x |
查询产品 |
√ |
√ |
√ |
√ |
修改产品 |
√ |
x |
√ |
x |
删除产品 |
√ |
x |
√ |
x |
查询设备列表 |
√ |
√ |
√ |
√ |
注册设备 |
√ |
x |
√ |
x |
查询设备 |
√ |
√ |
√ |
√ |
修改设备 |
√ |
x |
√ |
x |
删除设备 |
√ |
x |
√ |
x |
重置设备密钥 |
√ |
x |
√ |
x |
查询设备影子数据 |
√ |
√ |
√ |
√ |
配置设备影子预期数据 |
√ |
x |
√ |
x |
下发设备命令 |
√ |
x |
√ |
x |
查询设备属性 |
√ |
√ |
√ |
√ |
修改设备属性 |
√ |
x |
√ |
x |
查询设备属性 |
√ |
√ |
√ |
√ |
查询设备影子数据 |
√ |
√ |
√ |
√ |
配置设备影子预期数据 |
√ |
x |
√ |
x |
创建AMQP队列 |
√ |
x |
√ |
x |
查询AMQP列表 |
√ |
√ |
√ |
√ |
查询单个AMQP队列 |
√ |
√ |
√ |
√ |
删除AMQP队列 |
√ |
x |
√ |
x |
生成接入凭证 |
√ |
x |
√ |
x |
创建规则触发条件 |
√ |
x |
√ |
x |
查询规则条件列表 |
√ |
√ |
√ |
√ |
查询规则条件 |
√ |
√ |
√ |
√ |
修改规则触发条件 |
√ |
x |
√ |
x |
删除规则触发条件 |
√ |
x |
√ |
x |
创建规则动作 |
√ |
x |
√ |
x |
查询规则动作列表 |
√ |
√ |
√ |
√ |
查询规则动作 |
√ |
√ |
√ |
√ |
修改规则动作 |
√ |
x |
√ |
x |
删除规则动作 |
√ |
x |
√ |
x |
创建规则 |
√ |
x |
√ |
x |
查询规则列表 |
√ |
√ |
√ |
√ |
修改规则 |
√ |
x |
√ |
x |
查询规则 |
√ |
√ |
√ |
√ |
删除规则 |
√ |
x |
√ |
x |
修改规则状态 |
√ |
x |
√ |
x |
添加设备组 |
√ |
x |
√ |
x |
查询设备组列表 |
√ |
√ |
√ |
√ |
查询设备组 |
√ |
√ |
√ |
√ |
修改设备组 |
√ |
x |
√ |
x |
删除设备组 |
√ |
x |
√ |
x |
管理设备组中的设备 |
√ |
√ |
√ |
√ |
查询设备组设备列表 |
√ |
√ |
√ |
√ |
绑定标签 |
√ |
x |
√ |
x |
解绑标签 |
√ |
x |
√ |
x |
按标签查询资源 |
√ |
√ |
√ |
√ |
查询资源空间列表 |
√ |
√ |
√ |
√ |
创建资源空间 |
√ |
x |
√ |
x |
查询资源空间 |
√ |
√ |
√ |
√ |
删除资源空间 |
√ |
x |
√ |
x |
创建批量任务 |
√ |
x |
√ |
x |
查询批量任务列表 |
√ |
√ |
√ |
√ |
查询批量任务 |
√ |
√ |
√ |
√ |
批量任务重试 |
√ |
x |
√ |
x |
批量任务停止 |
√ |
x |
√ |
x |
删除批量任务 |
√ |
x |
√ |
x |
上传批量任务文件 |
√ |
x |
√ |
x |
查询批量任务文件列表 |
√ |
√ |
√ |
√ |
删除批量任务文件 |
√ |
x |
√ |
x |
上传设备CA证书 |
√ |
x |
√ |
x |
获取设备CA证书列表 |
√ |
√ |
√ |
√ |
删除设备CA证书 |
√ |
x |
√ |
x |
验证设备CA证书 |
√ |
x |
√ |
x |
创建OTA升级包 |
√ |
x |
√ |
x |
查询OTA升级包列表 |
√ |
√ |
√ |
√ |
获取OTA升级包详情 |
√ |
√ |
√ |
√ |
删除OTA升级包 |
√ |
x |
√ |
x |
查询隧道列表 |
√ |
√ |
√ |
√ |
创建设备隧道 |
√ |
x |
√ |
x |
删除设备隧道 |
√ |
x |
√ |
x |
查询隧道详情 |
√ |
√ |
√ |
√ |
修改设备隧道 |
√ |
x |
√ |
x |
权限配置流程
IoTDA的权限配置和授权都在IAM控制台进行,配置流程如下:
![](https://support.huaweicloud.com/productdesc-iothub/figure/zh-cn_image_0000001696847514.png)
- 创建用户组并授权:在IAM控制台创建用户组,并授权IoTDA权限,例如IoTDAReadOnlyAccess。
- 创建用户并加入用户组:在IAM控制台创建用户,并将其加入1中创建的用户组。
- 用户登录并验证权限:新创建的用户登录控制台,切换至授权区域,验证权限:
- 在“服务列表”中选择IoTDA,进入主界面尝试创建设备,如果无法无法成功操作(假设当前权限仅包含IoTDAReadOnlyAccess),表示“IoTDAReadOnlyAccess”已生效。
- 在“服务列表”中选择除IoTDA外(假设当前策略仅包含IoTDAReadOnlyAccess)的任一服务,若提示权限不足,表示“IoTDAReadOnlyAccess”已生效。