在Windows下安装和使用Nacos,Nacos单机部署和鉴权设置,可以按照以下步骤操作:


1. Nacos 安装与启动

1.1 下载 Nacos

Nacos官网| Nacos 配置中心 | Nacos 下载| Nacos 官方社区 | Nacos 官网

  1. 下载历史版本的压缩包

  2. 解压到本地目录(如 D:\nacos-server-2.4.3)。

1.2 启动 Nacos(单机模式)
  1. 打开命令提示符(CMD),进入Nacos的bin目录:

    cd D:\nacos-server-2.4.3\nacos\bin
  2. 执行启动命令(单机模式):

    startup.cmd -m standalon
    

3. 访问控制台:http://localhost:8848/nacos


在2.2.1之后的版本,默认不需要登录,直接就到的管理界面,所有信息一目了然,如果暴露在外网,使用默认端口,严重威胁到数据安全。虽然2.2.1的版本之前的版本有登录界面限制,一旦nacos没有开启权限认证,即nacos.core.auth.enabled = false,在这种情况下,通过一些请求就可以绕过nacos的权限认证。

2. Nacos常用配置

 2.1. 端口配置:


2.2. 数据库连接配置:

同时在使用MySQL数据源部署Nacos单机模式时,需要自行准备MySQL数据库:

  • 1.安装数据库,版本要求:5.6.5+
  • 2.初始化mysql数据库,数据库初始化文件:mysql-schema.sql

然后修改${nacos.home}/conf/application.properties文件,增加支持MySQL数据源配置,添加MySQL数据源的url、用户名和密码。

nacos关于数据库的参数解释:

参数名 含义 可选值 默认值
spring.sql.init.platform Nacos Server 使用的数据库类型 mysql/空,指定为空时会根据nacos.standalone判断使用derby数据库还是mysql数据库;在使用数据源插件时,可以指定为插件对应的数据库值,比如oracle或postgresql null
spring.datasource.platform Nacos Server 使用的数据库类型,即将被废弃,请使用spring.sql.init.platform代替 mysql/空 null
db.num 数据库数目 正整数 0
db.url.0 第一个数据库的URL 字符串
db.url.1 第二个数据库的URL,当db.num=2时生效 字符串
db.user 数据库连接的用户名 字符串
db.password 数据库连接的密码 字符串
db.pool.config.xxx 数据库连接池参数,使用的是hikari连接池,参数与hikari连接池相同,如db.pool.config.connectionTimeoutdb.pool.config.maximumPoolSize 字符串 同hikariCp对应默认配置

当前数据库配置支持多数据源。通过db.num来指定数据源个数,db.url.index为对应的数据库的链接。db.user以及db.password没有设置index时,所有的链接都以db.userdb.password用作认证。如果不同数据源的用户名称或者用户密码不一样时,可以通过符号,来进行切割,或者指定db.user.index,db.user.password来设置对应数据库链接的用户或者密码。需要注意的是,当db.userdb.password没有指定下标时,因为当前机制会根据,进行切割。所以当用户名或者密码存在,时,会把,切割后前面的值当成最后的值进行认证,会导致认证失败。

Nacos从1.3版本开始使用HikariCP连接池,但在1.4.1版本前,连接池配置由系统默认值定义,无法自定义配置。在1.4.1后,提供了一个方法能够配置HikariCP连接池。 db.pool.config为配置前缀,xxx为实际的hikariCP配置,如db.pool.config.connectionTimeoutdb.pool.config.maximumPoolSize等。更多hikariCP的配置请查看HikariCP 需要注意的是,url,user,password会由db.url.n,db.user,db.password覆盖,driverClassName则是默认的MySQL8 driver(该版本mysql driver支持mysql5.x)

2.3. startup.cmd启动单机配置

  set MODE="standalone"    改了之后可以直接双击启动,不需要再用命令或者命令加参数启动

3. Nacos开启鉴权

默认配置如下


关于鉴权,官方文档:配置鉴权 | Nacos 官网 相关参数说明如下:

参数名 含义 可选值 默认值
nacos.core.auth.enabled Nacos是否开启鉴权 true/false false
nacos.core.auth.system.type Nacos鉴权插件的类型 nacos/ldap/自定义插件类型 nacos
nacos.core.auth.server.identity.key Nacos Server节点身份信息的key,用户Server节点之间通信的识别,当开启鉴权时为必填项 字符串 null
nacos.core.auth.server.identity.value Nacos Server节点身份信息的value,用户Server节点之间通信的识别,当开启鉴权时为必填项 字符串 null
nacos.core.auth.enable.userAgentAuthWhite Nacos Server使用UserAgent来进行Server节点之间通信的识别,在1.4.1版本后仅作为升级时的兼容,开启后会存在安全问题,后续版本将移除该参数
参数名 默认值 启止版本 说明
nacos.core.auth.enabled false 1.2.0 ~ latest 是否开启鉴权功能
nacos.core.auth.system.type nacos 1.2.0 ~ latest 鉴权类型
nacos.core.auth.plugin.nacos.token.secret.key

SecretKey012345678901234567890

123456789012345678901234567890

123456789(2.2.0.1后无默认值)

2.1.0 ~ latest 默认鉴权插件用于生成用户登陆临时accessToken所使用的密钥,使用默认值有安全风险
nacos.core.auth.plugin.nacos.token.expire.seconds 18000 2.1.0 ~ latest 用户登陆临时accessToken的过期时间
nacos.core.auth.enable.userAgentAuthWhite false 1.4.1 ~ latest 是否使用useragent白名单,主要用于适配老版本升级,置为true时有安全风险
nacos.core.auth.server.identity.key serverIdentity(2.2.1后无默认值) 1.4.1 ~ latest 用于替换useragent白名单的身份识别key,使用默认值有安全风险
nacos.core.auth.server.identity.value security(2.2.1后无默认值) 1.4.1 ~ latest 用于替换useragent白名单的身份识别value,使用默认值有安全风险
nacos.core.auth.default.token.secret.key

SecretKey012345678901234567890

123456789012345678901234567890

123456789

1.2.0 ~ 2.0.4 nacos.core.auth.plugin.nacos.token.secret.key
nacos.core.auth.default.token.expire.seconds 18000 1.2.0 ~ 2.0.4 nacos.core.auth.plugin.nacos.token.expire.seconds

接下来,介绍本如何按照文档来实现鉴权,这里以2.4.3版本为例,步骤如下:

修改nacos\conf文件夹下的application.properties文件中的部分属性

开启鉴权 nacos.core.auth.enabled=true

用于替换useragent白名单的身份识别key和value
nacos.core.auth.server.identity.key=naServerIdentity
nacos.core.auth.server.identity.value=userSecurity

默认鉴权插件用于生成用户登陆临时accessToken所使用的密钥,这是采用base64生成,可以使用在线工具 生成。

nacos.core.auth.plugin.nacos.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXk4M2VyeXUzNDYyZXll

修改后的配置如图:

全部配置好,无需重启nacos,刷新页面,很可能会出现下面的情况

点击确定,刷新页面

输入用户名密码登录,可能会出现下面的提示,刷新页面,重新登录就可以了,实在不行,重启下服务端也是可以的。

注意:鉴权开关是修改之后立马生效的,不需要重启服务端。动态修改token.secret.key时,请确保token是有效的,如果修改成无效值,会导致后续无法登录,请求访问异常。

总结

低版本的nacos很有必要升级,或者开启鉴权,以保证数据安全,特别是1.x版本升级到2.0至关重要。nacos作为开源的项目,在实际运用中要尽量少采用默认的配置,以提高nacos的安全性。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐