Nacos鉴权和配置加密—官方原版

这篇具有很好参考价值的文章主要介绍了Nacos鉴权和配置加密—官方原版。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、鉴权

按照官方文档配置启动,默认是不需要登录的,这样会导致配置中心对外直接暴露。而启用鉴权之后,需要在使用用户名和密码登录之后,才能正常使用nacos。开启鉴权之前,application.properties中的配置信息为:


nacos.core.auth.enabled=false

开启鉴权之后,application.properties中的配置信息为:


### If turn on auth system:
nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=true

1、自定义密钥

开启鉴权之后,你可以自定义用于生成JWT令牌的密钥,application.properties中的配置信息为:


### The default token(Base64 String):
nacos.core.auth.default.token.secret.key=SecretKey0123456789012345678901234567890123456789012345678901

自定义密钥时,推荐将配置项设置为Base64编码的字符串,且原始密钥长度不得低于32字符。例如下面的的例子:


### The default token(Base64 String):
nacos.core.auth.default.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=

注意:鉴权开关是修改之后立马生效的,不需要重启服务端。

2、开启服务身份识别功能

开启鉴权功能后,服务端之间的请求也会通过鉴权系统的影响。考虑到服务端之间的通信应该是可信的,因此在1.2~1.4.0版本期间,通过User-Agent中是否包含Nacos-Server来进行判断请求是否来自其他服务端。

但这种实现由于过于简单且固定,导致可能存在安全问题。因此从1.4.1版本开始,Nacos添加服务身份识别功能,用户可以自行配置服务端的Identity,不再使用User-Agent作为服务端请求的判断标准。

开启方式:


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

### 关闭使用user-agent判断服务端请求并放行鉴权的功能
nacos.core.auth.enable.userAgentAuthWhite=false

### 配置自定义身份识别的key(不可为空)和value(不可为空)
nacos.core.auth.server.identity.key=example
nacos.core.auth.server.identity.value=example

** 注意 ** 所有集群均需要配置相同的server.identity信息,否则可能导致服务端之间数据不一致或无法删除实例等问题。

二、配置加密

为保证用户敏感配置数据的安全,Nacos 提供了配置加密的新特性。降低了用户使用的风险,也不需要再对配置进行单独的加密处理

前提条件

版本:

老版本暂时不兼容,目前只基于2.x版本进行了改造,推荐版本 > 2.0.4。

内嵌数据库启动:

数据库表 config_info、config_info_beta、his_config_info中需要新增字段 encrypted_data_key ,用来存储每一个配置项加密使用的秘钥。新版本的默认创建表的sql中已经添加该字段。

如果之前使用过内嵌数据库的单机模式启动,则需要删除 nacos/data 文件夹,在重新启动会重新创建表。

MySQL启动:

数据库表 config_info、config_info_beta、his_config_info中需要新增字段 encrypted_data_key ,用来存储每一个配置项加密使用的秘钥。新版本的默认创建表的sql中已经添加该字段。

对于目前已经搭建好的 Nacos 使用以下 sql 将字段添加到对应的表中:
ALTER TABLE table_name ADD COLUMN `encrypted_data_key` text NOT NULL COMMENT '秘钥'

插件化实现

Nacos鉴权和配置加密—官方原版

通过 SPI 的机制抽象出加密和解密的操作,Nacos 默认提供 AES 的实现。用户也可以自定义加解密的实现方式。具体的实现在 nacos-plugin 仓库。

在 Nacos 服务端启动的时候就会加载所有依赖的加解密算法,然后通过发布配置的 dataId 的前缀来进行匹配是否需要加解密和使用的加解密算法。

客户端发布的配置会在客户端通过filter完成加解密,也就是配置在传输过程中都是密文的。而控制台发布的配置会在服务端进行处理。

如何使用

Nacos 加解密插件是可插拔的,有没有都不影响 Nacos 的核心功能的运行。如果想要使用 Naocs 的配置加解密功能需要单独引用加密算法的实现。客户端和服务端都通过添加以下依赖来使用 AES 加解密算法,服务端推荐添加到 config 模块下。


        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-aes-encryption-plugin</artifactId>
            <version>${nacos-aes-encryption-plugin.version}</version>
        </dependency>

${nacos-aes-encryption-plugin.version} 可以获取插件的最新版本。

目前插件需要自己编译,并未上传至maven中央仓库

如何编译

编译插件之前需要先编译nacos并安装至本地仓库.

  1. git clone git@github.com:alibaba/nacos.git

  1. cd nacos && mvn -B clean package install -Dmaven.test.skip=true

若出现revision变量无法解析,请更新maven至最新版本
  1. git clone git@github.com:nacos-group/nacos-plugin.git

  1. mvn install

建议上传到公司的maven仓库

创建加密配置

  • 打开 Nacos 控制台,点击新建配置。

Nacos鉴权和配置加密—官方原版
  • 配置前缀使用cipher-[加密算法名称]-dataId来标识这个配置需要加密,系统会自动识别并加密。例如使用 AES 算法来解密配置:cipher-aes-application-dev.yml。

Nacos鉴权和配置加密—官方原版
  • 点击保存,查看数据库

三、客户端如何进行鉴权

Java SDK鉴权

在构建“Properties”类时,需传入用户名和密码。文章来源地址https://www.toymoban.com/news/detail-452742.html


properties.put("username","${username}");
properties.put("password","${password}");

示例代码


try {
    // Initialize the configuration service, and the console automatically obtains the following parameters through the sample code.
    String serverAddr = "{serverAddr}";
    Properties properties = new Properties();
    properties.put("serverAddr", serverAddr);

    // if need username and password to login
        properties.put("username","nacos");
        properties.put("password","nacos");

    ConfigService configService = NacosFactory.createConfigService(properties);
} catch (NacosException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
📢 文章下方有交流学习区!一起学习进步!也可以前往官网,加入官方微信交流群💪💪💪
📢 创作不易,如果觉得文章不错,可以点赞👍 收藏📁 评论📒
 

到了这里,关于Nacos鉴权和配置加密—官方原版的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Nacos开启鉴权后读取不到配置文件,get data from Nacos error,dataId:http error, code=403,dataId=

    报错信息 解决办法 我开始没加鉴权,使用的是application.yml是可以的,加了之后要将application.yml换成bootstrap.yml。 spring cloud Alibaba组件版本依赖关系 2021.x 分支 适配 Spring Boot 2.4,Spring Cloud 2021.x 版本及以上的 Spring Cloud Alibaba 版本按从新到旧排列如下表(最新版本用*标记):

    2024年03月23日
    浏览(32)
  • Office 365 官方原版镜像下载

    中文说明:专业增强版-简体中文版 文件名称:O365ProPlusRetail.img 下载地址:https://officecdn.microsoft.com/db/492350F6-3A01-4F97-B9C0-C7C6DDF67D60/media/zh-CN/O365ProPlusRetail.img 中文说明:专业增强版-繁体中文版 文件名称:O365ProPlusRetail.img 下载地址:https://officecdn.microsoft.com/db/492350F6-3A01-4F97-B9

    2024年02月12日
    浏览(36)
  • WebSocket—STOMP详解(官方原版)

    WebSocket协议定义了两种类型的消息(文本和二进制),但其内容未作定义。该协议定义了一种机制,供客户端和服务器协商在WebSocket之上使用的子协议(即更高级别的消息传递协议),以定义各自可以发送何种消息、格式是什么、每个消息的内容等等。子协议的使用是可选的

    2024年02月04日
    浏览(30)
  • Java Sockets详解—官方原版

    通常情况下,服务器运行在特定的计算机上,并且具有绑定到特定端口号的Socket。服务器只是等待,监听Socket,等待客户端发出连接请求。 在客户端:客户端知道服务器正在运行的机器的主机名以及服务器正在侦听的端口号。要发出连接请求,客户端会尝试在服务器的计算机

    2024年02月03日
    浏览(24)
  • 老电脑安装win11官方原版系统

    提示:本处以微软2023年下半年发布的windows11 23H2 版本作为案例演示 例如:随着window系统的更新迭代,很多软件已不支持老的windows系统,老的电脑硬件也不满足新系统的安装要求,老电脑买了才几年换新电脑不划算,很多人都开始了老电脑安装新系统的学习,本文就介绍了老

    2024年02月03日
    浏览(34)
  • Spring Mvc 文件上传(MultipartFile )—官方原版

    要启动Spring Boot MVC应用程序,首先需要一个启动器。在这个示例中,已经添加了spring-boot-starter thymelaf和spring-boot-starter web作为依赖项。要使用Servlet容器上传文件,您需要注册一个MultipartConfigElement类(在web.xml中为<multipart-config>)。多亏了Spring Boot,一切都可以自动配置!

    2024年02月14日
    浏览(32)
  • Nacos 中的配置文件如何实现加密传输

    小伙伴们知道,Spring Cloud Config 很早就提供了配置文件的加解密功能,并且支持对称加密和非对称加密两种不同的模式。Nacos 作为分布式配置中心+服务注册中心的合体,在配置文件加密这块一直差点意思,不过好在,如果你使用的 Nacos 版本大于 2.0.4 这个版本,那么现在也可

    2024年02月12日
    浏览(22)
  • springBoot配置文件账号密码加密存储(springCloud nacos)

            最近公司有要求,项目中的配置文件不允许明文存储,全部要改为密文,收集了一些资料,在这里做下记录总结。 在Application启动主类中加入启动注解 @EnableEncryptableProperties 注:加密因子password配置在配置文件中也会涉及到安全问题,更安全的做法是:将其作为系

    2024年02月16日
    浏览(24)
  • 微服务nacos或者yml配置内容部分加密jasypt

    1.引入依赖(版本自定): 2.yml新增配置: 注:algorithm是加密算法,官方默认的加密算法是 PBEWITHHMACSHA512ANDAES_256,但是如果你用的是 JDK1.8,还用不了这个算法,JDK9以上才支持,所以可以把这个算法改成PBEWithMD5AndDES。 2.1.2版本默认加密方式为:PBEWithMD5AndDES 3.0.3版本默认加密

    2024年02月10日
    浏览(22)
  • Spring Cloud Gateway GlobalFilter(全局过滤器)详解(官方原版)

    GlobalFilter接口具有与GatewayFilter相同的签名。这些是有条件地应用于所有路由的特殊过滤器。 当请求与路由匹配时,过滤web处理程序会将GlobalFilter的所有实例和GatewayFilter的所有路由特定实例添加到过滤器链中。这个组合过滤器链由org.springframework.core.Ordered接口排序,您可以通

    2024年02月09日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包