springcloud應用配置中心config的安全設置
在springcloud應用開發中,為了方便在線管理我們的配置文件,通常會配一個配置中心config-server,這里托管着應用的一些配置文件,這些配置文件中配置着我們很多的賬號信息:如mysql、redis、mongodb、rabbitmq等等的賬號和密碼。牽扯到賬號信息,想必我們要保證如何保證其安全性。
1.保證容器文件訪問的安全性,即保證所有的網絡資源請求都需要登錄
通過springboot配置屬性之security,配置security.user.name和security.user.password可以初步達到安全訪問的效果。具體配置:在application.yml中配置如下:

security: basic: enabled: true
在pom依賴中增加

重啟config-server后,再通過url訪問文件資源時,會出現

2.將配置中心里所有配置文件中的密碼進行加密,保證其密文性
springcloud的配置服務中心具有decrypt/encrypt功能,可以將原文加密成密文,也可以將密文解密成原文。其工作原理是,首先將密碼等原文通過開發者設置的key和springcloud中的encrypt加密成密文,用密文替代配置文件中心的原文密碼;項目啟動加載配置中心時,會自動將密文解密成原文並加載到spring的上下文中(spring上下文中緩存的是原文而不是密文)。具體操作步驟如下
a.首先去http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html將文件下載並解壓,可以看到local_policy.jar和US_export_policy.jar以及readme.txt,如果安裝了jre,將兩個jar文件放到%JRE_HOME%\lib\security文件目錄下,如果安裝了jdk,也將兩個jar文件放到%JDK_HOME%\jre\lib\security文件目錄下。(jdk8環境)
b.設置加密密鑰,在config-server的微服務中的application.yml文件中配置security.key=your key

c.重啟配置中心服務,會發現

d.將密碼原文加密

e.將加密后的密文復制,加上{cipher}標識,編輯在配置文件中(標識符和密文中間不能有任何字符,包括空格)

搞定后,我們的配置文件里所有的密碼都是密文,即使將配置文件托管在GitHub上,別人看到也無法得知原文密碼是什么。
轉自:https://www.jianshu.com/p/93592860993d