访问管理概述
如果您在腾讯云中使用到了移动推送(Tencent Push Notification Service)服务,这些服务由不同的人管理,但都共享您的云账号密钥,将存在以下问题:
您的密钥由多人共享,泄密风险高。
您无法限制其它人的访问权限,易产生误操作造成安全风险。
这个时候,您就可以通过子账号实现不同的人管理不同的服务,来规避以上的问题。默认情况下,子账号没有使用移动推送的权利或者移动推送相关资源的权限。因此需要创建策略来允许子账号使用他们所需要的资源或权限。
访问管理(Cloud Access Management,CAM)是腾讯云提供的一套 Web 服务,它主要用于帮助用户安全管理腾讯云账户下的资源的访问权限。通过 CAM,您可以创建、管理和销毁用户(组),并通过身份管理和策略管理控制哪些人可以使用哪些腾讯云资源。
当您使用 CAM 的时候,可以将策略与一个用户或一组用户关联起来,策略能够授权或者拒绝用户使用指定资源完成指定任务。有关 CAM 策略的更多相关基本信息,请参照 语法逻辑。有关 CAM 策略的更多相关使用信息,请参照 策略。
说明
若您不需要对子账户进行移动推送相关资源的访问管理,您可以跳过此章节。跳过这部分章节不会影响您对文档中其余部分的理解和使用。
策略语法说明
CAM 策略必须授权使用一个或多个移动推送操作或者必须拒绝使用一个或多个移动推送操作。同时还必须指定可以用于操作的资源(可以是全部资源,某些操作也可以是部分资源)。对于移动推送中不支持资源级授权的操作,需要指定为全部资源进行授权。
CAM 策略语法说明:
{"version":"2.0","statement":[{"effect":"effect","action":["action"],"resource":["resource"],"condition": {"key":{"value"}}}]}
参数说明:
参数名 | 是否必需 | 描述 |
version | 是 | 版本号,目前仅允许值为"2.0"。 |
statement | 是 | 描述一条或多条权限的详细信息。该元素包括 action、resource、condition、effect 等多个其他元素的权限或权限集合。一条策略有且仅有一个 statement 元素。 |
action | 是 | 描述允许或拒绝的操作。操作可以是 API(以 name 前缀描述)或者功能集(一组特定的 API,以 actionName 前缀描述)。 |
resource | 是 | 描述授权的具体数据。资源是用六段式描述。每款产品的资源定义详情会有所区别。有关如何指定资源的信息,请参阅您编写的资源声明所对应的产品文档。 |
condition | 否 | 描述策略生效的约束条件。条件包括操作符、操作键和操作值组成。条件值可包括时间、IP 地址等信息。有些服务允许您在条件中指定其他值。 |
effect | 是 | 描述声明产生的结果是“允许”还是“显式拒绝”。包括 allow (允许)和 deny (显式拒绝)两种情况。 |
创建策略并授权
我们为您预设了两种系统级策略,方便快速进行授权,您可以进入控制台 > 访问管理 > 策略管理 ,单击新建自定义策略,选择按策略语法创建,如下图:
进入“按策略语法创建”页面后,在模板类型中可搜索到移动推送提供的两种预设策略模板,分别为全读写权限和只读访问权限(具体权限列表可在创建策略流程中查看),您也可以在选择其中一个权限后编辑,或者新建一个空白模板。
创建策略后,您可以在控制台 CAM 策略管理 中找到它并将其关联到子用户,完成权限配置。
以下将描述如何在移动推送中进行 CAM 授权。
移动推送可授权的资源
资源级权限是指能够指定用户对哪些资源具有执行操作的能力。移动推送可授权的资源类型为“应用”,意味着您可以以应用为粒度在 CAM 中进行资源级授权,描述方法为:
qcs::tpns::uin/1000000000:app/*
其中 * 表示以 App 为粒度的所有资源,可替换为 Access ID,应用的 Access ID 可在控制台移动推送的 产品管理 模块中找到,1000000000 为主账号的腾讯云账号 ID 举例,真实 uin 请在控制台 账号信息 页面中找到账号 ID 并将之替换。
同时授权多个资源请以逗号(,)分隔。
移动推送可授权的操作
在 CAM 策略语句中,您可以从支持 CAM 的任何服务中指定任意的 API 操作。对于 移动推送,请使用以
name/tpns:
为前缀的 API,例如:name/tpns:CreateProduct
。
如果您要在单个语句中指定多个操作的时候,请使用逗号将它们隔开,如下所示:"action":["tpns:action1","tpns:action2"]
您也可以使用通配符指定多项操作。例如,您可以指定名字以单词 "Describe" 开头的所有操作,如下所示:
"action":["tpns:Describe*"]
如果您要指定移动推送中所有操作,请使用 * 通配符,如下所示:
"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 | 查询应用对应的统计信息 | 是 |
DescribePushPackageToken | 上传号码包获取 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"}]}
开发人员策略示例
假设开发人员主要职责为接入和测试,我们需要对其授予所有操作权限。
且假设当前主账号 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"}]}