MSE支持阿里云账号通过控制台和OpenAPI为RAM用户授权微服务治理中心的操作权限,避免因暴露阿里云账号密钥造成的安全风险。本文介绍如何创建RAM用户并给RAM用户授权,授权后您可以通过RAM用户使用MSE微服务治理中心。

使用场景

某企业开通了微服务引擎MSE服务,由于员工工作职责不同,对资源操作所需权限也不同。运维人员负责做应用和权限的管理,开发人员负责配置应用的规则。现有如下需求:
  • 鉴于安全或信任原因,不希望将云账号密钥直接透露给员工,期望可以为员工相应的账号授予权限。
  • 用户账号只能在授权的前提下操作资源,不需要进行独立的计量计费,所有开销均计入企业账号名下。
  • 随时可以撤销用户账号的权限,也可以随时删除创建的用户账号。

步骤一:创建RAM用户

具体操作,请参见创建RAM用户

步骤二:为RAM用户添加权限

在使用RAM用户之前,需要为其添加相应权限。

  1. 使用阿里云账号登录RAM控制台
  2. 在左侧导航栏,选择身份管理 > 用户
  3. 用户页面的操作列,单击目标授权用户对应的添加权限。为RAM用户添加权限,然后单击确定
    1. 选择授权应用范围。
      • 整个云账号:权限在当前阿里云账号内生效。
      • 指定资源组:权限在指定的资源组内生效。
        说明 指定资源组授权生效的前提是该云服务已支持资源组。更多信息,请参见支持资源组的云服务
    2. 输入授权主体。
      授权主体即需要授权的RAM用户,系统会自动填入当前的RAM用户,您也可以添加其他RAM用户。
    3. 选择权限策略。
      选择权限策略类型,在文本框中输入要添加的权限策略关键字,然后单击搜索到的权限策略,添加到右侧的已选择列表中。

      权限类型包括系统策略和自定义策略:

      • 系统权限策略(粗粒度授权)

        微服务引擎MSE目前支持两种粗粒度的系统权限策略。

        • AliyunMSEFullAccess:管理微服务引擎MSE的权限,等同于阿里云账号的权限,被授予该权限的RAM用户拥有控制台所有功能的操作权限。
        • AliyunMSEReadOnlyAccess:微服务引擎MSE的只读权限,被授予该权限的RAM用户具有阿里云账号所有资源的只读权限。
        说明 建议给运维人员授予AliyunMSEFullAccess权限策略,由运维人员创建和删除资源。给开发人员授予AliyunMSEReadOnlyAccess权限策略,可以查看这些资源,但是不能删除和创建。

        如果想更细粒度地控制开发人员的权限,您可使用以下自定义权限策略。

      • 自定义权限策略(细粒度授权)

        如果您需要更细粒度地授权,您可以通过创建自定义策略来进行访问控制。创建自定义策略的具体步骤,请参见创建自定义权限策略

        • 示例一:授予RAM用户对微服务治理应用example-app的读写权限。
          {
            "Statement": [
              {
                "Action": [
                  "mse:*"
                ],
                "Resource":"acs:mse:*:*:application/example-app",
                "Effect": "Allow"
              }
            ],
            "Version": "1"
          }
        • 示例二:授予RAM用户对所有MSE资源的读权限。
          {
            "Statement": [
              {
                  "Action": [
                  "mse:List*",
                  "mse:Query*",
                  "mse:Get*",
                  "mse:Pull*",
                  "mse:Fetch*"
                ],
                "Resource": "acs:mse:*:*:*",
                "Effect": "Allow"
              }
            ],
            "Version": "1"
          }
  4. 添加权限的授权结果页面,查看授权信息摘要,并单击完成

MSE微服务治理中心的授权映射

Action 访问级别 Resource Action说明
GetResourcePackageStatus 读取 acs:mse:*:*:* 获取资源包信息。
GetOverview 读取 acs:mse:*:*:* MSE微服务治理概览信息。
GetApplicationList 列出 acs:mse:*:*:* 获取MSE微服务治理应用列表。
ListOutlierPolicy 列出 acs:mse:*:*:* 获取离群摘除策略列表。
GetApplicationInstanceList 列出 acs:mse:*:*:application/$appName 获取应用实例列表。
GetApplicationTagList 列出 acs:mse:*:*:application/$appName 获取应用标签列表。
QueryAppSummaryMetricsOverview 读取 acs:mse:*:*:application/$appName 获取应用总体Metrics信息。
FetchLosslessRuleList 列出 acs:mse:*:*:application/$appName 获取无损上下线规则列表。
GetServiceListPage 列出 acs:mse:*:*:application/$appName 获取服务列表。
ListApplicationsWithTagRules 列出 acs:mse:*:*:application/$appName 获取应用的路由规则。
GetAppMessageQueueRoute 读取 acs:mse:*:*:application/$appName 查询服务消息队列路由规则。
ListAuthPolicy 列出 acs:mse:*:*:application/$appName 查询服务鉴权策略。
ListEventsPage 列出 acs:mse:*:*:application/$appName 查询事件列表。
QueryEmptyPushSetting 读取 acs:mse:*:*:application/$appName 查询推空保护设置。
GetServiceMethodPage 列出 acs:mse:*:*:application/$appName 获取服务方法信息。
QueryAppMethodMetrics 读取 acs:mse:*:*:application/$appName 获取应用方法的Metrics信息。
GetServiceDetail 读取 acs:mse:*:*:application/$appName 获取服务详情。
GetSpringCloudTestMethod 读取 acs:mse:*:*:application/$appName 获取Spring Cloud测试方法信息。
GetDubboTestMethod 读取 acs:mse:*:*:application/$appName 获取Dubbo测试方法信息。
InvokeSpringCloudTestMethod 写入 acs:mse:*:*:application/$appName 调用Spring Cloud测试方法。
InvokeDubboTestMethod 写入 acs:mse:*:*:application/$appName 调用Dubbo测试方法。
QueryAppTopNMacs 读取 acs:mse:*:*:application/$appName 查询应用TopN的Metrics信息。
QueryAppRPCMacMetrics 读取 acs:mse:*:*:application/$appName 查询应用Metrics信息。
QueryEventOverview 读取 acs:mse:*:*:application/$appName 查询事件概览。
QueryGovernanceKubernetesCluster 列出 acs:mse:*:*:* 查询微服务治理Kubernetes集群列表。
GetGovernanceKubernetesCluster 读取 acs:mse:*:*:* 获取微服务治理Kubernetes集群信息。
ModifyGovernanceKubernetesCluster 写入 acs:mse:*:*:* 修改微服务治理Kubernetes集群信息。
QueryAllSwimmingLaneGroup 列出 acs:mse:*:*:* 查询所有泳道组。
QueryAllSwimmingLane 列出 acs:mse:*:*:* 查询当前泳道组内所有泳道。
ListAppBySwimmingLaneGroupTag 列出 acs:mse:*:*:* 获取当前泳道组内的指定标签的应用列表。

权限配置示例

本示例将会为您演示创建测试服务的权限策略并为RAM用户授权。

RAM用户要测试服务,需要mse:Get*TestMethodmse:Invoke*TestMethod权限。

  1. 使用阿里云账号登录RAM控制台
  2. 使用阿里云账号登录RAM控制台
  3. 在左侧导航栏,选择权限管理 > 权限策略
  4. 权限策略页面,单击创建权限策略
  5. 创建权限策略页面,单击脚本编辑页签。
  6. 输入策略内容,单击下一步:编辑基本信息

    测试服务的权限策略内容如下:

    {
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "mse:GetApplicationList",
                    "mse:GetServiceListPage",
                    "mse:GetServiceDetail"
                ],
                "Resource": [
                    "*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "mse:Get*TestMethod",
                    "mse:Invoke*TestMethod"
                ],
                "Resource": [
                   "acs:mse:$regionId:$userId:application/$appName"
                ]
            }
        ],
        "Version": "1"
    }
    说明 $userId替换为阿里云账号ID,$regionId$appName替换为实际的地域和应用名称。如果要测试所有地域和应用的服务,将$userId$regionId$appName替换为星号(*)即可。若不涉及跨账号授权,$userId填写为星号(*)即可。
  7. 创建权限策略页面输入基本信息,单击确定
  8. 为RAM用户授权创建的测试服务的自定义权限。具体操作,请参见为RAM用户授权