網頁

2020/6/8

Spring Boot應用程式連線資訊加解密流程

Spring Boot應用程式連線資訊加解密流程,本篇不討論加密方式。

在應用程式部署環境中,基於安全問題應用程式存取的資料庫或其他服務的連線資訊必須以加密的形式存放在設定檔。例如原本連線的密碼為 123,則必須先加密後例如C4LLDasrkaK9K2wcuYFmLg==才能放在設定檔裡。

application.properties

username=wOvrHNJpT9Rr1B3NV3KsDQ==
password=C4LLDasrkaK9K2wcuYFmLg==

而程式執行時則要以原本未加密的連線資訊來存取資料庫或其他服務,因此必須將加密的資訊解密。而這個解密動作可以在系統啟動時進行。

在Spring Boot可透過新增類別實作ApplicationListener.onApplicationEvent()監聽系統啟動事件,當系統啟動時會觸發並執行。接著從application.properites取得加密的連線資訊,然後將連線資訊解密,最後把解密的資訊放回properties供後續使用。

因此application.properites中加密的連線資訊事先就要透過加密程式工具來產生。將原本無加密的連線資訊透過加密工具加密後設定到application.properites

流程如下:

  1. Encrypt 123 to C4LLDasrkaK9K2wcuYFmLg==
  2. Set password=C4LLDasrkaK9K2wcuYFmLg== in application.properties
  3. Spring Boot start
  4. ApplicationListener.onApplicationEvent() triggered
  5. Read password value from application.properties
  6. Decrypt C4LLDasrkaK9K2wcuYFmLg== to 123
  7. Set 123 back to properties

印象中Spring好像有設定可以代替以上動作。


沒有留言:

張貼留言