Nacos 1.2.0-beta.0

(注:目前发布的是1.2.0 beta版本,本文目的在于告诉大家如何使用最新功能,但是不推荐替换到生产环境)

Nacos是阿里巴巴开源的服务发现与配置管理项目,本次发布的1.2.0-beta.0版本,主要带来的是权限控制。本文将介绍包括这个功能在内的新版本发布的功能。

升级指南

服务端

0.8.0及以上版本:

  1. 解压安装包后替换{nacos.home}/target/nacos-server.jar
  2. 逐台重启Nacos Server即可

0.8.0以下版本,先升级到1.0.0版本。

客户端

替换pom依赖即可。

权限控制

这个版本的最大更新,是支持了命名空间粒度的权限控制。管理员可以针对不同的用户角色,授权某个命名空间的读写权限,来达到数据隔离的目的,关于权限控制的设计方案可以参考https://nacos.io/zh-cn/blog/access%20control%20design.html。这里介绍下权限控制功能的使用方式:

  1. 使用distribution/nacos-mysql.sql进行数据库初始化,主要是新增了users, roles, permissions三张表。

  2. Server端打开权限控制开关。修改con/application.properties内容:

nacos.core.auth.enabled=true

这个开关采用了热加载模式,无需重启Server即可生效。因此当权限控制功能使用有异常时,可以直接回滚到不鉴权的模式。

  1. 使用管理员账号登录Nacos控制台:

image.png

可以看到,左侧边栏增加了一个父菜单和三个子菜单,分别用于权限控制里的用户创建、角色创建以及权限管         理。这个菜单栏只会在管理员登录的时候显示,也就意味着只有管理员才能进行权限的管理和分配。

  1. 管理用户。点击“用户列表”,进入用户管理页面,可以进行用户的创建、修改和删除:

image.png

  1. 管理角色。因为Nacos的自带的权限是基于角色来进行分配的,因此需要给创建好的用户绑定一些角色:

image.png

  1. 管理权限。角色创建好以后,就可以给这个角色赋予特定的权限了:

image.png

在“添加资源”对话框里,可以选择绑定的角色,命名空间资源以及对应的动作类型,例如在上图中,我们给角色role1绑定命名空间test的读写权限。然后又因为刚刚我们是将user1绑定到了role1上,那么user1这个用户就可以对test这个命名空间的资源进行读写操作了。

  1. 使用user1登录控制台。点击控制台右上角,退出admin账号,然后用刚才创建的user1进行登录:

image.png

如上图所示,首先是左侧的权限管理菜单消失了,因为当前用户不是管理员。其次是会弹出一个鉴权失败的提示框。不用担心,这个提示框意思是user1没有public命名空间的读权限,所以会弹出,但是不影响我们将命名空间切换到test:
image.png

如上图所示,我们可以看到test命名空间的配置数据了,下面我们再来介绍客户端的使用。

  1. 首先依赖最新的nacos 1.2.0客户端,然后在初始化时添加如下代码:
Properties properties = new Properties();
properties.put(PropertyKeyConst.NAMESPACE, "99a791cf-41c4-4535-9e93-b0141652bad0");
properties.put(PropertyKeyConst.SERVER_ADDR, "127.0.0.1:8848");
// 配置用户名:
properties.put(PropertyKeyConst.USERNAME, "user1");
// 配置密码:
properties.put(PropertyKeyConst.PASSWORD, "pwd1");
ConfigService iconfig = NacosFactory.createConfigService(properties);
  1. 使用客户端进行正常的读写配置操作。