ylbtech-雜項-SpringBoot-Jasypt:Jasypt(安全框架) |
1. 使用jasypt加密Spring Boot應用中的敏感配置返回頂部 |
1、
本文講述了在Spring Boot/Spring Cloud應用中使用jasypt來加密properties。
jasypt 簡介
詳細信息直接看github文檔即可,這里僅簡單羅列一丟丟信息。
Jasypt為Spring Boot應用提供property sources的加密支持,可以加密的數據有:
- system property
- environment property
- command line argument
- application.properties
- yaml properties
- other custom property sources
##哪些是敏感信息?
由於很多應用使用 配置文件 (eg:properties、yml) 來存儲配置信息,配置中經常會涉及到許多敏感信息。
舉幾個小例子:
- 普通應用密碼信息,如:DB、Rabbit、Redis等
- 特殊密碼信息,如:Spring Cloud Config需要配置Git等VCS密碼信息
- 第三方通訊憑證信息,如:調用第三方接口發送短信的通訊憑證信息
由於各業務場景不同,因此敏感信息的定義也不同。
應用場景案例
這里以自有團隊的Spring Cloud Config來舉個例子。
- 場景: 使用兩個git repository來存儲配置信息,一個存儲生產環境配置,一個存儲非生產環境所有配置。分兩個的目的是控制權限,生產環境僅特定人員可見。
- 問題: 由於VCS的賬戶密碼存儲在配置文件中,所以分兩個git repo存儲配置也是自欺欺人,可以直接根據配置文件中的VCS密碼下載生產環境的配置信息。
- 解決: 對VCS密碼進行加密
加密前的數據:
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
參考 jasypt github文檔最好,里面有更多信息,這里僅拋磚引玉,簡單列舉下使用步驟。
引入jasypt-spring-boot-starter依賴
<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。
2、
2.返回頂部 |
3.返回頂部 |
4.返回頂部 |
5.返回頂部 |
0、
0.1、
1、
2、
6.返回頂部 |
![]() |
作者:ylbtech 出處:http://ylbtech.cnblogs.com/ 本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。 |