自定义策略
注意:
自定义策略创建方法
自定义策略有多种创建方法,下方表格展示各种方法的对比,具体操作流程请参考下文。
创建入口 | 创建方法 | 效力(Effect) | 资源(Resource) | 操作(Action) | 灵活性 | 难度 |
策略生成器 | 手动选择 | 语法描述 | 手动选择 | 中 | 中 | |
策略语法 | 语法描述 | 语法描述 | 语法描述 | 高 | 高 | |
CAM 服务端 API | 语法描述 | 语法描述 | 语法描述 | 高 | 高 |
授权策略语法
资源语法描述
如上文所述,IM 权限管理的资源粒度是应用。应用的策略语法描述方式遵循 CAM 资源描述方式。在下文的示例中,开发者的主账号 ID 是12345678,开发者创建了三个应用:SDKAppID 分别是1400000000、1400000001和1400000002。
即时通信 IM 所有应用的策略语法描述
"resource": ["qcs::im::uin/12345678:sdkappid/*"]
单个应用的策略语法描述
"resource": ["qcs::im::uin/12345678:sdkappid/1400000001"]
多个应用的策略语法描述
"resource": ["qcs::im::uin/12345678:sdkappid/1400000000","qcs::im::uin/12345678:sdkappid/1400000001"]
操作语法描述
如上文所述,实时音视频权限管理的操作粒度是云 API。在下文的示例中,以
DescribeAppStatList
(获取应用列表)、DescribeSdkAppInfo
(获取应用信息)等云 API 为例。即时通信 IM 所有云 API 的策略语法描述
"action": ["name/im:*"]
单个云 API 操作的策略语法描述
"action": ["name/im:DescribeAppStatList"]
多个云 API 操作的策略语法描述
"action": ["name/im:DescribeAppStatList","name/im:DescribeTrtcAppAndAccountInfo"]
自定义策略使用示例
使用策略生成器
在下文示例中,我们将创建一个自定义策略。该策略允许对1400000001这个即时通信 IM 应用进行任何操作。
2. 选择按策略生成器创建,进入策略创建页面。
3. 选择服务和操作。
效果(Effect)配置项选择允许。
服务(Service)配置项选择即时通信 IM。
**操作(Action)**配置项勾选所有项。
**资源(Resource)**配置项按照 资源语法描述 说明填写
qcs::im::uin/12345678:sdkappid/1400000001
。**条件(Condition)**配置项无需配置。
单击添加声明,页面最下方会出现一条“允许对即时通信 IM 应用1400000001进行任何操作”的声明。
4. 在同个页面中继续添加另一条声明。
效果(Effect)配置项选择拒绝。
服务(Service)配置项选择即时通信 IM。
**操作(Action)**配置项勾选
RemoveUser
(可通过搜索功能快速查找)。**资源(Resource)**配置项按照 资源语法描述 说明填写
qcs::im::uin/12345678:sdkappid/1400000001
。**条件(Condition)**配置项无需配置。
单击添加声明,页面最下方会出现一条“拒绝对即时通信 IM 应用1400000001进行
RemoveUser
操作”的声明。5. 单击下一步,按需修改策略名称(也可以不修改)。
6. 单击完成完成自定义策略的创建。
使用策略语法
在下文示例中,我们将创建一个自定义策略。该策略允许对1400000001和1400000002这两个即时通信 IM 应用进行任何操作。
2. 选择按策略语法创建,进入策略创建页面。
3. 在选择模板类型框下选择空白模板。
说明:
策略模板指新策略是现有策略(预置策略或自定义策略)的一个拷贝,然后在此基础上做调整。在实际使用中,开发者可以根据情况选择合适的策略模板,降低编写策略内容的难度和工作量。
4. 单击下一步,按需修改策略名称(也可以不修改)。
5. 在编辑策略内容编辑框中填写策略内容。本示例的策略内容为:
{"version": "2.0","statement": [{"effect": "allow","action": ["name/im:*"],"resource": ["qcs::im::uin/12345678:sdkappid/1400000001","qcs::im::uin/12345678:sdkappid/1400000002"]},{"effect": "deny","action": ["name/im:RemoveUser"],"resource": ["qcs::im::uin/12345678:sdkappid/1400000001"]}]}
说明:
6. 单击创建策略完成自定义策略的创建。
后续将该策略授予其他子账号的方法同 将 IM 全读写访问权限授予已存在的子账号。
使用 CAM 提供的服务端 API
对于大多数开发者来说,在控制台完成权限管理操作已经能满足业务需求。但如果需要将权限管理能力自动化和系统化,则可以基于服务端 API 来实现。
策略相关的服务端 API 属于 CAM,具体请参见 CAM 官网文档。此处仅列出几个主要接口: