内容简介:我们使用Spring Cloud Config的动机除了通常所说的微服务数量太多,方便配置的统一管理外。另一个重要原因是,application.properties(或application.yml)中配置项太多,在不同环境(dev、alpha、beta、www)下配置时,调整并核对application.properties时常看得眼花缭乱,而许多配置项运维时并不关心。所以决定用Spring Cloud Config对配置管理过程做一次调整。实验代码可从GitHub下载:https://github.
我们使用Spring Cloud Config的动机除了通常所说的微服务数量太多,方便配置的统一管理外。另一个重要原因是,application.properties(或application.yml)中配置项太多,在不同环境(dev、alpha、beta、www)下配置时,调整并核对application.properties时常看得眼花缭乱,而许多配置项运维时并不关心。所以决定用Spring Cloud Config对配置管理过程做一次调整。
实验代码可从GitHub下载:https://github.com/gpleo/spring-cloud-config-demo
包含了三个项目,用于大致演示Spring Cloud Config的配置方法。
- spring-cloud-config-server:配置服务器。
- blog-server:演示对称加密的配置方式。
- account-server:演示非对称加密的配置方式。
服务职责说明
Config Server
Spring Cloud Config Server负责从Git服务器下载配置并分发给Config Client,注意以下几项:
- Config Server不处理配置内容的加解密,需将spring.cloud.server.encrypt.enabled设为false;
- 使用Spring Security对配置内容的下载请求做权限控制。
Git Repository
配置内容存储在Git仓库,生产环境的敏感信息须加密后存储,加密内容前使用{cipher}前缀。
获取加密内容使用Spring Cloud Cli工具,使用类似下面的命令:
~ spring encrypt securityContent --key passkey 2c65b421138fd5c69f29560f9d972ab022b0d7e764482d565d3c5e3cdfc0155c
多个环境时,除生产环境使用保护分支master外,其他开发和测试环境都使用一个分支,可以是dev分支。
Config Client
在具体服务中集成Config Client处理配置,在生产环境中,Config Client需要配置密钥,以便对下载配置中的加密信息进行解密。(需要JCE完整版)
安全性说明
- Config Server简单集成Spring Security后使用单一的用户名密码,也就是每个服务的维护成员都可以看到其他所有服务的配置内容。这个感觉没有问题,Git中的敏感信息会被加密,未加密内容被其他团队成员看到应当问题不大。
-
生产环境的敏感信息使用对称加密,主要基于以下两个方面的考虑:
- 使用非对称加密稍嫌麻烦,不同服务下配置密钥需要花更多精力。
- 服务团队使用密钥加密配置内容后提交到Git,并在Config Client配置密钥,并不需要将密钥交给其他团队,使用非对称加密也没有太大意义。
- 不同服务可以使用不同密钥,即使密钥泄露影响的也只是一两个服务,必要时更换即可。
Spring Cloud Cli安装
- 下载Spring Boot Cli,下载地址:https://repo.spring.io/release/org/springframework/boot/spring-boot-cli/2.0.4.RELEASE/spring-boot-cli-2.0.4.RELEASE-bin.zip
- 解压后,将spring-2.0.4.RELEASE/bin加入环境变量。
- 安装Spring Cloud Cli插件,安装命令:spring install org.springframework.cloud:spring-cloud-cli:2.0.0.RELEASE
JCE策略文件替换
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
下载后,解压文件,把local_policy.jar,US_export_policy.jar拷贝并覆盖到$JAVA_HOME/jre/lib/security。
非对称加密处理说明
使用非对称加密对敏感数据进行加密时,比较繁琐,大致步骤如下:
1. 使用下面的命令生成密钥对
ssh-keygen -t rsa -f ./config_rsa
2. 创建证书请求
openssl req -new -key config_rsa -out config_cert.csr
3. 生成证书
openssl x509 -req -days 3650 -in config_cert.csr -signkey config_rsa -out config_cert.crt
4. 导出P12文件
openssl pkcs12 -export -out config.p12 -inkey config_rsa -in config_cert.crt -name democonfig
5. 使用 JAVA 的keytool将P12转为KeyStore文件
keytool -importkeystore -deststorepass storepass -destkeypass keypass -destkeystore config.jks -srckeystore config.p12 -srcstoretype PKCS12 -srcstorepass abc123 -alias democonfig
6. 将config.jks文件配置到Config Client中,配置方式如下:
encrypt: key-store: location: file:///root/demo/config.jks password: storepass alias: democonfig secret: keypass
以上所述就是小编给大家介绍的《Spring Cloud Config实践》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- vue项目实践004~~~一篮子的实践技巧
- HBase实践 | 阿里云HBase数据安全实践
- Spark 实践:物化视图在 SparkSQL 中的实践
- Spark实践|物化视图在 SparkSQL 中的实践
- HBase实践 | 数据人看Feed流-架构实践
- Kafka从上手到实践-实践真知:搭建Zookeeper集群
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
莱昂氏UNIX源代码分析
(澳)John Lions / 尤晋元 / 机械工业出版社 / 2000-7-1 / 49.00
本书由上、下两篇组成。上篇为UNIX版本6的源代码,下篇是莱昂先生对UNIX操作系统版本6源代码的详细分析。本书语言简洁、透彻,曾作为未公开出版物广泛流传了二十多年,是一部杰出经典之作。本书适合UNIX操作系统编程人员、大专院校师生学习参考使用。一起来看看 《莱昂氏UNIX源代码分析》 这本书的介绍吧!