Policy结构简述
Policy结构包括授权语句列表。每个授权语句又包括Permission(操作权限)以及Resource(操作对象列表)。
Policy结构简述如下:
支持JSON格式描述
目前仅支持JSON格式的描述。当创建或更新Policy时,云平台会首先检查JSON格式的正确性。关于JSON的语法标准请参考RFC 7159。用户也可以使用一些在线的JSON格式验证器和编辑器来校验JSON文本的有效性。
Policy语法
语法描述的符号使用说明 :
1. Policy所包含的JSON字符有:
{ } [ ] " , :
2. 描述语法使用的特殊字符有:
= < > ( ) |
3. 当一个元素允许多值时,这里使用逗号和省略号来表达,比如:
[<resource_string>, <resource_string>, ...]
4. 使用双引号引起了的元素,表示它是文本串。比如:
<permission_block> = "Permission" : "<permission_string>, <permission_string>, ..."
语法描述 :
policy = {
<statement_block>
}
<statement_block> = "Statement" : [ <statement>, <statement>, ... ]
<statement> = {
<permission_block>,
<resource_block>
}
<permission_block> = "Permission" : "<permission_string>, <permission_string>, ..."
<resource_block> = "Resource" : [<resource_string>, <resource_string>, ...]
Policy语法说明:
- 一个Policy可以有多条授权语句(Statement)。
- 一条授权语句中,Permission是一个支持多个操作权限的文本串,Resource是一个支持多个对象的列表。
Permission(操作权限)
permission支持多值,取值为萤石开放平台所定义的操作权限名称,包括以下权限:
Permission | 适用资源类型 | 描述 |
---|---|---|
Update | dev、cam | 修改资源,例如修改设备名称、通道名称 |
Get | dev、cam | 查询资源信息,包括配置信息等 |
DevCtrl | dev、cam | 设备完全控制,包括Real、Replay、Capture、Video、Ptz、Upgrade、Format、Pipe、Config等现已定义的设备操作权限和以后定义的设备操作权限 |
Real | dev、cam | 视频预览 |
Replay | dev、cam | 视频回放(包括本地录像回放和云存储回放) |
Capture | dev、cam | 设备抓图 |
Video | dev、cam | 设备录像 |
Ptz | dev、cam | 设备云台控制 |
Upgrade | dev | 设备升级 |
Format | dev | 格式化设备磁盘 |
Pipe | dev | 使用开放平台透明通道功能 |
Config | dev、cam | 配置设备,例如视频加密,布撤防,关联NVR和IPC等 |
备注:当前版本子账户没有添加、删除设备权限;子账户客户端可以把添加、删除设备请求发送到开发者后台服务,后台服务再以开发者的身份调用开放平台接口添加、删除设备。
描述样例: "Permission": "Get,Update,DevCtrl"
Resource(操作对象列表)
Resource通常指操作对象,例如设备、通道。我们使用如下格式来命名资源: {resourceType}:{resourceId}
格式说明:
- resourceType: 表示资源类型,现在只有2种资源类型,dev(设备)、cam(通道);
- resourceId:表示资源Id,dev类型的resourceId是设备序列号,cam类型的resourceId是设备序列号:通道号
描述样例:"Resource": ["dev:469631729","cam:544229080:1"]。
Policy样例
如下的Policy样例包含两条授权语句(Statement):第1条授权语句是允许对469631729设备和544229080:1通道有查询资源信息(Get)、修改信息(Update)、预览(Real)、回放(Replay)等权限;第2条授权语句是允许对470686804设备有查询资源信息(Get)和预览(Real)权限。
{
"Statement": [
{
"Permission": "Get,Update,Real,Replay",
"Resource": [
"dev:469631729",
"cam:544229080:1"
]
},
{
"Permission": "Get,Real",
"Resource": [
"dev:470686804"
]
}
]
}