tencent cloud

文档反馈

自定义策略

最后更新时间:2024-02-19 11:52:29
    注意:
    本文档主要介绍__即时通信 IM__ 访问管理功能的相关内容,其他产品访问管理相关内容请参见 支持 CAM 的产品
    在 IM 访问管理中使用 预设策略 来实现授权虽然方便,但权限控制粒度较粗,不能细化到 IM 应用和 云 API 粒度。如果开发者要求精细的权限控制能力,则需要创建自定义策略。

    自定义策略创建方法

    自定义策略有多种创建方法,下方表格展示各种方法的对比,具体操作流程请参考下文。
    创建入口
    创建方法
    效力(Effect)
    资源(Resource)
    操作(Action)
    灵活性
    难度
    策略生成器
    手动选择
    语法描述
    手动选择
    策略语法
    语法描述
    语法描述
    语法描述
    CAM 服务端 API
    语法描述
    语法描述
    语法描述
    
    说明:
    IM __不支持__按产品功能或项目来创建自定义策略。
    __手动选择__指用户在控制台所展示的候选项列表中选择对象。
    __语法描述__指通过 授权策略语法 来描述对象。

    授权策略语法

    资源语法描述

    如上文所述,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 应用进行任何操作。
    1. 以腾讯云 主账号 的身份访问 CAM 控制台的策略,单击新建自定义策略
    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. 单击完成完成自定义策略的创建。
    后续将该策略授予其他子账号的方法同 将 IM 全读写访问权限授予已存在的子账号

    使用策略语法

    在下文示例中,我们将创建一个自定义策略。该策略允许对1400000001和1400000002这两个即时通信 IM 应用进行任何操作。
    1. 以腾讯云 主账号 的身份访问 CAM 控制台的策略,单击新建自定义策略
    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"
    ]
    }
    ]
    }
    说明:
    策略内容需遵循 CAM 策略语法逻辑,其中资源和操作两个元素的语法请参见上文 资源语法描述操作语法描述 所述。
    6. 单击创建策略完成自定义策略的创建。 后续将该策略授予其他子账号的方法同 将 IM 全读写访问权限授予已存在的子账号

    使用 CAM 提供的服务端 API

    对于大多数开发者来说,在控制台完成权限管理操作已经能满足业务需求。但如果需要将权限管理能力自动化和系统化,则可以基于服务端 API 来实现。 策略相关的服务端 API 属于 CAM,具体请参见 CAM 官网文档。此处仅列出几个主要接口:
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持