[转帖]Nacos 获取配置时启用权限认证
默认情况下获取 Nacos 中的配置是不需要权限认证的, 这个估计是由其使用场景决定的(绝大多数都是仅内网可访问).
今天调查了下如何在获取配置时增加权限验证以提高其安全性.
1. 启用 Nacos 的权限认证
只要 nacos.core.auth.enabled 设置为 true 就行了.
-
### If turn on auth system:
-
nacos.core.auth.enabled=true
2. 添加 Nacos 用户
默认的用户 nacos 绑定的角色是 ROLE_ADMIN , 权限比较大, 最好是新增一个只读的用户用来读取对应命名空间(namespace)的配置.
- 权限控制 -> 用户列表 中新增用户
- 权限控制 -> 角色管理 中新增用户对应的角色
一个用户可以绑定多个角色. - 权限控制 -> 权限管理 中新增角色对应的权限
可以设置角色对应的命名空间(页面上名称为资源), 在动作下拉框中指定读写权限(只读\只写\读写).
一个角色可以配置多个权限.
合理的使用 namespace 和 group 来隔离配置文件, 再辅以用户的角色、权限控制, 组合的权限策略还是比较灵活的, 应该能满足大多数项目的安全需求.
创建好用户后可以通过 curl 命令验证一下效果.
curl -XGET 'http://localhost:8848/nacos/v1/cs/configs?dataId=test.yaml&group=DEFAULT_GROUP&tenant=&username=test&password=123456'
这里需要注意的是默认的 public 命名空间对应的值是空字符串, 而不是 public .
在 PowerShell 中对应的命令:
curl -Uri 'http://localhost:8848/nacos/v1/cs/configs?dataId=test.yaml&group=DEFAULT_GROUP&tenant=&username=test&password=123456'
当请求中的用户不存在时, 会返回 unknown user! 错误.
com.alibaba.nacos.api.exception.NacosException:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Wed Jul 28 10:58:15 CST 2021
There was an unexpected error (type=Forbidden, status=403).
unknown user!
当请求中的用户没有绑定角色或角色没有配置对应的权限时, 会返回 authorization failed! 错误.
com.alibaba.nacos.api.exception.NacosException:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Wed Jul 28 11:43:43 CST 2021
There was an unexpected error (type=Forbidden, status=403).
authorization failed!
3. 修改 Spring Boot 配置文件
在 bootstrap.yml 中添加 spring.cloud.nacos.config.username 和 spring.cloud.nacos.config.password 配置项 .
如果不仅使用了配置中心, 还使用了 Nacos 的注册中心功能, 那么同时还要配置 spring.cloud.nacos.discovery.username 和 spring.cloud.nacos.discovery.password 配置项, 而且必须使用默认的 ROLE_ADMIN 角色的用户.
-
spring:
-
cloud:
-
nacos:
-
config:
-
namespace:
-
server-addr: 127.0.0.1:8848
-
username: test
-
password: 123456
-
group: DEFAULT_GROUP
-
prefix: test
-
file-extension: yaml
-
discovery:
-
namespace:
-
server-addr: 127.0.0.1:8848
-
username: nacos
-
password: nacos
附录
查到有文章说需要在配置文件中指定
spring.cloud.nacos.config.context-path的值为/nacos, 这里使用的 1.2.1 版没有这个问题 .附一下正在使用的项目依赖. spring-cloud-starter-alibaba-nacos-discovery 和 spring-cloud-starter-alibaba-nacos-config 使用的均是 2.2.1.RELEASE 版.
- <!-- Nacos -->
- <dependency>
- <groupId>com.alibaba.cloud</groupId>
- <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
- <version>2.2.1.RELEASE</version>
- </dependency>
- <dependency>
- <groupId>com.alibaba.cloud</groupId>
- <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
- <version>2.2.1.RELEASE</version>
- </dependency>
命名空间(namespace) 和 租户(tenant)
这两个貌似是同一个概念.
查资料的时候看到今年年初的时候有报道说 1.4.1 版本有安全漏洞.
关于如何更加安全的使用 Nacos, 官方的公众号文章给出了一个比较全面的方案: Nacos配置安全最佳实践 .
文中推的阿里云微服务引擎(MSE)也是一个不错的方案, 安全性比较高, 看了下价格, 相比买 ECS 自己搭建集群, 价格上还是有些优势的.
[转帖]Nacos 获取配置时启用权限认证的更多相关文章
- nacos 发布配置
server 保留 2 份配置文件,一份在 mysql,一份在本地磁盘,同时在内存中缓存配置文件的 md5 值.当客户端获取配置时,server 直接返回本地磁盘文件,使用的是 sendFile ap ...
- 关于heritrix安装配置时出现”必须限制口令文件读取访问权限”的解决方法
转载:http://www.floatinglife.cn/关于heritrix安装配置时出现必须限制口令文件读取访问 最近开始写一个RSS聚合程序,需要爬虫支持,于是就整来heritrix,没想到, ...
- PHP 执行命令时sudo权限的配置
PHP 执行命令时sudo权限的配置 1.先写一个PHP文件 <?php system('whoami'); 先看自己的apache2的用户是谁,下面是笔者的截图,笔者使用apche2的用户是w ...
- Android之运行时相机权限和联系人权限获取
原文:Android之运行时相机权限和联系人权限获取 本文链接:http://blog.csdn.net/qq_16628781/article/details/61623502 Android之运行 ...
- 在IIS配置时没有启用目录浏览功能 :HTTP 错误 403.14
在IIS配置时没有启用目录浏览功能,浏览网站时,会出现“HTTP 错误 403.14–Forbidden,Web服务器被配置为不列出此目录内容”的提示,怎么解决这个问题呢? 01 02 03 04 0 ...
- Nacos作为配置中心时,多个服务共用一个dataId的配置
写在前面 本文是对我之前一篇文章<Spring Cloud+nacos+Feign,实现注册中心及配置中心>的补充.此文章中简单写了如何将Nacos作为配置中心.在使用配置中心时,我们会遇 ...
- nacos统一配置中心源码解析
配置文件想必大家都很熟悉,无论什么架构 都离不开配置,虽然spring boot已经大大简化了配置,但如果服务很多 环境也好几个,管理配置起来还是很麻烦,并且每次改完配置都需要重启服务,nacos c ...
- Spring Cloud Alibaba基础教程:使用Nacos作为配置中心
通过本教程的前两篇: <Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现> <Spring Cloud Alibaba基础教程:支持的几种服务消费方 ...
- Nacos系列:基于Nacos的配置中心
前言 在看正文之前,我想请你回顾一下自己待过的公司都是怎么管理配置的,我想应该会有以下几种方式: 1.硬编码 没有什么配置不配置的,直接写在代码里面,比如使用常量类 优势:对开发友好,开发清楚地知道代 ...
- 学习Spring Boot:(十三)配置 Shiro 权限认证
经过前面学习 Apache Shiro ,现在结合 Spring Boot 使用在项目里,进行相关配置. 正文 添加依赖 在 pom.xml 文件中添加 shiro-spring 的依赖: <d ...
随机推荐
- MyBatis中SQL语句优化小结
摘要:MyBatis 作为一款优秀的持久层框架,它支持自定义SQL.存储过程以及高级映射. MyBatis 作为一款优秀的持久层框架,它支持自定义SQL.存储过程以及高级映射.它免除了几乎所有的 JD ...
- 冠军斩获10万奖金!首届“域见杯”医检AI开发者大赛精彩落幕
摘要:首届"域见杯"医检AI开发者大赛精彩落幕. 8月24日,由广州市科学技术局指导,金域医学和华为云共同打造的中国第三方医检行业首个开发者大赛--"域见杯"医 ...
- 图解 Redis丨这就是 RDB 快照,能记录实际数据的
摘要:所谓的快照,就是记录某一个瞬间东西,比如当我们给风景拍照时,那一个瞬间的画面和信息就记录到了一张照片.RDB 快照就是记录某一个瞬间的内存数据,记录的是实际数据. 本文分享自华为云社区<图 ...
- 支持60+数据传输链路,华为云DRS链路商用大盘点
如今,业务上云已是时代潮流,技术的迅猛发展也使得上云变得愈发轻松起来.但在实际迁移过程中,客户仍会担心以下问题:不同数据库之间能迁吗?迁移前后数据不一致怎么办?可以不停机迁移吗-- 迁移毕竟是项大工程 ...
- 初探语音识别ASR算法
摘要:语音转写文字ASR技术的基本概念与数学原理简介. 本文分享自华为云社区<新手语音入门(三): 语音识别ASR算法初探 | 编码与解码 | 声学模型与语音模型 | 贝叶斯公式 | 音素> ...
- web自动化测试(3):web功能自动化测试selenium基础课
继上篇<web自动化测试(1):为什么选择selenium做自动化测试>,本文介绍如selenium使用 做UI自动化测试,需要什么技能 前端相关技术:HTML.XML.JavaScrip ...
- gitblit 不使用远程头像的方法
gitblit 安装非常简单,使用也很方便,由于我初次使用,遇到一个小问题,头像加载不出来,很影响系统的速度,网上找了很久,终于找到了解决办法. 1.仓库分组:创建仓库设定名称时录入:groupNam ...
- PPT 做出动态路线动画
https://www.iconfont.cn/ 插入,起点.终点,两图标 编辑顶点,调整路线 添加淡出动画,持续时间1秒 再添加直线 从上一项开始 效果选项中,选择自动翻转 计时 -> 期间 ...
- 【Flask】Flask快速使用 web框架原理 Flask配置文件写法 路由系统源码分析
目录 1 Flask介绍 1.1同步框架和异步框架的区别 1.2 flask介绍 2 Flask快速使用 3 web框架原理(了解) 4 flask 展示用户信息案例 4.1 login.html 4 ...
- 【JAVA基础】Mybatis示例
固定时间范围查询 <select id="selectPaidList" resultType="com.hand.htms.ifp.entity.IfpShipm ...