专业的编程技术博客社区

网站首页 > 博客文章 正文

Nacos启用身份认证解决Nacos安全漏洞(五)

baijin 2024-10-01 07:15:05 博客文章 5 ℃ 0 评论

Nacos注册中心及配置中心启用安全管理配置

在之前SpringCloud客户端都是匿名接入Nacos注册中心或者配置中心,实现方式比较简单,这种情况下一般Nacos服务都是内网服务,不提供外网访问,否则会带来数据安全性问题。不可避免,有时候需要将Nacos对外提供服务,这个时候,就需要加强Nacos接入的安全性,从1.3.2开始,Nacos注册中心以及配置中心已支持安全性校验功能,可以采用该功能实现对外提供服务时,对安全性的需求。

启用安全性校验

对三个节点进行修改配置文件,启用身份认证功能。打开/nacos/conf中的application.properties文件,找到nacos.core.auth.enabled配置项,并调整其值为true

# 默认为false
nacos.core.auth.enabled=true

重启三个节点服务,此时管理端和之前表现一致,并没有随着开启身份认证而有所变化。再次启动nacos-config服务,发现一开始就报了一个认证失败的错误,注册、获取配置等接口均失败,说明安全性功能已经成功开启。

客户端实现身份认证

Nacos注册中心和配置中心是可以独立使用的,因此在Nacos安全配置中,也有两种账号配置方式。在启用安全配置时,Nacos客户端需要配置2.2.3及以上版本,此前的版本不支持安全配置,但最好的方法是注册中心不对外提供服务

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.2.3.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
  • 注册、配置中心独立配置
  # 注册中心
  spring.cloud.nacos.discovery.username=nacos
  spring.cloud.naocs.discovery.password=nacos
  # 配置中心
  spring.cloud.nacos.config.username=nacos
  spring.cloud.nacos.config.password=nacos
  • 。全局配置
  spring.cloud.nacos.username=nacos
  spring.cloud.nacos.password=nacos

独立配置

在nacos-config的配置文件中,添加服务发现、注册中心的账号,之后服务启动,发现注册以及获取配置信息功能一切正常,说明安全性配置已成功

server:
  port: 8072
spring:
  application:
    name: nacos-config
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8846
        username: nacos
        password: nacos
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        file-extension: yml
        username: nacos
        password: nacos

全局配置

对nacos-config配置文件进行改造,去除discoveryconfig节点的usernamepassword配置信息,并在spring.cloud.nacos节点下添加usernamepassword配置,启动客户端,注册及获取配置信息功能一切正常。同独立配置表现一致。

server:
  port: 8072
spring:
  application:
    name: nacos-config
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8846
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        file-extension: yml
      username: nacos
      password: nacos

跟踪Nacosspring-cloud-starter-alibaba-nacos-discoveryspring-cloud-starter-alibaba-nacos-config中的NacosDiscoveryPropertiesNacosConfigProperties类,spring.cloud.nacos.usernamespring.cloud.nacos.password分别作为了注册服务账号和配置账号的默认值配置。

// NacosConfigProperties
private void overrideFromEnv() {
    ...
    if (StringUtils.isEmpty(this.getUsername())) {
        this.setUsername(this.environment.resolvePlaceholders("${spring.cloud.nacos.username:}"));
    }

    if (StringUtils.isEmpty(this.getPassword())) {
        this.setPassword(this.environment.resolvePlaceholders("${spring.cloud.nacos.password:}"));
    }
}
// NacosDiscoveryProperties文件的写法同上面基本上一致。

一般情况下,可以优先使用spring.cloud.nacos.usernamespring.cloud.nacos.password配置方式。

基于SpringCloudAlibaba微服务架构设计及实现系列文章

  1. 基于SpringCloudAlibaba微服务架构设计及实现
  2. SpringCloud-Nacos实现服务的注册与发现(一)
  3. SpringCloud:Nacos配置中心应用(二)
  4. SpringCloud-Nacos配置持久化(三)
  5. SpringCloud-Nacos集群化部署(四)

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表