天天看點

Springboot yml配置參數資料加密 (資料加密篇 一)

前言

最近項目組開始關注一些敏感資料的明文相關的事宜 , 其實這些東西也是都有非常成熟的解決方案。 既然最近着手去解決這些事情,那麼也順便給還未了解的大夥普及一下。

這個系列就暫短的分成三篇 :

yml配置檔案裡敏感資料的加密

 第二篇    傳入資料敏感資料的加密存儲

​​javascript:void(0)​​

第三篇     使用mysql加解密函數輕松實作

​​Springboot 使用mysql加密解密函數 (資料加密篇 三)_默默不代表沉默-CSDN部落格​​

本篇是第一篇

正文

先看我們的實踐項目例子 :

Springboot yml配置參數資料加密 (資料加密篇 一)

 我們目标是想對這些我們認為是敏感的資料加密,不能這麼明白的展現出來 。

1. pom檔案引入依賴:

<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>2.1.0</version>
</dependency>      

2.yml引入加密鑰匙配置 :

#jasypt加密的密匙
jasypt:
  encryptor:
    password: JCCCCgd6Tsjckd87xGy6H1JGb47G2H72      

這裡注意,如果直接把加密password這樣擺在yml裡面,其實也是敏感的, 一會文章後面會介紹把這個當作啟動參數傳入。

3.開始事宜jasypt 加密 :

我們把需要加密的敏感資料拿出來,提前加密:

@Autowired
    StringEncryptor encryptor;

    @Test
    void contextLoads() {

        String dbUrl = encryptor.encrypt("jdbc:mysql://localhost:3306/mytest?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull");

        System.out.println(dbUrl);

        String username = encryptor.encrypt("root");

        System.out.println(username);

        String password = encryptor.encrypt("root");

        System.out.println(password);


    }      
Springboot yml配置參數資料加密 (資料加密篇 一)

可以拿到對應加密出來的資料 。

4.使用jasypt 的解析規則,把加密完後的資料替換配置到 yml檔案裡:

 規則  ENC(加密資料)

Springboot yml配置參數資料加密 (資料加密篇 一)

5. 運作項目,調用查詢接口,看看是否能正常擷取資料庫資料,校驗相關敏感資料是能正常解密解析的:

Springboot yml配置參數資料加密 (資料加密篇 一)

ok,到這裡我們已經完成了本篇的實踐内容 。

我們最後來針對這個  jasypt的加密解密使用鑰匙做點事情,

我們要把這個參數變成 不寫死不暴露 的:

Springboot yml配置參數資料加密 (資料加密篇 一)

方案提供思路: 當作啟動參數傳入 

實踐:

我們把yml的鑰匙去掉, 保留原先加密完的資料配置 :

spring:
  datasource:
    druid:
     url: ENC(OGNie1iT/W6LBSdXvmIv/tyQA69HbI1OUSh3MM/UeTv2dufbuJBu0aEf7EN86DOPiXOZyHtYTVwu+3AHtmPPZYxXbaw9xU04x8POZsWjx6BmQBmdNRyBVcO7IixG9F+WK6+jlRhXEsgqTk+MOpDuPBBmf8Zw+LoWeKPICfqn2SOJAOJ2gSrE7wDSR4YRejgDWDPcMIvo4yfKG8pJZZ6OeQ==)
     username: ENC(cuaMHDblkuVeHSFyV+OKmQ==)
     password: ENC(BEQNsEv0gIkvRWwg2P9ktg==)

server:
  port: 8766

mybatis:
  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: classpath:mybatis/mapper/*.xml      

然後當作 啟動參數傳入

-Djasypt.encryptor.password=JCCCCgd6Tsjckd87xGy6H1JGb47G2H72

如果是使用jar運作就對應指令裡面加入  類似:

java -jar -Djasypt.encryptor.password=JCCCCgd6Tsjckd87xGy6H1JGb47G2H72 XXX-xxxx.jar      

模拟測試一下這種方式:

繼續閱讀