云服务器内容精选

  • 响应示例 状态码: 200 OK { "app_id" : "jeQDJQZltU8iKgFFoW060F5SGZka", "policy_id" : "d4922d8a-6c8e-4396-852c-164aefa6638f", "policy_name" : "myPolicy", "statement" : [ { "effect" : "ALLOW", "actions" : [ "iotda:devices:publish", "iotda:devices:subscribe" ], "resources" : [ "topic:/v1/${devices.deviceId}/test/hello", "topic:/v1/${devices.productId}/test/hello" ] } ], "create_time" : "20230810T070547Z", "update_time" : "20230810T070547Z" }
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 app_id String 参数说明:资源空间ID。 policy_id String 策略ID。 policy_name String 策略名称。 statement Array of Statement objects 策略文档。 create_time String 在 物联网平台 创建策略的时间。格式:yyyyMMdd'T'HHmmss'Z',如20151212T121212Z。 update_time String 在物联网平台更新策略的时间。格式:yyyyMMdd'T'HHmmss'Z',如20151212T121212Z。 表4 Statement 参数 参数类型 描述 effect String 指定是允许还是拒绝该操作。既有允许(ALLOW)又有拒绝(DENY)的授权语句时,遵循拒绝(DENY)优先的原则。 ALLOW:允许。 DENY:拒绝。 actions Array of strings 用于指定策略允许或拒绝的操作。格式为:服务名:资源:操作。当前支持的操作类型如下: iotda:devices:publish:设备使用MQTT协议发布消息。 iotda:devices:subscribe:设备使用MQTT协议订阅消息。 resources Array of strings 用于指定允许或拒绝对其执行操作的资源。格式为:资源类型:资源名称。如设备订阅的资源为:topic:/v1/${devices.deviceId}/test/hello。 取值范围:资源列表长度最小为1,最大为10,列表中的资源取值范围:仅支持字母,数字,以及/{}$=+#?*:._-组合。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 否 String 参数说明:用户Token。通过调用 IAM 服务 获取IAM用户Token接口获取,接口返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。简要的获取方法样例请参见 Token认证。 Instance-Id 否 String 参数说明:实例ID。物理多租下各实例的唯一标识,建议携带该参数,在使用专业版时必须携带该参数。您可以在IoTDA管理控制台界面,选择左侧导航栏“总览”页签查看当前实例的ID,具体获取方式请参考查看实例详情 。
  • 策略通配符 策略中具有不同的通配符,使用前需注意。在策略中,“*”表示字符的任意组合,问号“? ”表示任何单个字符,而通配符“+”和“#”被视为没有特殊含义的字符。 表3 策略通配符 通配符 是MQTT通配符 策略配置是否适用 MQTT中主题示例 适用于MQTT主题示例的策略示例 # 是 否 test/# 不适用,“#”被视为没有特殊含义的字符。 + 是 否 test/+/some 不适用,“+”被视为没有特殊含义的字符。 * 否 是 不适用,“*”被视为没有特殊含义的字符。 test/* test/*/some ? 否 是 不适用,“?”被视为没有特殊含义的字符。 test/????/some test/set?????/some 定义策略通配符示例: { "app_id": "jeQDJQZltU8iKgFFoW060F5SGZka", "policy_id": "5c90fa7d3c4e4405e8525079", "policy_name": "myPolicy", "statement": [ { "effect": "ALLOW", "actions": [ "iotda:devices:publish" ], "resources": [ "topic:test/????/some", "topic:test/set?????/some" ] } ], "create_time": "20190303T081011Z", "update_time": "20190303T081011Z" }
  • 策略变量 在策略中定义resource时,如果不知道对设备资源或条件键的精确值,可以使用策略变量作为占位符,进行发布/订阅主题筛选。策略变量在校验MQTT的主题时,会把变量变为接入设备对应的ID值,再进行匹配。 变量使用前缀“$”标记,后面跟一对大括号“{ }”,其中包含请求中值的变量名称。现如今支持的变量如下表,假设MQTT设备是在客户端ID为test_clientId,产品ID为test_productId,设备ID为test_deviceId。 表4 策略变量 策略变量 描述 MQTT中主题示例 适用于MQTT主题示例的策略示例 ${devices.deviceId} 设备ID test/test_deviceId/topic test/${devices.deviceId}/topic ${devices.clientId} 客户端ID test/test_clientId/topic test/${devices.clientId}/topic ${devices.productId} 产品ID test/test_productId/topic test/${devices.productId}/topic 定义策略变量示例: { "app_id": "jeQDJQZltU8iKgFFoW060F5SGZka", "policy_id": "5c90fa7d3c4e4405e8525079", "policy_name": "myPolicy", "statement": [ { "effect": "ALLOW", "actions": [ "iotda:devices:publish", "iotda:devices:subscribe" ], "resources": [ "topic:test/${devices.deviceId}/topic" ] } ], "create_time": "20190303T081011Z", "update_time": "20190303T081011Z" }