进阶自定义配置

最后更新时间:2021-02-20 10:06:14

    访问管理概述

    如果您在腾讯云中使用到了移动推送 TPNS (Tencent Push Notification Service)服务,这些服务由不同的人管理,但都共享您的云账号密钥,将存在以下问题:

    • 您的密钥由多人共享,泄密风险高。
    • 您无法限制其它人的访问权限,易产生误操作造成安全风险。

    这个时候,您就可以通过子账号实现不同的人管理不同的服务,来规避以上的问题。默认情况下,子账号没有使用 TPNS 的权利或者 TPNS 相关资源的权限。因此需要创建策略来允许子账号使用他们所需要的资源或权限。
    访问管理(Cloud Access Management,CAM)是腾讯云提供的一套 Web 服务,它主要用于帮助用户安全管理腾讯云账户下的资源的访问权限。通过 CAM,您可以创建、管理和销毁用户(组),并通过身份管理和策略管理控制哪些人可以使用哪些腾讯云资源。
    当您使用 CAM 的时候,可以将策略与一个用户或一组用户关联起来,策略能够授权或者拒绝用户使用指定资源完成指定任务。有关 CAM 策略的更多相关基本信息,请参照访问管理 - 语法逻辑。有关 CAM 策略的更多相关使用信息,请参照 策略

    说明:

    若您不需要对子账户进行 TPNS 相关资源的访问管理,您可以跳过此章节。跳过这部分章节不会影响您对文档中其余部分的理解和使用。

    策略语法说明

    CAM 策略必须授权使用一个或多个 TPNS 操作或者必须拒绝使用一个或多个 TPNS 操作。同时还必须指定可以用于操作的资源(可以是全部资源,某些操作也可以是部分资源)。对于 TPNS 中不支持资源级授权的操作,需要指定为全部资源进行授权。
    CAM 策略语法说明:

    {     
            "version":"2.0", 
            "statement": 
            [ 
               { 
                  "effect":"effect", 
                  "action":["action"], 
                  "resource":["resource"], 
                   "condition": {"key":{"value"}} 
               } 
           ] 
    } 

    参数说明:

    参数名 是否必需 描述
    version 版本号,目前仅允许值为"2.0"。
    statement 用来描述一条或多条权限的详细信息。该元素包括 effect、action、resource,condition 等多个其他元素的权限或权限集合。一条策略有且仅有一个 statement 元素。操作 action 用来描述允许或拒绝的操作。操作可以是 API (以 name 前缀描述)或者功能集(一组特定的 API,以 permid 前缀描述)。
    resource 描述授权的具体数据。资源是用六段式描述。每款产品的资源定义详情会有所区别。有关如何指定资源的信息,请参阅您编写的资源声明所对应的产品文档。
    condition 描述策略生效的约束条件。条件包括操作符、操作键和操作值组成。条件值可包括时间、IP 地址等信息。有些服务允许您在条件中指定其他值。
    effect 描述声明产生的结果是“允许”还是“显式拒绝”。包括 allow (允许)和 deny (显式拒绝)两种情况。

    创建策略并授权

    我们为您预设了两种系统级策略,方便快速进行授权,您可以进入控制台 - 访问管理 - 策略管理 ,单击【新建自定义策略】,选择按策略语法创建,如下图:

    进入“按策略语法创建”页面后,在模板类型中可搜索到 TPNS 提供的两种预设策略模板,分别为全读写权限和只读访问权限(具体权限列表可在创建策略流程中查看),您也可以在选择其中一个权限后编辑,或者新建一个空白模板。

    创建策略后,您可以在控制台 CAM 策略管理 中找到他并将其关联到子用户,完成权限配置。
    以下将描述如何在移动推送 TPNS (Tencent Push Notification Service)中进行访问管理(Cloud Access Management,CAM)授权。

    TPNS 可授权的资源

    资源级权限是指能够指定用户对哪些资源具有执行操作的能力。TPNS 可授权的资源类型为“应用”,意味着您可以以应用为粒度在 CAM 中进行资源级授权,描述方法为:

    qcs::tpns::uin/1000000000:app/*

    其中 * 表示以 App 为粒度的所有资源,可替换为 Access ID,应用的 Access ID 可在控制台 TPNS 的 产品管理 模块中找到,1000000000 为主账号的腾讯云账号 ID 举例,真实 uin 请在控制台 账号信息 页面中找到账号 ID 并将之替换。

    同时授权多个资源请以逗号(,)分隔。

    TPNS 可授权的操作

    在 CAM 策略语句中,您可以从支持 CAM 的任何服务中指定任意的 API 操作。对于 TPNS,请使用以 name/tpns: 为前缀的 API,例如:name/tpns:CreateProduct
    如果您要在单个语句中指定多个操作的时候,请使用逗号将它们隔开,如下所示:

    "action":["tpns:action1","tpns:action2"]

    您也可以使用通配符指定多项操作。例如,您可以指定名字以单词 "Describe" 开头的所有操作,如下所示:

    "action":["tpns:Describe*"]

    如果您要指定 TPNS 中所有操作,请使用 * 通配符,如下所示:

    "action":["tpns:*"]

    可授权操作列表:

    注意:

    仅支持对支持资源级的操作进行应用的授权。

    操作名称 描述 是否支持资源级
    AddChannelInfo 添加厂商通道
    CancelPush 取消定时推送任务
    CreateApp 新建应用
    CreateAppTrialRequest 申请产品试用
    CreateProduct 创建产品
    DeleteAppInfo 删除应用
    DeleteProductInfo 删除产品
    DescribeApnsCertInfo 查询 apns 证书信息
    DescribeAppAllTags 查询所有 tag 信息
    DescribeAppInfo 查询 App 信息
    DescribeAppVipInfo 查询 Vip 信息
    DescribeChannelInfo 查询厂商通道信息
    DescribeProductInfo 查询产品信息
    DescribeTagTokenNums 查询 tag 下面的设备数量
    DownloadPushPackage 推送号码包下载
    DescribeAccountByToken 查询设备上绑定的账号
    DescribeAccountPushStatInfo 查询账号下总推送量
    DescribeAccountPushStatInfoAllZone 查询所有集群下各应用的应发消息总量
    DescribeAppSecretInfo 查询AppSecret信息
    DescribeDeviceStatOverview 查询应用累积和日活设备概览数
    DescribeProductDeviceStatWithRatioOverview 查询应用对应的统计信息
    DescribePushPackaDescribeoken 上传号码包获取 COS 临时 token
    DescribePushTaskGroupStatAllChannel 查询各通道推送的聚合数据
    DescribePushTaskStatAllChannel 查询各个推送通道的数据
    DescribeTagsByToken 查询设备上绑定的标签
    DescribeTokenInfos 查询 tokenInfo 信息
    DescribePushInfos 查询推送列表
    ModifyAppInfo 更新应用信息
    ModifyProductInfo 更新产品信息
    CreatePush 创建推送
    UpdateAppStatus 更新应用状态
    UploadCert iOS 证书上传
    UploadPushPackage 推送号码包上传
    DescribePlanPushInfos 查询推送计划下任务列表
    DescribePushPlans 查询推送计划列表信息
    UpdatePushPlan 修改推送计划
    DeletePushPlan 删除推送计划
    CreatePushPlan 创建推送计划

    运营人员策略示例

    假设运营人员主要职责为查看推送记录和创建推送,那么根据可授权操作列表查询到操作权限:

    • 所有查询操作。
    • 取消定时推送任务。
    • 创建推送。
    • 推送号码包上传接口。
    • 推送号码包下载。

    假设当前主账号 ID 为1000000000,被授权的应用 Access_id 为1500000000和1500000001;
    对应的策略语法则为:

    //
    {
        "version": "2.0",
        "statement": [
            { 
                "action": [
                    "tpns:Describe*",
                    "tpns:CancelPush",
                    "tpns:DownloadPushPackage",
                    "tpns:CreatePush",
                    "tpns:UploadPushPackage"
                ],
                "resource": [
                    "qcs::tpns::uin/1000000000:app/1500000000","qcs::tpns::uin/1000000000:app/1500000001"
                ],
                "effect": "allow"
            },
            {
                "action": [
                    "tpns:Describe*"
                ],
                "resource": [
                    "qcs::tpns::uin/1000000000:other/*"
                ],
                "effect": "allow"
            }
    
         ]
    }

    创建策略完成后,可以在 CAM 策略管理 中找到他并将其关联到子用户,完成权限配置,该策略也可以再次被关联到其他多个子用户。

    开发人员策略示例

    假设开发人员主要职责为接入和测试,我们需要对其授予所有操作权限;
    且假设当前主账号 ID 为1000000000,被授权的应用 Access_id 为1500000000和1500000001;
    对应的策略语法则为:

    //
    {
        "version": "2.0",
        "statement": [
            { 
                "action": "*",
                "resource": [
                    "qcs::tpns::uin/1000000000:app/1500000000","qcs::tpns::uin/1000000000:app/1500000001"
                ],
                "effect": "allow"
            },
            {
                "action": [
                    "tpns:Describe*"
                ],
                "resource": [
                    "qcs::tpns::uin/1000000000:other/*"
                ],
                "effect": "allow"
            }
    
         ]
    }

    创建策略完成后,可以在 CAM 策略管理 中找到他并将其关联到子用户,完成权限配置,该策略也可以再次被关联到其它多个子用户。