子账号功能说明
功能说明
子账号对接模式主要的作用是控制开发者管理员账户的权限,通过使用子账号对接模式可以在开发者管理员账户的权限范围内创建子账号,给不同的子账号分配不同的权限从而实现授权管理的目的。
为什么要使用子账号对接模式
子账号需要解决的一个核心问题是如何在不暴露开发者AccessToken的情况下安全的授权别人访问设备。因为一旦开发者的AccessToken暴露出去会带来安全风险,别人可以有机会操作开发者管理员账户下所有的设备资源。
子账号功能是一种长期有效的权限控制机制,通过分出不同权限的子账号,将不同的权限分给不同的用户,这样一旦子账号泄露也不会造成全局的信息泄露。
基本概念
以下是子账号对接模式的一些基本概念:
子账号:从乐橙开放平台开发者账号中创建出来的子账号,每个子账号有一个Id。
授权策略(Policy):用来定义权限的规则,比如预览某个设备。
资源(Resource):用户可以访问的资源,比如序列号为469631729的设备,或者序列号为469631729的设备的第1个通道;
子账号授权策略(Policy)配置
Policy当中有一个Statement。Statement里面规定了相应的permission、resource。
下面是一个授权策略(Policy)示例:
{
"statement": [
{
"permission": "Ptz,Talk,Config",
"resource": [
"dev:469631729",
"cam:544229080:1"
]
},
{
"permission": "Real",
"resource": [
"dev:470686804"
]
}
]
}
这个Policy把开发者管理员账号下的469631729、544229080、470686804等设备资源进行授权,并且分别支持Ptz,Talk,Config,Real权限。
配置细则
Statement
通过Statement描述授权语义,每条包含对Permission、Resource的描述。每次请求系统会逐条依次匹配检查,如果匹配成功的都为通过,该条请求即鉴权通过。如果没有任何条目匹配成功,该条请求被禁止访问。
permission
permission | 适用资源类型 | 权限描述 |
---|---|---|
Alarm | dev、cam | 设备告警消息查询 |
Config | dev、cam | 设备配置权限 |
Ptz | dev、cam | 云台控制 |
Capture | dev、cam | 设备抓图 |
Upgrade | dev | 设备升级 |
Format | dev | 格式化SD卡 |
Real | dev、cam | 实时预览 |
RecordReplay | dev、cam | 录像回放(包含云录像和本地录像) |
Talk | dev、cam | 语音对讲 |
DevControl | dev、cam | 设备完全控制,包括Real、Talk、RecordReplay、Alarm、Capture、Ptz、Upgrade、Format、Config等现已定义的设备操作权限和以后定义的设备操作权限 |
Resource
Resource是指乐橙开放平台上被授权的某个具体对象,resource的规则是 {resourceType}:{resourceId};
resourceType: 表示资源类型,现在只有2种资源类型,dev(设备)、cam(通道);
resourceId:表示资源Id,dev类型的resourceId是设备序列号,cam类型的resourceId是设备序列号:通道号。
隶属关系
cam资源隶属于dev资源,子账户对dev资源的权限可传递到cam资源。例如,有2个资源dev:544229080和cam:544229080:1,cam:544229080:1隶属于dev:544229080;如果开发者把dev:544229080资源的Real权限授权给子账户,则该子账户默认对cam:544229080:1拥有Real权限。