一、前提条件
操作者为主账号或拥有 QcloudCamFullAccess 权限的子用户。
二、授权粒度
APM 支持如下三种快速授权:
| 授权策略 | 描述 | 授权粒度 |
| 产品级授权 | 授予用户对整个 APM 产品的全部访问权限,包括所有业务系统及其下属的全部应用。适用于运维负责人、平台管理员等需要全局视角的角色。 | 粗 |
| 业务系统级授权 | 授予用户一个或多个指定业务系统的访问权限。用户只能查看和操作被授权业务系统下的所有应用,无法访问其他业务系统。 | 细 |
| 应用级授权 | 授予用户指定业务系统下某个或某些特定应用的访问权限。即使用户拥有某业务系统的访问权,也只能访问其中被显式授权的应用。 | 最细 |
三、产品级授权
APM 默认创建了预设策略 QcloudAPMFullAccess(全读写访问权限)和 QcloudAPMReadOnlyFullAccess(只读访问权限),如果你希望进行产品级授权,请参考 策略授予,完成预设策略 QcloudAPMFullAccess/QcloudAPMReadOnlyFullAccess 与子用户的关联。
四、步骤1:授予子用户前置操作授权
子用户访问 APM 业务系统时,涉及部分前置检查,例如获取该账号 APM 产品的版本信息。这些前置检查涉及的操作,不属于资源级别的操作,因此需要预先对子用户授权这些操作的权限。APM 默认创建了预设策略 QcloudAPMOperationalPrecondition(操作级接口前置条件),包含了所有的前置操作,请参考策略授予,完成预设策略 QcloudAPMOperationalPrecondition 与子用户的关联。
五、步骤2:获取业务系统 ID
请前往 APM 控制台 > 资源管理 > 业务系统管理,在业务系统列表中获取业务系统 ID。业务系统 ID 带有 apm- 前缀,这篇中以 apm-Y7o7aeOPA 和 apm-ikoLrFqnS 为例。
六、步骤3:创建自定义策略
1. 前往 访问管理控制台 > 策略,单击左上角的新建自定义策略。
2. 在弹出的选择创建方式窗口中,单击按策略语法创建,进入选择策略模板页面。
3. 选择空白模板,单击下一步,进入策略编辑页。
4. 输入策略名和策略描述,然后参考 授予指定业务系统的全读写访问权限 或 授予指定业务系统的只读访问权限 输入策略内容,并单击完成。
七、策略内容:授予指定业务系统的全读写访问权限
请根据实际情况,将 uin/ 后面的数字替换为你的主账号 ID,将 apm-instance/ 后面的内容替换为你的目标业务系统 ID。
{ "statement": [ { "action": [ "apm:*" ], "effect": "allow", "resource": [ "qcs::apm::uin/150000000:apm-instance/apm-Y7o7aeOPA", "qcs::apm::uin/150000000:apm-instance/apm-ikoLrFqnS" ] } ], "version": "2.0"}
八、策略内容:授予指定业务系统的只读访问权限
请根据实际情况,在资源六段式中,将 uin/ 后面的数字替换为你的主账号 ID,将 apm-instance/ 后面的内容替换为你的目标业务系统 ID。
{ "statement": [ { "action": [ "apm:*" ], "condition": { "numeric_equal": { "qcs:read_only_action": 1 } }, "effect": "allow", "resource": [ "qcs::apm::uin/150000000:apm-instance/apm-Y7o7aeOPA", "qcs::apm::uin/150000000:apm-instance/apm-ikoLrFqnS" ] } ], "version": "2.0"}
九、步骤4:关联自定义策略
请参考 策略授予,完成前一步创建的权限策略与子用户的关联。
十、应用级授权
在 APM 中,权限具有继承性,当用户拥有业务系统的权限时,自动拥有该系统下所有应用的权限。因此,要实现应用级授权,需要按照如下逻辑进行配置:
1. 授予子用户访问业务系统的权限。
2. 在业务系统维度,通过拒绝(deny)策略,阻止子用户基于业务系统级授权访问应用级接口。
3. 在应用维度,通过允许(allow)策略,对子用户授予应用级接口访问权限。
目前 APM 支持如下应用级接口:
| 接口名 | 说明 |
| DescribeApmService | 获取 APM 应用信息 |
| DescribeApmServiceBrief | 获取 APM 应用名列表 |
| DescribeApmServiceMetric | 获取 APM 应用指标 |
| ModifyApmApplicationConfig | 修改 APM 应用配置 |
| DescribeMetricLineData | 获取 APM 应用指标图表数据 |
| DescribeMetricRecords | 获取 APM 应用指标文本数据 |
| DescribeTagValuesList | 获取 APM 应用链路追踪 Trace/Span 列表数据 |
| DescribeSpanTagList | 获取 APM 应用链路追踪筛选数据 |
注意:说明:
注意:在全局拓扑图、链路详情等页面中,体现了不同应用之间的调用关系。如果用户缺少其中某些应用的访问权限,将导致调用关系无法正常展示。因此,这些页面需要使用到的接口,都不在应用级接口的范围内,应用级授权也不会阻止用户访问这些页面。
十一、步骤1:授予子用户前置操作授权
子用户访问 APM 业务系统时,涉及部分前置检查,例如获取该账号 APM 产品的版本信息。这些前置检查涉及的操作,不属于资源级别的操作,因此需要预先对子用户授权这些操作的权限。APM 默认创建了预设策略 QcloudAPMOperationalPrecondition(操作级接口前置条件),包含了所有的前置操作,请参考 策略授予,完成预设策略 QcloudAPMOperationalPrecondition 与子用户的关联。
十二、步骤2:获取业务系统 ID
请前往 APM 控制台 > 资源管理 > 业务系统管理,在业务系统列表中获取业务系统 ID。业务系统 ID 带有 apm- 前缀,这篇中以 apm-Y7o7aeOPA 和 apm-ikoLrFqnS 为例。
十三、步骤3:获取应用 ID
请前往 APM 控制台 > 应用列表,在应用列表中获取应用 ID。应用 ID 带有 svc- 前缀,这篇中以 svc-MfverOh9i 和 svc-otzgrO59i 为例。
十四、步骤4:创建自定义策略
1. 前往 访问管理控制台 > 策略,单击左上角的新建自定义策略。
2. 在弹出的选择创建方式窗口中,单击按策略语法创建,进入选择策略模板页面。
3. 选择空白模板,单击下一步,进入策略编辑页。
4. 输入策略名和策略描述,然后参考如下代码输入策略内容,并单击完成。
{ "statement": [ { "action": [ "apm:*" ], "condition": { "numeric_equal": { "qcs:read_only_action": 1 } }, "effect": "allow", "resource": [ "qcs::apm::uin/150000000:apm-instance/apm-Y7o7aeOPA", "qcs::apm::uin/150000000:apm-instance/apm-ikoLrFqnS" ] }, { "action": [ "apm:DescribeApmService", "apm:DescribeApmServiceMetric", "apm:DescribeApmServiceBrief", "apm:ModifyApmApplicationConfig", "apm:DescribeMetricLineData", "apm:DescribeMetricRecords", "apm:DescribeTagValuesList", "apm:DescribeSpanTagList" ], "effect": "deny", "resource": [ "qcs::apm::uin/150000000:apm-instance/apm-Y7o7aeOPA", "qcs::apm::uin/150000000:apm-instance/apm-ikoLrFqnS" ] }, { "action": [ "apm:DescribeApmService", "apm:DescribeApmServiceMetric", "apm:DescribeApmServiceBrief", "apm:ModifyApmApplicationConfig", "apm:DescribeMetricLineData", "apm:DescribeMetricRecords", "apm:DescribeTagValuesList", "apm:DescribeSpanTagList" ], "effect": "allow", "resource": [ "qcs::apm::uin/150000000:apm-service/svc-MfverOh9i", "qcs::apm::uin/150000000:apm-service/svc-otzgrO59i" ] } ], "version": "2.0"}
请根据实际情况,在资源六段式中,将 uin/ 后面的数字替换为你的主账号 ID,将 apm-instance/ 后面的内容替换为你的目标业务系统 ID,将 apm-service/ 后面的内容替换为你的目标应用 ID。
十五、步骤5:关联自定义策略
请参考 策略授予,完成前一步创建的权限策略与子用户的关联。
十六、按标签授权
回顾前文阐述的业务系统级授权和应用级授权,都是通过直接指定业务系统/应用 ID,来确定目标资源。APM 支持按标签授权,可以按标签来匹配目标资源,不再需要直接指定业务系统/应用 ID。
十七、前提条件
请提前参考 资源标签,为业务系统或应用打标。
十八、策略内容
参考前文阐述的业务系统级授权和应用级授权,执行如下两个步骤:
1. 在 resource 属性中,将资源 ID 替换为 *,并确保数组中只有1个元素。
2. 通过 condition 属性,增加标签匹配语句。
以授予指定业务系统的全读写访问权限为例,完整的策略内容为:
{ "statement": [ { "action": [ "apm:*" ], "condition": { "for_any_value:string_equal": { "qcs:resource_tag": ["team&A","team&B"] } }, "effect": "allow", "resource": [ "qcs::apm::uin/150000000:apm-instance/*" ] } ], "version": "2.0"}
该示例中的策略内容,将匹配如下业务系统的所有权限:
1. 带有标签键 team,且对应的标签值为 A 的业务系统。
2. 带有标签键 team,且对应的标签值为 B 的业务系统。
你可以通过同样的方式,在应用级别实现按标签鉴权,这篇不再赘述。