默认安装的阿里巴巴开源版本的nacos:https://nacos.io/zh-cn/index.html 控制台是可以设置密码访问的,但是有个问题,默认java客户端去连的话(例如作为配置中心去获取配置文件等)是不用写什么密码的配置就可以获取的,这样就带来一个问题,如果有未授权的用户通过springboot等客户端作为spring cloud的服务节点去连接的话,能获取到远程配置,如果里面包含数据库、redis、mq等连接信息,显然是不安全的。
开启需要鉴权
在 Nacos server 上修改 application.properties 中的 nacos.core.auth.enabled 值为 true 即可(不明白为什么这不是默认的):
nacos.core.auth.enabled=true
如果是用docker安装的nacos,docker安装方法详见:https://blog.terrynow.com/2022/03/18/docker-install-nacos-2-0-and-persistence-with-mysql/ 修改自定义的配置文件custom.properties:
接下来客户端服务节点的配置增加用户名密码即可:
bootstrap.yml
# Spring spring: application: # 应用名称 name: some-service cloud: nacos: # 当nacos服务器那边设置了nacos.core.auth.enabled=true时,需要设置spring.cloud.nacos.username和password username: nacos password: some-password discovery: # 服务注册地址 server-addr: 127.0.0.1:8848 namespace: 7d66e9f8-5081-4ef6-975c-2a3fbecaf765 config: # 配置中心地址 server-addr: 127.0.0.1:8848 # 配置文件格式 file-extension: yaml namespace: 712des1-5081-4ef6-975c-2a6fbecaf1145
如果需要更细粒度的控制不同用户的访问权限,我们可以在 Nacos 控制台上创建用户、设置权限。步骤如下:
访问 localhost:8848/nacos 并登录,在 权限控制->用户列表 页面,添加用户:
在 权限控制->角色管理,绑定用户和角色:
给对应角色添加权限,在 权限控制->权限管理 页面,添加权限:
文章评论