本文讲述了在Spring Boot/Spring Cloud应用中使用jasypt来加密properties。
详细信息直接看github文档即可,这里仅简单罗列一丢丢信息。
Jasypt为Spring Boot应用提供property sources的加密支持,可以加密的数据有:
##哪些是敏感信息?
由于很多应用使用 配置文件 (eg:properties、yml) 来存储配置信息,配置中经常会涉及到许多敏感信息。
举几个小例子:
由于各业务场景不同,因此敏感信息的定义也不同。
这里以自有团队的Spring Cloud Config来举个例子。
加密前的数据:
spring:
cloud:
config:
server:
git:
uri: https://example.domain.com/helloworld.git
username: yourname
password: yourpwd
加密后的数据:
spring:
cloud:
config:
server:
git:
uri: https://example.domain.com/helloworld.git
username: username
password: ENC(DoyyHAMYaEyJBJHW496HiTT4VIazUYZo)
参考 jasypt github文档最好,里面有更多信息,这里仅抛砖引玉,简单列举下使用步骤。
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
###配置加/解的密码
以配置在 bootstrap.yml 中为例:
jasypt:
encryptor:
password: JH8AS90jasH
默认使用 PBEWithMD5AndDES 加密算法,只有 jasypt.encryptor.password 是必要配置。
假设需要加密DB密码,密码为123456
创建一个测试类,加密后得到的加密密码为:BsSPrDRNeU/Nb1v/GsHvZA==
@RunWith(SpringRunner.class)
@SpringBootTest
public class BlogApplicationTests {
@Autowired
StringEncryptor stringEncryptor;
@Test
public void test() {
System.out.println(stringEncryptor.encrypt("123456"));
}
}
将加密后的属性值配置在配置文件中即可,ENC 是约定的关键字,在启动时会解析所有 PropertySource 中的加密属性。
spring.datasource.password=ENC(BsSPrDRNeU/Nb1v/GsHvZA==)
jasypt文档有更详细的介绍,支持多种配置方式甚至定制自己的Encryptor。
阅读本文的伙伴知道有这么回事即可,以后有使用场景时也算是个不错的选择。
欢迎关注陈同学的公众号,一起学习,一起成长
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。