一、功能介绍
物联网开发平台接入腾讯云访问管理 CAM,可以通过权限策略控制子用户、用户组或角色能够执行哪些操作,以及可以访问哪些 IoT Explorer 资源。
例如,可以为运维人员授予全部只读权限,为开发人员限制部分管理操作,或将支持资源级授权的操作限定在指定产品、设备范围内。对于需要按照地域、团队、客户等维度划分设备的场景,还可以在自定义策略中增加标签条件。
注意:物联网开发平台在 CAM 中的服务简称为 iotexplorer。当前产品整体支持资源级授权和按标签授权,但具体 Action 的授权粒度仍可能是操作级或资源级,配置权限时需要以对应接口的 CAM 定义为准。
二、权限方案选择
根据需要控制的权限范围,可以选择以下方式:
| 权限需求 | 推荐方案 | 主要控制维度 |
| 管理全部 IoT Explorer 资源。 | QcloudIotExplorerFullAccess | 全部管理权限。 |
| 只查看平台资源。 | QcloudIotExplorerReadOnlyAccess | 全部只读权限。 |
| 只允许部分操作。 | 自定义策略。 | Action |
| 限定指定项目、产品或设备。 | 自定义策略。 | Resource,仅适用于支持资源级授权的 Action。 |
| 禁止删除等敏感操作。 | 自定义策略。 | Effect = deny |
| 根据设备标签限制访问范围。 | 自定义策略 + 标签条件。 | Condition |
其中,系统策略和自定义策略是两类主要授权方式;标签权限本质上是在自定义策略中通过 Condition 增加资源标签条件,并不是独立于 CAM 策略之外的另一套权限体系。
三、权限控制模型
CAM 策略主要通过 Action、Resource、Effect 和可选的 Condition 描述权限,可以理解为:允许或拒绝某个身份,在指定条件下,对哪些资源执行哪些操作。
| 策略元素 | 说明 |
| Action | 允许或拒绝执行的操作,例如查询设备、删除设备等。 |
| Resource | Action 可以作用的资源范围。 |
| Effect | allow 表示允许,deny 表示拒绝。 |
| Condition | 可选,用于增加标签等附加授权条件。 |
策略创建完成后,需要关联至对应的子用户、用户组或角色才能生效。现有标签授权文档支持将策略关联至用户、用户组或角色。
四、操作级与资源级授权
物联网开发平台虽然整体属于资源级授权产品,但并不表示每个 Action 都可以限定到具体产品或设备。当前 CAM 将接口划分为:
| 授权粒度 | 说明 |
| 操作级 | 只能控制是否允许调用该 Action,不支持进一步限定具体资源。 |
| 资源级 | 可以通过 Resource 将权限限定到接口支持的具体资源。 |
例如,当前 CAM 接口清单中:
| Action | 授权粒度 | Resource |
| DeleteDevice | 操作级 | * |
| DescribeDevice | 操作级 | * |
| DescribeDevices | 资源级 | 支持设备资源六段式。 |
对于操作级接口,如果策略将 Action 限定到具体 ProductID、DeviceName 等资源,CAM 会判断该接口不在授权范围,最终表现为无权限,而不是仅对指定资源授权失败。具体 Action 的授权粒度及资源六段式可能随接口调整,应以最新的物联网开发平台支持 CAM 的业务接口为准。
五、前提条件
配置权限前,请确认:
·已创建需要授权的子用户、用户组或角色。
·已明确对应账号实际需要执行的 IoT Explorer 操作。
·如需限制项目、产品或设备范围,已获取对应的 ProjectID、ProductID、DeviceName 等资源标识。
·如需按标签控制设备范围,已为相关设备配置对应标签。
控制台操作步骤详见 创建子账号。
六、使用注意事项
·遵循最小权限原则,优先授予账号完成实际工作所需的权限,避免普通账号长期持有 FullAccess。
·IoT Explorer 整体支持资源级授权,不代表所有 Action 都支持限制到具体产品或设备。
·不同 Action 的 Resource 六段式可能不同,应以最新 CAM 接口清单为准。
·CAM 一般遵循显式 Deny 优先于 Allow,但查询资源列表等场景可能存在特殊鉴权行为。
·使用标签权限时,应关注未打标签资源的实际可见范围,严格隔离场景需要单独验证。
·编程访问使用的 SecretId、SecretKey 等凭证应妥善保管,不应写入公开代码仓库或客户端程序。
七、使用系统策略
当账号需要访问全部 IoT Explorer 资源时,可以直接使用平台提供的系统策略。
| 系统策略 | 权限范围 | 适用场景 |
| QcloudIotExplorerFullAccess | IoT Explorer 全部管理权限。 | 平台管理员等需要完整管理能力的账号。 |
| QcloudIotExplorerReadOnlyAccess | IoT Explorer 全部只读权限。 | 运维查看、监控、审计等场景。 |
QcloudIotExplorerReadOnlyAccess 可用于查看主账号下的 IoT Explorer 资源,但不能执行修改操作;授予 QcloudIotExplorerFullAccess 后,子账号可以查看、修改和删除主账号可访问的产品、设备等数据,因此应谨慎授予。
如果系统策略权限范围过大,或无法满足指定操作、指定资源的授权需求,应使用自定义策略。
八、使用自定义策略
自定义策略适用于需要进一步控制操作范围或资源范围的场景。创建策略时,服务选择 iotexplorer,再根据实际需求配置 Action、Resource、Effect 和可选 Condition。
| 配置项 | 说明 |
| 服务 | iotexplorer |
| Action | 需要允许或拒绝的 IoT Explorer 操作。 |
| Resource | Action 作用的资源范围。 |
| Effect | allow 或 deny。 |
| Condition | 可选,用于增加标签等限制条件。 |
现有 如何给子账号配置 CAM 权限 支持通过策略生成器选择 iotexplorer 服务、指定 API,并选择全部资源或特定资源,也支持直接使用策略语法创建自定义策略。
九、按操作限制权限
如果只需要开放部分能力,可以只授权业务需要的 Action;如果账号已经拥有较大范围的 Allow 权限,但需要禁止删除等敏感操作,可以增加 Deny 策略。
例如:
{ "version": "2.0", "statement": [ { "effect": "deny", "action": [ "iotexplorer:DeleteStudioProduct", "iotexplorer:DeleteDevice" ], "resource": "*" } ]}
CAM 一般遵循显式 Deny 优先于 Allow 的策略评估逻辑:若请求匹配 Deny,则拒绝访问;未匹配 Deny 且匹配 Allow 时才允许访问。
需要注意,部分查询资源列表等场景存在 Deny 不按通常逻辑生效的特殊情况,因此不建议仅依靠 Deny 实现资源可见性隔离。
十、按资源限制权限
对于支持资源级授权的 Action,可以进一步通过 Resource 限定具体项目、产品或设备。
| 资源层级 | 常用资源标识 |
| 项目 | ProjectID |
| 产品 | ProductID |
| 设备 | DeviceName |
物联网开发平台不同 Action 对应的资源六段式可能不同。例如部分资源包含 Region、UIN、ProjectID、ProductID 和 DeviceName,而部分接口只支持到产品或项目层级。
因此,不建议统一套用固定的 Resource 模板,应根据目标 Action 在 CAM 接口列表中对应的授权粒度和资源六段式配置。
产品级权限的策略生成和关联方式可参见 如何给子账号配置 CAM 权限 。
十一、按设备标签限制访问范围
如果需要按照地域、团队、客户等维度进一步划分设备范围,可以为设备配置标签,并在自定义策略中通过 Condition 设置资源标签条件。
例如,设备标签为:
| 配置项 | 示例 |
| 标签键 | location |
| 标签值 | shenzhen |
| Condition Key | qcs:resource_tag |
| 条件值 | location&shenzhen |
现有 IoT Explorer 标签权限示例使用:
{ "version": "2.0", "statement": [ { "effect": "allow", "action": [ "iotexplorer:GetDeviceList", "tag:DescribeResourceTags" ], "resource": "*", "condition": { "for_any_value:string_equal": { "qcs:resource_tag": [ "location&shenzhen" ] } } } ]}
其中标签条件采用 标签键&标签值 的格式,例如 location&shenzhen。
十二、验证与排查
权限配置完成后,建议使用对应子账号实际验证资源可见范围和操作权限。
| 现象 | 优先排查 |
| 子账号看不到产品或设备。 | 查询相关 Action 是否已授权,策略是否已正确关联。 |
| 接口返回 UnauthorizedOperation。 | Action、授权粒度、Resource、Condition 是否正确。 |
| 已限定某个产品,但部分功能仍提示无权限。 | 对应 Action 是否只支持操作级授权。 |
| 已配置 Allow 但仍被拒绝。 | 是否存在匹配的 Deny 或其他权限策略。 |
| 标签设备不可见。 | 标签 Condition、标签相关权限和实际 Action。 |
| 未设置标签的设备仍可见。 | 当前标签授权示例本身存在该行为,应重新评估隔离策略。 |
排查时应优先确认实际调用的 Action,再检查该 Action 的授权粒度和资源格式。
对于操作级接口,不应尝试通过具体产品或设备 Resource 对其进行资源隔离。