SpringCloud使用集中配置组件Config规避信息泄露

目录
  • Spring Cloud Config简介
  • Config实战
    • 1、创建项目config服务端
    • 2、创建配置文件
    • 3、新建启动类
    • 4、创建配置中心客户端
    • 5、验证
  • 总结

Spring Cloud Config简介

在分布式系统中,由于应用被拆分成数量巨多的小服务,另外应用也部署在不同的环境之中,如dev、int、uat、prod等,各个环境的配置不尽相同,为了方便配置文件统一管理,所以需要分布式配置中心组件。

配置文件统一管理之后,各个环境只能获取对应环境的配置信息,开发人员也只能获取到开发环境的配置信息,就能在一定程度上避免敏感信息的泄露。

Spring Cloud Config作为分布式配置中心组件 ,包括Config 服务端,和Config 客户端。

  • Config Server是一个可横向扩展、集中式的配置服务器,它用于集中管理应用程序各个环境下的配置,默认使用Git存储配置文件内容,也可以使用SVN存储,或者是本地文件存储。
  • Config Client是Config Server的客户端,用于操作存储在Config Server中的配置内容。微服务在启动时会请求Config Server获取配置文件的内容,请求到后再启动容器。

Config实战

1、创建项目config服务端

创建子模块config-server,pom.xml引入eureka-client 和config-server的依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>

2、创建配置文件

新建config-server自身的配置文件application.yml

server:
  port: 8005
spring:
  application:
    name: config-server
  profiles:
    active: native #使用本地文件
  cloud:
    config:
      server:
        native:
          search-locations: classpath:/repo #本地配置仓库地址
#        git:
#          uri: https://gitee.com/xxxx/xxxxx.git
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8001/eureka/

这里我们以使用本地配置仓库地址为例,spring.profiles.active设置为native,配置仓库路径为repo文件夹,所以我们在resources文件下创建repo文件夹,并创建新的一个configclient-dev.yml的文件,内容如下:

server:
  port: 8007

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8001/eureka/
feign:
  hystrix:
    enabled: true
logging:
  pattern:
    console: '%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n'

3、新建启动类

@EnableConfigServer //开启配置服务
@EnableEurekaClient
@SpringBootApplication
public class ConfitServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfitServerApplication.class, args);
    }
}

注意增加@EnableConfigServer注解,表示这是个配置中心服务端。

4、创建配置中心客户端

服务端开发完成后,我们再新建一个客户端config-client项目,引入如下依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

与服务端不同的是,客户端的配置文件我们创建bootstrap.yml文件

spring:
  cloud:
    config:
      name: configclient
      profile: dev
      label: master
      discovery:
        enabled: true
        service‐id: config-server

eureka:
  client:
    service‐url:
      defaultZone: http://localhost:8001/eureka/

注意spring.cloud.config.name与服务端中的文件名称对应,spring.cloud.config.profile与文件名-后面的环境代码对应,配置文件的命名规则是 {application}/{profile}[/{label}] 。

当 Config Client 去访问 Config Server 时,spring.cloud.config.name 、spring.cloud.config.profile 以及 、spring.cloud.config.label 的值分别对应上面三个占位符,如果配置了spring.cloud.config.name,那么就取spring.cloud.config.name,如果没有配置就取 spring.application.name,通过灵活使用 {application} 、{profile} 、{label} 三个占位符,就可以来动态地控制 client 从 server 所访问的仓库!

然后编写客户端启动类:

@EnableDiscoveryClient
@EnableFeignClients
@EnableEurekaClient
@SpringBootApplication
public class ConfigClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigClientApplication.class, args);
    }
}

5、验证

我们分别启动registry项目以及config-server,config-client两个服务,这时,就会发现,config-client服务拉取了config-server中对应的配置文件。

总结

这篇文章我们介绍了一下 Spring Cloud Config 的一个基本使用,包括 Spring Cloud Config Server 和 Spring Cloud Config Client 的项目搭建。通过环境的配置隔离,避免了敏感配置信息的泄露。

有人可能就说了,我本地把拉取dev的配置改成拉取prod不一样也能拿到其他环境的信息吗?下一篇文章我们介绍如何通过 Config Server 的安全管理、配置文件的加密等机制真正做到这一点,一起期待吧!

到此这篇关于SpringCloud使用集中配置组件Config规避信息泄露的文章就介绍到这了,更多相关SpringCloud集中配置组件Config内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringCloud高可用配置中心Config详解

    目录 前言 源码 环境 开发工具 正文 commons 工程 commons 工程 - POM 文件 commons 工程 - 项目结构 配置文件 service 工程 registry-service(注册中心) registry-service - POM 文件 registry-service - application.yml配置文件 registry-service - 启动类 registry-server - 启动项目 server(获取远程的配置信息) server- POM 文

  • SpringCloud Config配置加密解密用法解析

    1. Java8自带无限制加密解密算法, 不需要再引入网上说的那俩包 2. 加密解密是SpringCloud Config的功能, 所以必须先启动一个SCC项目 3. 在SCC项目的配置文件中添加加密解密的钥匙: 密钥----> encrypt.key=xuejian 4. 启动SCC项目,通过http://localhost:port/encrypt/status检查加密解密功能是否能用,如果能用,会返回OK,否则会返回一个不能用的提示 5. 启动一个使用SpringCloud Config配

  • SpringCloud配置中心Config过程解析

    1.什么是配置中心 统一管理配置,怏速切换各个环境的配置 相关产品: 百度的 discont https://github.com/knightliao/disconf 阿里的diamand https://github.com/takeseem/diamond springcloud的configs-server: http://cloud.spring.io/spring-cloud-config/ 2.添加依赖 <dependency> <groupId>org.spring

  • SpringCloud微服务之Config知识总结

    一.什么是Spring Cloud Config? Spring Cloud Config 可以为微服务架构中的应用提供集中化的外部配置支持,它分为服务端和客户端两个部分. Spring Cloud Config 服务端被称为分布式配置中心,它是个独立的应用,可以从配置仓库获取配置信息并提供给客户端使用. Spring Cloud Config 客户端可以通过配置中心来获取配置信息,在启动时加载配置. Spring Cloud Config 的配置中心默认采用Git来存储配置信息,所以天然就支持

  • 详解SpringCloud Config配置中心

    一.创建Config配置中心项目 1.添加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> 2.启动类,需要添加@EnableConfigServer import org.springframework.boot.SpringApp

  • SpringCloud Config使用配置方法

    Config 介绍 Spring Cloud Config项目是一个解决分布式系统的配置管理方案.它包含了Client和Server两个部分,server提供配置文件的存储.以接口的形式将配置文件的内容提供出去,client通过接口获取数据.并依据此数据初始化自己的应用. 构建配置中心 配置中心服务端配置 新建一个配置中心模块,且注册到eureka中,在其他服务的基础上增加如下配置 pom文件增加配置服务端设置 <!--config配置中⼼服务端--> <dependency> &

  • SpringCloud微服务应用config配置中心详解

    目录 前言 一.传统应用配置痛点 二.Config 配置中心介绍 三.服务端Config Server搭建 1.pom依赖 2.application启动类配置 3.application.yml配置 4.test-dev.xml(客户端应读取的配置) 5.项目结构 四.客户端Config Client搭建 1.pom依赖 2.application启动类配置 3.bootstrap.yml配置 4.application.yml配置 5.测试controller 6.项目结构 五.动态刷新 六

  • springCloud config本地配置操作

    一般很多项目不是在springcloud的环境中使用的,但是需要用到分布式配置中心来管理一些外部或者项目的配置,这个时候我们可以使用springcloud-config的本地配置. 配置config-server服务端 使用start.spring.io创建一个springcloud工程,pom中引入: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-c

  • SpringCloud Config配置中心原理以及环境切换方式

    目录 Config配置中心原理以及环境切换 原理介绍 一.ConfigServer引入依赖 二.Configclient 注意 简易配置中心原理及流程说明 原理 简易搭建例子 Config配置中心原理以及环境切换 springCloud config项目,用来为分布式的微服务系统中提供集成式外部配置支持,分为客户端和服务端 spring官方如下介绍: Spring Cloud Config provides server and client-side support for externali

  • SpringCloud使用集中配置组件Config规避信息泄露

    目录 Spring Cloud Config简介 Config实战 1.创建项目config服务端 2.创建配置文件 3.新建启动类 4.创建配置中心客户端 5.验证 总结 Spring Cloud Config简介 在分布式系统中,由于应用被拆分成数量巨多的小服务,另外应用也部署在不同的环境之中,如dev.int.uat.prod等,各个环境的配置不尽相同,为了方便配置文件统一管理,所以需要分布式配置中心组件. 配置文件统一管理之后,各个环境只能获取对应环境的配置信息,开发人员也只能获取到开发

  • 详解SpringCloud mysql实现配置中心

    mysql实现配置中心 本公司配置数据的管理是通过mysql进行配置管理,因为已经搭建好了,所以自己动手重新搭建一遍,熟悉整个流程.有关项目源码后期会补上github地址 微服务要实现集中管理微服务配置. 不同环境不同配置 . 运行期间也可动态调整 . 配置修改后可以自动更新的需求 ,Spring Cloud Config同时满足了以上要求. 一.项目搭建 本次主要用三个微服务 (1)Eureka-server: 7001 注册中心 (2)config-server : 5001 配置中心 (3

  • .NET 开源配置组件 AgileConfig的使用简介

    介绍 在微服务大行其道的今天,系统会被拆分成多个模块,作为单独的服务运行,同时为了集中化管理,我们还需要日志中心,配置中心等,很多开发人员可能更熟悉 ApolloConfig,这个组件功能也很完善,dotnet的客户端也主要是国人在维护和开发,之前公司就是选型的Apollo,而且也在生产环境稳定运行,但是服务端是Java的,而且部署服务端也有些麻烦. 今天主要介绍 AgileConfig,这是一个基于.net core开发的轻量级配置中心,之前跟作者也有过沟通,也很热情帮忙解决问题,它的特点有部

  • SpringCloud Gateway 路由配置定位原理分析

    环境:springcloud Hoxton.SR11 本节主要了解系统中的谓词与配置的路由信息是如何进行初始化关联生成路由对象的.每个谓词工厂中的Config对象又是如何被解析配置的. 所有的谓词工厂中的Config中属性值是如何被配置的. 在SpringCloud Gateway中的所有谓词工厂如下: 命名规则:XxxRoutePredicateFactory.所有的这些谓词工厂都是如下的继承关系 public class MethodRoutePredicateFactory extends

  • vue中配置后端接口服务信息详解

    目录 vue配置后端接口服务信息 最重要一点 以此接口为例 vue与后端接口是如何进行接口请求的原理 最近遇到一个很奇怪的问题 附上如下图示 vue配置后端接口服务信息 最重要一点 配置完信息后,重新启动服务 npm run dev 需要在config下的index.js中 找到 module.exports = {   dev: {    } } 以此接口为例 dev: {     // Paths     assetsSubDirectory: 'static',     assetsPub

  • SpringCloud Nacos作为配置中心超详细讲解

    目录 前言 Nacos配置模型 配置介绍 实际演练 前言 在单体架构的时候我们可以将配置写在配置文件中,但有⼀个缺点就是每次修改配置都需要重启服务才能生效. 当应用程序实例比较少的时候还可以维护.如果转向微服务架构有成百上千个实例,每修改⼀次配置要将全部实例重启,不仅增加了系统的不稳定性,也提高了维护的成本. 那么如何能够做到服务不重启就可以修改配置?所有就产生了四个基础诉求: 需要支持动态修改配置 需要动态变更有多实时 变更快了之后如何管控控制变更风险,如灰度.回滚等 敏感配置如何做安全配置

  • 关于ios配置微信config出现验签失败的问题解决

    在开发中,出现了一个关于微信配置的问题. 使用的开发工具以及开发框架为 uniapp , JSSDK为 jweixin 使用uniapp进行公众号开发,需要在进入某个页面时候进行微信配置来达到更改分享信息的效果. 问题描述: 请求后台获取了微信配置参数并配置了微信参数后 在ios手机上显示验签失败,功能无法使用. 在微信开发者工具.安卓端验签成功,功能正常. 经测试,ios端刷新页面后,验签即正常,所以,配置参数没有问题. 解决方案: 1.(不推荐) 通过jweixin.error监听失败事件,

  • Rainbond配置组件自动构建部署官方文档讲解

    目录 前言 前提条件 基于源代码操作流程 1.开启组件 Git-Webhook 2.配置代码仓库 基于镜像仓库操作流程 1.开启镜像仓库 Webhook 自动构建 2.Tag 触发自动修改策略 3.配置镜像仓库 API 触发自动构建 前言 通过自动构建的功能,可以实现代码或镜像提交后组件自动触发构建和部署,Rainbond 提供了基于代码仓库 Webhooks.镜像仓库 Webhooks 和自定义 API 三种方式触发组件自动部署.自动构建的功能可以辅助开发者便捷的实现敏捷开发. 前提条件 组件

  • SpringCloud Feign高级配置详解

    目录 1.Feign对负载均衡的支持 2.Feign对熔断器的支持 3.Feign对请求压缩和响应压缩的支持 4.Feign的日志级别配置 1.Feign对负载均衡的支持 Feign 本身已经集成了Ribbon依赖和自动配置,因此我们不需要额外引入依赖,可以通过 ribbon.xx 来进行全局配置,也可以通过服务名.ribbon.xx 来对指定服务进行细节配置配置(参考之前,此处略) Feign默认的请求处理超时时长1s,有时候我们的业务确实执行的需要一定时间,那么这个时候,我们就需要调整请求处

随机推荐