微服务治理中心授权

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

使用场景

某企业开通了微服务引擎MSE服务,由于员工工作职责不同,对资源操作所需权限也不同。运维人员负责做应用和权限的管理,开发人员负责配置应用的规则。现有如下需求:

  • 鉴于安全或信任原因,不希望将云账号密钥直接透露给员工,期望可以为员工相应的账号授予权限。

  • 用户账号只能在授权的前提下操作资源,不需要进行独立的计量计费,所有开销均计入企业账号名下。

  • 随时可以撤销用户账号的权限,也可以随时删除已创建的用户账号。

  • 应用负责人只拥有当前应用的操作权限,其他应用不具备访问及操作权限。

  • 测试人员只拥有测试命名空间下所有应用的操作权限,不允许访问及操作生产环境命名空间。

步骤一:创建RAM用户

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

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

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

  1. 使用RAM管理员登录RAM控制台

  2. 在左侧导航栏,选择身份管理 > 用户

  3. 用户页面,单击目标RAM用户操作列的添加权限

    image

    您也可以选中多个RAM用户,单击用户列表下方的添加权限,为RAM用户批量授权。

  4. 新增授权面板,选择权限策略,然后单击确认新增授权

    选择权限策略类型,在文本框中输入要添加的权限策略关键字,然后单击搜索到的权限策略,添加到右侧的已选择权限策略列表中。

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

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

      权限策略名称

      说明

      AliyunMSEFullAccess

      管理微服务引擎MSE的权限,等同于阿里云账号的权限,被授予该权限的RAM用户拥有MSE控制台所有功能的操作权限。

      AliyunMSEReadOnlyAccess

      微服务引擎MSE的只读权限,被授予该权限的RAM用户具有MSE控制台的只读权限。

      说明

      建议为运维人员授予AliyunMSEFullAccess权限策略,允许运维人员创建和删除资源。为开发人员授予AliyunMSEReadOnlyAccess权限策略,允许开发人员查看资源,但无法删除和创建资源。

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

      如果您需要更细粒度地授权,您可以参考常用权限配置示例来创建自定义策略进行访问控制。创建自定义策略的具体操作步骤,请参见创建自定义权限策略

  5. 新增授权面板,确认授权完成后,单击关闭

常用权限配置示例

所有应用的只读权限

为了方便企业内同学查看应用的关键信息,可以考虑授权所有应用的只读权限。

例如,使用阿里云账号授予RAM用户具备当前阿里云账号下的所有微服务治理应用的只读权限。

对应权限策略如下:

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "mse:QueryNamespace",
        "mse:GetApplicationListWithMetircs",
        "mse:ListNamespaces",
        "mse:GetEventFilterOptions",
        "mse:ListEventRecords",
        "mse:GetEventDetail",
        "mse:FetchLogConfig",
        "mse:QueryBusinessLocations",
        "mse:GetApplicationInstanceList",
        "mse:listGrayTag",
        "mse:QueryServiceDetailWithMetrics",
        "mse:GetEventDetail",
        "mse:ListEventsPage",
        "mse:ListEventsByType",
        "mse:GetApplicationTagList"
      ],
      "Resource": "acs:mse:*:*:*"
    },
    {
      "Effect": "Allow",
      "Action": "mse:GetApplicationList",
      "Resource": "acs:mse:*:*:namespace/${ns}"
    }
  ]
}

某个应用的全部操作权限

作为企业内部某个应用的负责人,您将获得对该应用的所有操作权限,同时您的权限将严格限定在您管理的应用范围内。

例如,使用阿里云账号授予RAM用户以下权限:

  • RAM用户具备当前阿里云账号下的所有微服务治理应用的只读权限。

  • RAM用户具备指定的微服务治理应用的只读权限。

对应权限策略如下:

{
  "Version": "1",
  "Statement": [
    // 对特定微服务治理应用具有所有权限
    {
      "Effect": "Allow",
      "Action": "mse:*",
      "Resource": "acs:mse:*:*:namespace/${ns}/application/${appName}"
    },
    // 下面为对所有微服务治理应用的只读权限
    {
      "Effect": "Allow",
      "Action": [
        "mse:QueryNamespace",
        "mse:GetApplicationListWithMetircs",
        "mse:ListNamespaces",
        "mse:GetEventFilterOptions",
        "mse:ListEventRecords",
        "mse:GetEventDetail",
        "mse:FetchLogConfig",
        "mse:QueryBusinessLocations",
        "mse:GetApplicationInstanceList",
        "mse:listGrayTag",
        "mse:QueryServiceDetailWithMetrics",
        "mse:GetEventDetail",
        "mse:ListEventsPage",
        "mse:ListEventsByType",
        "mse:GetApplicationTagList"
      ],
      "Resource": "acs:mse:*:*:*"
    },
    {
      "Effect": "Allow",
      "Action": "mse:GetApplicationList",
      "Resource": "acs:mse:*:*:namespace/${ns}"
    }
  ]

某个命名空间下的全部操作权限

作为企业内部的测试人员,您将获得对测试环境(测试命名空间)所有应用的操作权限,同时您的权限将严格限定在测试环境(测试命名空间)内。

例如,使用阿里云账号授予RAM用户以下权限:

  • RAM用户具备当前阿里云账号下的所有微服务治理应用的只读权限。

  • RAM用户具备指定的微服务治理命名空间的读写权限。

对应权限策略如下:

{
"Version": "1",
    "Statement": [
        // 对特定微服务治理命名空间具有所有权限
        {
            "Effect": "Allow",
            "Action": "mse:*",
            "Resource": "acs:mse:*:*:namespace/${ns}/application/*"
        },
        // 下面为对所有微服务治理应用的只读权限
        {
            "Effect": "Allow",
            "Action": [
                "mse:QueryNamespace",
                "mse:GetApplicationListWithMetircs",
                "mse:ListNamespaces",
                "mse:GetEventFilterOptions",
                "mse:ListEventRecords",
                "mse:GetEventDetail",
                "mse:FetchLogConfig",
                "mse:QueryBusinessLocations",
                "mse:GetApplicationInstanceList",
                "mse:listGrayTag",
                "mse:QueryServiceDetailWithMetrics",
                "mse:GetEventDetail",
                "mse:ListEventsPage",
                "mse:ListEventsByType",
                "mse:GetApplicationTagList",
                "mse:QueryAllSwimmingLaneGroup",
                "mse:QueryAllSwimmingLane",
                "mse:ListAppBySwimmingLaneGroupTags",
                "mse:ListAppBySwimmingLaneGroupTag",
                "mse:QuerySwimmingLaneById",
                "mse:GetTagsBySwimmingLaneGroupId",
                "mse:ListSwimmingLaneGateway",
                "mse:ListSwimmingLaneGatewayRoute",
                "mse:ListAuthPolicy",
                "mse:GetServiceList",
                "mse:GetServiceListPage"
            ],
            "Resource": "acs:mse:*:*:*"
        },
        // 对特定微服务治理命名空间具有所有权限
        {
            "Effect": "Allow",
            "Action": [
                "mse:GetApplicationList",
                "mse:CreateOrUpdateSwimmingLaneGroup",
                "mse:CreateOrUpdateSwimmingLane",
                "mse:DeleteSwimmingLaneGroup",
                "mse:DeleteSwimmingLaneGroup",
                "mse:DeleteSwimmingLane"
            ],
            "Resource": "acs:mse:*:*:namespace/${ns}"
        }
    ]
}