微服务引擎MSE自定义权限策略参考

如果系统权限策略不能满足您的要求,您可以创建自定义权限策略实现最小授权。使用自定义权限策略有助于实现权限的精细化管控,是提升资源访问安全的有效手段。本文介绍微服务引擎MSE使用自定义权限策略的场景和策略示例。

什么是自定义权限策略

在基于RAM的访问控制体系中,自定义权限策略是指在系统权限策略之外,您可以自主创建、更新和删除的权限策略。自定义权限策略的版本更新需由您来维护。

  • 创建自定义权限策略后,需为RAM用户、用户组或RAM角色绑定权限策略,这些RAM身份才能获得权限策略中指定的访问权限。

  • 已创建的权限策略支持删除,但删除前需确保该策略未被引用。如果该权限策略已被引用,您需要在该权限策略的引用记录中移除授权。

  • 自定义权限策略支持版本控制,您可以按照RAM规定的版本管理机制来管理您创建的自定义权限策略版本。

操作文档

通过可视化编辑模式创建自定义权限策略

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

  2. 在左侧导航栏,选择权限管理 > 权限策略

  3. 权限策略页面,单击创建权限策略

  4. 创建权限策略页面,单击可视化编辑页签。

  5. 配置权限策略,然后单击继续编辑基本信息

    1. 效果区域,选择允许拒绝

    2. 服务区域,选择云服务。

      说明

      支持可视化编辑模式的云服务以控制台界面显示为准。

    3. 操作区域,选择全部操作指定操作

      系统会根据您上一步选择的云服务,自动筛选出可以配置的操作。如果您选择了指定操作,您需要继续选择具体的操作。

    4. 资源区域,选择全部资源指定资源

      系统会根据您上一步选择的操作,自动筛选出可以配置的资源类型。如果您选择了指定资源,您需要继续单击添加资源,配置具体的资源ARN。您可以使用匹配全部功能,快速选择对应配置项的全部资源。

      说明

      为了权限策略的正常生效,对操作关联的必要资源ARN标识了必要,强烈建议您配置该资源ARN。

    5. 条件区域,单击添加条件,配置条件。

      条件包括阿里云通用条件和服务级条件,系统会根据您前面配置的云服务和操作,自动筛选出可以配置的条件列表。您只需要选择对应条件键配置具体内容。

    6. 单击添加语句,重复上述步骤,配置多条权限策略语句。

  6. 输入权限策略名称备注

  7. 检查并优化权限策略内容。

    • 基础权限策略优化

      系统会对您添加的权限策略语句自动进行基础优化。基础权限策略优化会完成以下任务:

      • 删除不必要的条件。

      • 删除不必要的数组。

    • 可选:高级权限策略优化

      您可以将鼠标悬浮在可选:高级策略优化上,单击执行,对权限策略内容进行高级优化。高级权限策略优化功能会完成以下任务:

      • 拆分不兼容操作的资源或条件。

      • 收缩资源到更小范围。

      • 去重或合并语句。

  8. 单击确定

配置注册中心常用自定义授权样例

  • 授予用户某些实例的只读服务的权限。

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "mse:QueryNacosNaming"
                ],
                "Resource": [
                    "acs:mse:*:*:instance/${instanceId1}",
                    "acs:mse:*:*:instance/${instanceId2}"
                ],
                "Effect": "Allow"
            }
        ]
    }
  • 授予用户某些实例读取和修改服务的权限。

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "mse:QueryNacosNaming",
                    "mse:UpdateNacosNaming"
                ],
                "Resource": [
                    "acs:mse:*:*:instance/${instanceId1}",
                    "acs:mse:*:*:instance/${instanceId2}"
                ],
                "Effect": "Allow"
            }
        ]
    }
    说明

    ${instanceId1}和${instanceId2}代表的是注册中心实例ID。

  • 授予用户只能读取某个实例中的某个命名空间服务的权限。

    {
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "mse:QueryNacosNaming",
                "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}"
            }
        ],
        "Version": "1"
    }
  • 授予用户能读取和修改某个实例中某个命名空间下的${group}服务的权限。

    {
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "mse:QueryNacosNaming",
                    "mse:UpdateNacosNaming"
                ],
                "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}/${group}"
            }
        ],
        "Version": "1"
    }
  • 授予用户只能读取某个${group}下的${serviceName}服务的权限。

    {
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "mse:QueryNacosNaming",
                "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}/${group}/naming/${serviceName}"
            }
        ],
        "Version": "1"
    }
  • 授予用户读取和修改某个${group}下的${serviceName}服务的权限。

    {
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "mse:QueryNacosNaming",
                    "mse:UpdateNacosNaming"
                ],
                "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}/${group}/naming/${serviceName}"
            }
        ],
        "Version": "1"
    }

微服务治理常用自定义授权样例

所有应用的只读权限

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

例如,使用阿里云账号授予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}"
        }
    ]
}

云原生网关常用自定义授权样例

所有资源

若您需要授权RAM用户/角色操作账号下所有的云原生网关实例,可以直接为RAM用户/角色添加如下系统权限策略:

  • 只读:AliyunMSEReadOnlyAccess

  • 读写:AliyunMSEFullAccess

指定网关资源

若您要授权RAM用户/角色操作指定的网关实例,可以为RAM用户/角色添加网关资源级权限。

  • 示例一:授予RAM用户对云原生网关实例gw-8090caa2a3ab447a8bc5fdf3********的只读权限。

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "mse:Query*",
                    "mse:List*",
                    "mse:Get*",
                    "mse:Select*",
                    "mse:Pull*",
                    "mse:GatewayBlackWhite*",
                    "mse:GatewayHealthCheckList",
                    "mse:GatewayQueryMonitor",
                    "mse:UploadWasmFile"
                ],
                "Resource": "acs:mse:*:*:instance/gw-8090caa2a3ab447a8bc5fdf3********",
                "Effect": "Allow"
            },
            {
                "Action": [
                    "mse:QueryDefaultAlertStatus",
                    "mse:ListGatewayZone",
                    "mse:ListUpgradableGatewayVersions",
                    "mse:ListTagResources",
                    "mse:ListGatewayIngressMigrateTask",
                    "mse:ListEventRecords",
                    "mse:GetEventFilterOptions",
                    "mse:GetEventDetail",
                    "mse:GetGatewaySelection",
                    "mse:GetGatewayAlarms",
                    "mse:GetGatewayMigrateNamespacedServices",
                    "mse:GetGatewayIngressMigrateTaskDetail",
                    "mse:GetPluginGuide",
                    "mse:GetRegExpCheck",
                    "mse:GetRegExpTest",
                    "mse:CheckPluginLua"
                ],
                "Resource": "acs:mse:*:*:*",
                "Effect": "Allow"
            },
            {
                "Action": [
                    "log:DescribeService",
                    "log:ListProject",
                    "log:GetProductDataCollection"
                ],
                "Resource": "*",
                "Effect": "Allow"
            },
            {
                "Action": [
                    "arms:SearchContactGroup"
                ],
                "Resource": "*",
                "Effect": "Allow"
            }
        ]
    }
  • 示例二:授予RAM用户对云原生网关实例gw-8090caa2a3ab447a8bc5fdf3********的读写权限。

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "mse:*"
                ],
                "Resource": "acs:mse:*:*:instance/gw-8090caa2a3ab447a8bc5fdf3********",
                "Effect": "Allow"
            },
            {
                "Action": [
                    "mse:QueryDefaultAlertStatus",
                    "mse:CreateDefaultAlert",
                    "mse:ListGatewayZone",
                    "mse:ListUpgradableGatewayVersions",
                    "mse:ListEventRecords",
                    "mse:GetEventFilterOptions",
                    "mse:GetEventDetail",
                    "mse:GetGatewaySelection",
                    "mse:GetGatewayAlarms",
                    "mse:GetGatewayMigrateNamespacedServices",
                    "mse:GetPluginGuide",
                    "mse:GetRegExpCheck",
                    "mse:GetRegExpTest",
                    "mse:CheckPluginLua",
                    "mse:*TagResources",
                    "mse:*CustomPlugin",
                    "mse:*GatewayIngressMigrateTask*"
                ],
                "Resource": "acs:mse:*:*:*",
                "Effect": "Allow"
            },
            {
                "Action": [
                    "log:DescribeService",
                    "log:ListProject",
                    "log:GetProductDataCollection",
                    "log:OpenProductDataCollection"
                ],
                "Resource": "*",
                "Effect": "Allow"
            },
            {
                "Action": [
                    "arms:SearchContactGroup"
                ],
                "Resource": "*",
                "Effect": "Allow"
            }
        ]
    }

注意

以上权限只包含了在MSE云原生网关控制台操作的必要权限。云原生网关的部分能力依赖于其他云产品,您可以根据其他云产品的权限配置文档按需为您的RAM子账号/角色配置权限,从而使其可以完整地使用云原生网关的所有功能。云原生网关依赖的其他云产品和对应的模块如下:

云产品

云原生网关模块

自定义权限配置参考文档

SLS

  • 云原生网关 - 网关列表 - 网关详情 - 观测分析 - 日志中心

  • 云原生网关 - 网关列表 - 网关详情 - 插件市场 - 插件详情 - 插件日志

日志服务自定义权限策略参考

ARMS

  • 云原生网关 - 网关列表 - 网关详情 - 观测分析 - 链路追踪

  • 云原生网关 - 告警管理

应用实时监控服务系统权限策略参考

授权信息参考

授权信息