spring cloud config 配置中心的安全配置

发布于 2021-03-20 12:10:03 字数 3450 浏览 1239 评论 0

配置中心提供 HTTP rest 服务

/{application}/{profile}[/{label}]   
/{application}-{profile}.yml   
/{label}/{application}-{profile}.yml   
/{application}-{profile}.properties   
/{label}/{application}-{profile}.properties   

{application} maps to "spring.application.name" on the client side;   

{profile} maps to "spring.profiles.active" on the client (comma separated list); and

{label} which is a server side feature labelling a "versioned" set of config files.

客户端配置举例: bootstrap.yml 优先于 application.yml 加载;

spring:
  application:
    name: foo
  profiles:
    active: dev,mysql

spring-cloud-config 使用 GIT 服务时,为 GIT 服务添加用户名密码

application.yml 配置文件中添加

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/spring-cloud-samples/config-repo
          username: trolley
          password: strongpassword

spring-cloud-config 的 REST 要求进行用户名密码鉴权

服务端

application.yml配置文件中添加

security.user.password: mysecret

pom.xml 中添加

                <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-security</artifactId>
		</dependency> 

客户端

bootstrap.yml

  
spring:
  cloud:
    config:
     uri: https://user:mysecret@myconfig.mycompany.com   

spring-cloud-config 中的配置信息以密文存储方式

有对称加密和非对称加密两种方式,本文主要讲对称加密的配置

1、application.yml在配置文件中添加encrypt.key参数,生产环境可以放到JVM启动参数中或者系统变量里

To configure a symmetric key you just need to set encrypt.key to a secret String (or use an enviroment variable ENCRYPT_KEY to keep it out of plain text configuration files).

如:application.yml

encrypt.key: foo

to use the encryption and decryption features you need the full-strength JCE installed in your JVM (it’s not there by default).

http://projects.spring.io/spring-cloud/spring-cloud.html#_encryption_and_decryption

2、使用 /encrypt rest 服务进行加密 (REST工具 https://www.getpostman.com/)

$ curl localhost:8888/encrypt -d mysecret
682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda

3、git 中的配置文件的配置项可以使用{cipher}开头,表示客户端调用时,配置服务会使用encrypt.key进行解密操作,使客户端得到最终信息

spring.datasource.password: {cipher}682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda

以上步骤解决了 GIT 仓库配置信息明文存储的问题.

4、当配置服务的客户端访问 URL 时,可以得到解密后的信息,

$curl localhost:8888/decrypt -d 682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
mysecret

参考资料

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

醉城メ夜风

文章 0 评论 0

远昼

文章 0 评论 0

平生欢

文章 0 评论 0

微凉

文章 0 评论 0

Honwey

文章 0 评论 0

qq_ikhFfg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文