配置中心细粒度鉴权

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

前提条件

使用说明

本文档内容涉及图中引擎直连链路的访问权限的开启和配置,授权成功后,Nacos Client可以通过RAM用户访问MSE的Nacos。

幻灯片1.JPG

说明

关于引擎管控链路的访问鉴权配置和使用,即为RAM用户授予使用MSE控制台权限的具体操作,请参见注册配置中心授权

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

  1. 使用RAM管理员登录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管理员登录RAM控制台

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

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

    image

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

  4. 新增授权面板,选择权限策略自定义策略。在文本框中输入步骤一已创建的权限策略名称,单击搜索到的权限策略名称,然后单击确认新增授权

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

授予RAM角色权限

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

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

  3. 角色页面,单击目标RAM角色操作列的新增授权

    image

    您也可以选中多个RAM角色,单击角色列表下方的新增授权,为RAM角色批量授权。

  4. 新增授权面板,选择权限策略自定义策略。在文本框中输入步骤一已创建的权限策略名称,单击搜索到的权限策略名称,然后单击确认新增授权

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

常用示例

  • 授予用户某些实例的只读配置权限。

    {
        "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"
    }