MSE Nacos配置中心能够按照实例、命名空间、Group、DataId设置访问权限,降低某个实例被恶意用户非法获取、修改的风险。本文介绍如何在MSE上为Nacos配置中心配置细粒度鉴权。

步骤一:创建细粒度权限策略

  1. 使用阿里云账号登录RAM控制台
  2. 在左侧导航栏,选择权限管理 > 权限策略
  3. 权限策略页面,单击创建权限策略
  4. 创建权限策略页面,单击脚本编辑页签。
  5. 输入权限策略内容,然后单击下一步:编辑基本信息
    • 配置中心细粒度鉴权所涉及的权限操作(Action)如下表:
      权限操作名称(Action) 说明
      mse:QueryNacosConfig 微服务引擎MSE Nacos的读取配置权限,表示可以通过SDK获取和监听配置。
      mse:UpdateNacosConfig 微服务引擎MSE Nacos的更新配置权限,表示可以通过SDK发布和修改配置。
    • 配置中心细粒度鉴权所涉及的操作对象(Resource)需满足以下规则:
      acs:mse:*:*:instance/{instance_id}/{namespaceId}/{group}/config/{dataId}

      您也可以参考下文的常用示例,修改策略内容。

    • 关于权限策略语法结构的详情,请参见权限策略语法和结构
  6. 输入权限策略名称备注
  7. 检查并优化权限策略内容。
    • 基础权限策略优化

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

      • 删除不必要的条件。
      • 删除不必要的数组。
    • 可选:高级权限策略优化

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

      • 拆分不兼容操作的资源或条件。
      • 收缩资源到更小范围。
      • 去重或合并语句。
  8. 单击确定

步骤二:授予RAM用户或RAM角色权限

授予RAM用户权限

  1. 使用阿里云账号登录RAM控制台
  2. 在左侧导航栏,选择身份管理 > 用户
  3. 用户页面,单击目标RAM用户操作列的添加权限
  4. 添加权限面板的选择权限区域,选择自定义策略,在文本框中输入步骤一已创建的权限策略名称,单击搜索到的权限策略名称,添加权限策略,然后单击确定
  5. 添加权限的授权结果页面,确认授权信息,并单击完成,完成RAM用户授权。

授予RAM角色权限

  1. 使用阿里云账号登录RAM控制台
  2. 在左侧导航栏,选择身份管理 > 角色
  3. 角色页面,单击目标RAM角色操作列的添加权限
  4. 添加权限面板的选择权限区域,选择自定义策略,在文本框中输入步骤一已创建的权限策略名称,单击搜索到的权限策略名称,添加权限策略,然后单击确定
  5. 添加权限的授权结果页面,确认授权信息,并单击完成,完成RAM角色授权。

常用示例

  • 授予用户某些实例的只读配置的权限。
    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "mse:QueryNacosConfig"
                ],
                "Resource": [
                    "acs:mse:*:*:instance/${instanceId1}",
                    "acs:mse:*:*:instance/${instanceId2}"
                ],
                "Effect": "Allow"
            }
        ]
    }
  • 授予用户某些实例读取和修改配置的权限。
    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "mse:QueryNacosConfig",
                    "mse:UpdateNacosConfig"
                ],
                "Resource": [
                    "acs:mse:*:*:instance/${instanceId1}",
                    "acs:mse:*:*:instance/${instanceId2}"
                ],
                "Effect": "Allow"
            }
        ]
    }
  • 授予用户只能读取某个实例中某个命名空间配置的权限。
    {
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "mse:QueryNacosConfig",
                "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}"
            }
        ],
        "Version": "1"
    }
  • 授予用户能读取和修改某个实例中某个命名空间下的${group}配置的权限。
    {
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "mse:QueryNacosConfig",
                    "mse:UpdateNacosConfig"
                ],
                "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}/${group}"
            }
        ],
        "Version": "1"
    }
  • 授予用户只能读取某个${group}下的${dataId}配置的权限。
    {
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "mse:QueryNacosConfig",
                "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}/${group}/config/${dataId}"
            }
        ],
        "Version": "1"
    }
  • 授予用户能读取和修改某个${group}下的${serviceName}配置的权限。
    {
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "mse:QueryNacosConfig",
                    "mse:UpdateNacosConfig"
                ],
                "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}/${group}/config/${dataId}"
            }
        ],
        "Version": "1"
    }