Spring Boot應用程式連線資訊加解密流程,本篇不討論加密方式。
在應用程式部署環境中,基於安全問題應用程式存取的資料庫或其他服務的連線資訊必須以加密的形式存放在設定檔。例如原本連線的密碼為 123
,則必須先加密後例如C4LLDasrkaK9K2wcuYFmLg==
才能放在設定檔裡。
application.properties
username=wOvrHNJpT9Rr1B3NV3KsDQ==
password=C4LLDasrkaK9K2wcuYFmLg==
而程式執行時則要以原本未加密的連線資訊來存取資料庫或其他服務,因此必須將加密的資訊解密。而這個解密動作可以在系統啟動時進行。
在Spring Boot可透過新增類別實作ApplicationListener.onApplicationEvent()
監聽系統啟動事件,當系統啟動時會觸發並執行。接著從application.properites
取得加密的連線資訊,然後將連線資訊解密,最後把解密的資訊放回properties供後續使用。
因此application.properites
中加密的連線資訊事先就要透過加密程式工具來產生。將原本無加密的連線資訊透過加密工具加密後設定到application.properites
。
流程如下:
- Encrypt
123
toC4LLDasrkaK9K2wcuYFmLg==
- Set
password=C4LLDasrkaK9K2wcuYFmLg==
inapplication.properties
- Spring Boot start
ApplicationListener.onApplicationEvent()
triggered- Read password value from application.properties
- Decrypt
C4LLDasrkaK9K2wcuYFmLg==
to123
- Set
123
back to properties
印象中Spring好像有設定可以代替以上動作。
沒有留言:
張貼留言