应用性能监控(APM)提供了完善的权限管理机制,您可以通过访问管理(CAM),对子用户灵活授予各种粒度的访问权限。
前提条件
操作者为主账号或拥有 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
步骤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 的业务系统。
您可以通过同样的方式,在应用级别实现按标签鉴权,本文不再赘述。