概述
访问策略可用于授予访问终端性能监控 Pro 相关的权限。访问策略使用基于 JSON 的访问策略语言。您可以通过访问策略语言授权指定委托人(principal)执行指定的操作。
创建自定义策略
CAM 支持如下三种方式创建自定义策略,请参考对应的帮助文档完成自定义策略的创建。
策略语法
CAM 策略的基本结构如下:
{"version": "2.0","statement": [{"effect": "effect","action": ["action"],"resource": ["resource"],"condition": { "key": { "value": "value" } }}]}
元素 | 是否必填 | 说明 |
version | 是 | 版本号,目前仅允许填写 2.0。 |
statement | 是 | 描述一条或多条权限,一条策略有且仅有一个 statement 元素。 |
effect | 是 | 声明结果是允许还是显式拒绝,取值 allow(允许)或 deny(显式拒绝)。 |
action | 是 | 允许或拒绝的操作。终端性能监控 Pro 的操作以 rum: 为前缀,例如 rum:DescribeIssues、rum:*。详见下文的 action 元素说明。 |
resource | 是 | 授权的资源。终端性能监控 Pro 的接口均为操作级,统一填写 *。 |
condition | 否 | 策略生效的约束条件,包括操作符、操作键和操作值。 |
说明:
终端性能监控 Pro 的精细化授权只能到操作级(按接口授权),即在
action 中列出允许或拒绝的具体接口,接口名可在 访问管理控制台 的策略编辑器中挑选。若需要按应用、业务系统等维度隔离权限,当前不支持。action 元素示例如下:"action": ["rum:DescribeIssues","rum:DescribeIssueDetail"]
资源描述
资源(resource)元素描述操作对象。终端性能监控 Pro 在 CAM 中的所属产品为「终端性能监控」,产品简称
rum,六段式的完整格式如下:qcs:project_id:service_type:region:account:resource
参数 | 描述 | 是否必选 |
qcs | qcloud service 的简称,表示是腾讯云的云服务。 | 是 |
project_id | 描述应用信息,仅为了兼容 CAM 早期逻辑。该位置可不填(一般留空),属于兼容性字段,不影响鉴权结果。 | 否 |
service_type | 产品简称,终端性能监控 Pro 为 rum。 | 是 |
region | 终端性能监控 Pro 不区分地域,留空即可。 | 否 |
account | 资源拥有者的主账号 ID,表示为 uin/${OwnerUin},如 uin/100000000001。 | 是 |
resource | 资源详情。终端性能监控 Pro 的接口均为操作级,统一填写 *。 | 是 |
说明:
终端性能监控 Pro 的接口全部为操作级,
resource 必须填写 *;若在策略中限定了具体资源,CAM 会判定该接口不在授权范围内,直接视为无权限。因此本产品的精细化授权只能按 action(接口)维度进行,不支持按应用、业务系统等资源维度隔离。各接口的授权粒度以 CAM 控制台策略详情页中的说明为准。
参考示例
示例1:按操作授权(完整管理权限)
允许调用终端性能监控 Pro 的全部接口。
{"version": "2.0","statement": [{"effect": "allow","action": ["rum:*"],"resource": ["*"]}]}
示例2:按操作授权(只读访问)
只授予读类接口的权限。推荐使用 CAM 官方的只读条件键
qcs:read_only_action, 这也是全局 ReadOnlyAccess 策略的实现方式,由 CAM 按接口的读写属性自动过滤:{"version": "2.0","statement": [{"effect": "allow","action": ["rum:*"],"resource": ["*"],"condition": {"numeric_equal": {"qcs:read_only_action": 1}}}]}
qcs:read_only_action: 1 表示「接口属性为读」,主要涵盖以 Check、List、Describe、Search、Get、BatchGet、Query、BatchQuery、 Download、Export、View、Inquiry、Inquire、Compare、Verify、Validate 开头的接口。详见 全局预设策略。说明:
不要用
rum:Describe* 代替只读权限。终端性能监控 Pro 没有只读预设策略,且接口命名前缀与 CAM 的读写分类并不一致:会漏授:读类接口中有相当数量不以
Describe 开头,例如 Get、Query、Check、Export、Parse、Select 前缀的接口;会误授:部分写操作也不以
Create/Delete/Update 开头,例如 SetStrategyStatus、SendDailySingleMailReport、NotifyUploadResult。若需要精确的只读权限,优先使用上面的
qcs:read_only_action 写法;只有在需要精确控制到具体接口清单时,才在 CAM 控制台的策略编辑器中逐个挑选后列入 action。示例3:按操作授权(只开放指定功能)
只允许子账号查看问题列表与详情,不允许其执行任何配置或删除操作。
{"version": "2.0","statement": [{"effect": "allow","action": ["rum:DescribeIssues","rum:DescribeIssueDetail","rum:DescribeIssueEvents","rum:DescribeIssueEventDetail","rum:DescribeIssueBreadcrumbs","rum:DescribeIssueAffectedUsers","rum:DescribeIssueTrend"],"resource": ["*"]}]}
示例4:拒绝高风险操作
在授予较宽权限的同时,显式拒绝删除类操作。
deny 的优先级高于 allow。{"version": "2.0","statement": [{"effect": "allow","action": ["rum:*"],"resource": ["*"]},{"effect": "deny","action": ["rum:Delete*"],"resource": ["*"]}]}
说明:
示例5:限制来源 IP
{"version": "2.0","statement": [{"effect": "allow","action": ["rum:*"],"resource": ["*"],"condition": {"ip_equal": {"qcs:ip": ["10.121.2.0/24"]}}}]}
说明:
授权给子账号
相关 API 接口
除控制台操作外,您也可以通过云 API 完成策略的查询、授权与排查。相关接口均由访问管理(CAM)提供,接口的参数说明、调用示例与错误码已在 CAM 的 API 文档中完整给出,本文不重复展开,仅列出常用接口供参考:
接口名 | 用途 |
ListPolicies | 查询策略列表。可通过 Scope=QCS 只查询预设策略、Keyword 按策略名模糊匹配。 |
GetPolicy | 查看策略详情,返回策略文档 PolicyDocument,可用于确认某个预设策略具体包含哪些接口。 |
GetPolicyVersion | 查询策略版本详情,可用于查看预设策略的历史版本。 |
AttachUserPolicy / AttachGroupPolicy / AttachRolePolicy | 将策略分别绑定到用户 / 用户组 / 角色。 |
ListAttachedUserPolicies | 查询子账号已关联的策略列表,可用于排查授权是否生效。 |
更多接口及完整说明请参见:
策略相关接口
说明: