
# 权限管理
如果您使用设备接入服务后，需要为企业中的员工设置不同的用户访问权限，以达到不同员工之间的权限隔离，您可以使用统一身份认证服务（Identity and Access Management，简称IAM）进行精细的权限管理。该服务提供用户身份认证、权限分配、访问控制等功能，可以帮助您安全的控制云服务资源的访问。
IAM是华为云提供权限管理的基础服务，无需付费即可使用，您只需要为您账号中的资源进行付费。关于IAM的详细介绍，请参见[《IAM产品介绍》](https://support.huaweicloud.com/productdesc-iam/iam_01_0026.html)。
通过IAM，您可以在华为云账号中给员工创建IAM用户，并授权控制他们对华为云资源的访问范围。例如您的员工中有负责统计数据的人员，您希望他们拥有IoTDA的查看权限，但是不希望他们拥有增删设备接入服务资源等高危操作的权限，那么您可以使用IAM为开发人员创建用户，通过授予仅能使用IoTDA的查看操作，控制其对IoTDA资源的使用范围。
如果华为云账号已经能满足您的要求，不需要创建独立的IAM用户进行权限管理，您可以跳过本章节，不影响您使用设备接入服务的其它功能。
#### IoTDA权限
图1IoTDA权限管理能力
![](https://support.huaweicloud.com/productdesc-iothub/figure/zh-cn_image_0000001745401201.png "点击放大")
默认情况下，管理员创建的IAM用户没有任何权限，需要将其加入用户组，并给用户组授予策略和角色，才能使得用户组中的用户获得策略定义的权限，这一过程称为授权。授权后，用户就可以基于被授予的权限对云服务进行操作。
IoTDA为项目级服务，授权时，"作用范围"需要选择"区域级项目"，然后在指定区域（如华南-广州）对应的项目（cn-south-1）中设置相关权限，并且该权限仅对此项目生效；如果在"所有项目"中设置权限，则该权限在所有区域项目中都生效。访问IoTDA时，需要先切换至授权区域。
设备接入提供"角色"和"策略"两种维度的权限管理。
- 角色：IAM提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度，提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系，因此给用户授予角色时，可能需要一并授予依赖的其他角色，才能正确完成业务。角色并不能满足用户对精细化授权的要求，无法完全达到企业对权限最小化的安全管控要求。
- 策略：IAM提供的一种细粒度授权的能力，可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式，能够满足企业对权限最小化的安全管控要求。例如：针对IoTDA服务，管理员能够控制IAM用户仅能对某一个实例或者资源空间进行指定的管理操作。多数细粒度策略以API接口为粒度进行权限拆分，IoTDA支持的API授权项请参见[权限与授权项说明](https://support.huaweicloud.com/api-iothub/iot_06_v5_0202.html)。
  ![](https://support.huaweicloud.com/productdesc-iothub/public_sys-resources/note_3.0-zh-cn.png)
  当添加了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分钟策略才能生效。
  
 
 表1外部依赖相关功能的权限 
| 服务功能          | 权限                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|
| 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                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   
表2IoTDA系统权限 
| 系统角色/策略名称            | 描述                            | 类别   |
|:---|:---|:---|
| Tenant Administrator | 拥有该权限的用户拥有除IAM外，其他所有服务的所有执行权限 | 系统角色 |
| Tenant Guest         | 拥有该权限的用户拥有除IAM外，其他所有服务的只读权限。  | 系统角色 |
| IoTDA FullAccess     | 拥有设备接入服务所有权限                  | 系统策略 |
| IoTDA ReadOnlyAccess | 拥有设备接入服务只读权限                  | 系统策略 |
   
表3IoTDA操作与资源权限关系 
| 操作名称        | 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控制台进行，配置流程如下：
图2给用户授权IoTDA权限流程   
![](https://support.huaweicloud.com/productdesc-iothub/figure/zh-cn_image_0000001696847514.png)
1. [创建用户组并授权](https://support.huaweicloud.com/usermanual-iam/iam_03_0001.html)：在IAM控制台创建用户组，并授权IoTDA权限，例如IoTDAReadOnlyAccess。
2. [创建用户并加入用户组](https://support.huaweicloud.com/usermanual-iam/iam_02_0001.html)：在IAM控制台创建用户，并将其加入1中创建的用户组。
3. [用户登录](https://support.huaweicloud.com/usermanual-iam/iam_01_0552.html)并验证权限：新创建的用户登录控制台，切换至授权区域，验证权限：
   - 在"服务列表"中选择IoTDA，进入主界面尝试创建设备，如果无法无法成功操作（假设当前权限仅包含IoTDAReadOnlyAccess），表示"IoTDAReadOnlyAccess"已生效。
   
   - 在"服务列表"中选择除IoTDA外（假设当前策略仅包含IoTDAReadOnlyAccess）的任一服务，若提示权限不足，表示"IoTDAReadOnlyAccess"已生效。
    
 
#### 相关链接
- [IAM产品介绍](https://support.huaweicloud.com/productdesc-iam/iam_01_0026.html)
  
- [IAM基础概念](https://support.huaweicloud.com/productdesc-iam/iam_01_0023.html)
  
 
