在springcloud應用開發中,爲了方便在線管理咱們的配置文件,一般會配一個配置中心config-server,這裏託管着應用的一些配置文件,這些配置文件中配置着咱們不少的帳號信息:如mysql、redis、mongodb、rabbitmq等等的帳號和密碼。牽扯到帳號信息,想必咱們要保證如何保證其安全性。html
1.保證容器文件訪問的安全性,即保證全部的網絡資源請求都須要登陸java
經過springboot配置屬性之security,配置security.user.name和security.user.password能夠初步達到安全訪問的效果。具體配置:在application.yml中配置以下:mysql
security: basic: enabled: true
在pom依賴中增長redis
重啓config-server後,再經過url訪問文件資源時,會出現spring
2.將配置中內心全部配置文件中的密碼進行加密,保證其密文性sql
springcloud的配置服務中心具備decrypt/encrypt功能,能夠將原文加密成密文,也能夠將密文解密成原文。其工做原理是,首先將密碼等原文經過開發者設置的key和springcloud中的encrypt加密成密文,用密文替代配置文件中心的原文密碼;項目啓動加載配置中心時,會自動將密文解密成原文並加載到spring的上下文中(spring上下文中緩存的是原文而不是密文)。具體操做步驟以下mongodb
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.重啓配置中心服務,會發現springboot
d.將密碼原文加密
e.將加密後的密文複製,加上{cipher}標識,編輯在配置文件中(標識符和密文中間不能有任何字符,包括空格)
搞定後,咱們的配置文件裏全部的密碼都是密文,即便將配置文件託管在GitHub上,別人看到也沒法得知原文密碼是什麼。