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

前提条件

说明 Nacos 1.2.1及以上版本支持配置中心鉴权。

开启配置鉴权开关

  1. 登录MSE管理控制台
  2. 在左侧导航栏选择注册配置中心 > 实例列表
  3. 实例列表页面单击具体实例名称。
  4. 在实例基础信息页面左侧菜单栏单击参数设置,然后在参数设置页面单击编辑
  5. ConfigAuthEnabled参数下方选择,然后单击保存并重启实例
    开启配置中心鉴权
    注意 打开配置鉴权开关后,没有配置AccessKey的客户端将无法获取配置,请谨慎操作!

RAM用户配置鉴权

  1. 登录RAM控制台
  2. 在左侧导航栏选择权限管理 > 权限策略管理,单击创建权限策略
  3. 新建自定义权限策略页面填写策略名称,配置模式选择脚本配置,在策略内容中配置如下示例代码,然后单击确定
    新建自定义权限策略

    示例代码如下:

    • 只能读取配置的权限。
      {
        "Action": [
          "mse:Get*",
          "mse:List*",
          "mse:Query*"
        ],
        "Resource": [
          "acs:mse:*:*:instance/${instanceId}",
          "acs:mse:*:*:instance/${instanceId}/${namespaceId}"
        ],
        "Effect": "Allow"
      }
    • 所有权限,包括读取、修改配置的权限。
      {
        "Action": [
          "mse:*"
        ],
        "Resource": [
          "acs:mse:*:*:instance/${instanceId}",
          "acs:mse:*:*:instance/${instanceId}/${namespaceId}"
        ],
        "Effect": "Allow"
      }
    说明 示例代码中的 ${instanceId}是指MSE的实例ID, ${namespaceId}是指MSE中的命名空间ID,公共命名空间ID是public。Resource中填写InstanceId表示授予这个实例的操作权限(包括该实例上的所有命名空间)。
  4. 在左侧导航栏选择人员管理 > 用户,在用户列表页面找到需要授权的用户,然后单击对应的用户登录名称。
  5. 用户基本信息页面单击权限管理页签,然后单击添加权限
  6. 添加权限面板中选择自定义策略,选中刚创建的权限,然后单击确定
    给RAM用户添加权限

客户端(SDK)配置鉴权

Nacos实例开启鉴权后,在使用Nacos客户端时,需要添加对应RAM用户的AccessKey ID和AccessKey Secret,否则无法获取配置。

properties.put(PropertyKeyConst.ACCESS_KEY, "${accessKey}");
properties.put(PropertyKeyConst.SECRET_KEY, "${secret}");

如果AccessKey对应的账号有mse:QueryNacosConfig权限,表示可以获取、监听配置。

如果AccessKey对应的账号有mse:UpdateNacosConfig权限,表示可以通过SDK修改配置。

示例代码如下:

  • 授予用户只能读取配置的权限。
    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "mse:QueryNacosConfig"
                ],
                "Resource": [
                    "acs:mse:*:*:instance/${instanceId}",
                    "acs:mse:*:*:instance/${instanceId}/${namespaceId}"
                ],
                "Effect": "Allow"
            }
        ]
    }
  • 授予用户能读取、修改配置的权限。
    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "mse:QueryNacosConfig",
                    "mse:UpdateNacosConfig"
                ],
                "Resource": [
                    "acs:mse:*:*:instance/${instanceId}",
                    "acs:mse:*:*:instance/${instanceId}/${namespaceId}"
                ],
                "Effect": "Allow"
            }
        ]
    }