创建设备策略
功能介绍
应用服务器可调用此接口在物联网平台创建一个策略,该策略需要绑定到设备和产品下才能生效。
-
一个实例最多能创建50个设备策略。
-
仅标准版实例、企业版实例支持该接口调用,基础版不支持。
调试
您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。
URI
POST /v5/iot/{project_id}/device-policies
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
project_id |
是 |
String |
参数说明:项目ID。获取方法请参见 获取项目ID。 |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
X-Auth-Token |
否 |
String |
参数说明:用户Token。通过调用IAM服务 获取IAM用户Token接口获取,接口返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。简要的获取方法样例请参见 Token认证。 |
Instance-Id |
否 |
String |
参数说明:实例ID。物理多租下各实例的唯一标识,建议携带该参数,在使用专业版时必须携带该参数。您可以在IoTDA管理控制台界面,选择左侧导航栏“总览”页签查看当前实例的ID,具体获取方式请参考 查看实例详情。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
policy_name |
是 |
String |
参数说明:策略名称。 取值范围:长度不超过128,只允许字母、数字、下划线(_)、连接符(-)的组合。 |
app_id |
否 |
String |
参数说明:资源空间ID。此参数为非必选参数,存在多资源空间的用户需要使用该接口时,建议携带该参数指定创建的设备归属到哪个资源空间下,否则创建的设备将会归属到默认资源空间下。 取值范围:长度不超过36,只允许字母、数字、下划线(_)、连接符(-)的组合。 |
statement |
是 |
Array of Statement objects |
参数说明:策略文档。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
effect |
是 |
String |
指定是允许还是拒绝该操作。既有允许(ALLOW)又有拒绝(DENY)的授权语句时,遵循拒绝(DENY)优先的原则。
|
actions |
是 |
Array of strings |
用于指定策略允许或拒绝的操作。格式为:服务名:资源:操作。当前支持的操作类型如下:
|
resources |
是 |
Array of strings |
用于指定允许或拒绝对其执行操作的资源。格式为:资源类型:资源名称。如设备订阅的资源为:topic:/v1/${devices.deviceId}/test/hello。 取值范围:资源列表长度最小为1,最大为10,列表中的资源取值范围:仅支持字母,数字,以及/{}$=+#?*:._-组合。 |
响应参数
状态码: 201
参数 |
参数类型 |
描述 |
---|---|---|
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。 |
参数 |
参数类型 |
描述 |
---|---|---|
effect |
String |
指定是允许还是拒绝该操作。既有允许(ALLOW)又有拒绝(DENY)的授权语句时,遵循拒绝(DENY)优先的原则。
|
actions |
Array of strings |
用于指定策略允许或拒绝的操作。格式为:服务名:资源:操作。当前支持的操作类型如下:
|
resources |
Array of strings |
用于指定允许或拒绝对其执行操作的资源。格式为:资源类型:资源名称。如设备订阅的资源为:topic:/v1/${devices.deviceId}/test/hello。 取值范围:资源列表长度最小为1,最大为10,列表中的资源取值范围:仅支持字母,数字,以及/{}$=+#?*:._-组合。 |
请求示例
-
创建设备策略-允许设备订阅与发布指定topic
POST https://{endpoint}/v5/iot/{project_id}/device-policies { "policy_name" : "myPolicyAllow", "app_id" : "jeQDJQZltU8iKgFFoW060F5SGZka", "statement" : [ { "effect" : "ALLOW", "actions" : [ "iotda:devices:publish\niotda:devices:subscribe" ], "resources" : [ "topic:/v1/${devices.deviceId}/test/allow" ] } ] }
-
创建设备策略-不允许设备订阅与发布指定topic
POST https://{endpoint}/v5/iot/{project_id}/device-policies { "policy_name" : "myPolicyDeny", "app_id" : "jeQDJQZltU8iKgFFoW060F5SGZka", "statement" : [ { "effect" : "DENY", "actions" : [ "iotda:devices:publish\niotda:devices:subscribe" ], "resources" : [ "topic:/v1/${devices.deviceId}/test/deny" ] } ] }
响应示例
状态码: 201
Created
{ "app_id" : "jeQDJQZltU8iKgFFoW060F5SGZka", "policy_id" : "5c90fa7d3c4e4405e8525079", "policy_name" : "testPolicy", "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" }
状态码
状态码 |
描述 |
---|---|
201 |
Created |
400 |
Bad Request |
401 |
Unauthorized |
403 |
Forbidden |
500 |
Internal Server Error |
错误码
请参见错误码。