在springcloud應(yīng)用開發(fā)中譬正,為了方便在線管理我們的配置文件,通常會配一個配置中心config-server檬姥,這里托管著應(yīng)用的一些配置文件曾我,這些配置文件中配置著我們很多的賬號信息:如mysql、redis穿铆、mongodb您单、rabbitmq等等的賬號和密碼。牽扯到賬號信息荞雏,想必我們要保證如何保證其安全性虐秦。
1.保證容器文件訪問的安全性平酿,即保證所有的網(wǎng)絡(luò)資源請求都需要登錄
通過springboot配置屬性之security,配置security.user.name和security.user.password可以初步達(dá)到安全訪問的效果悦陋。具體配置:在application.yml中配置如下:
在pom依賴中增加
重啟config-server后蜈彼,再通過url訪問文件資源時,會出現(xiàn)
2.將配置中心里所有配置文件中的密碼進(jìn)行加密俺驶,保證其密文性
springcloud的配置服務(wù)中心具有decrypt/encrypt功能幸逆,可以將原文加密成密文,也可以將密文解密成原文暮现。其工作原理是还绘,首先將密碼等原文通過開發(fā)者設(shè)置的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環(huán)境)
b.設(shè)置加密密鑰匾乓,在config-server的微服務(wù)中的application.yml文件中配置security.key=your key
c.重啟配置中心服務(wù)捞稿,會發(fā)現(xiàn)
d.將密碼原文加密
e.將加密后的密文復(fù)制,加上{cipher}標(biāo)識钝尸,編輯在配置文件中(標(biāo)識符和密文中間不能有任何字符括享,包括空格)
搞定后,我們的配置文件里所有的密碼都是密文珍促,即使將配置文件托管在GitHub上,別人看到也無法得知原文密碼是什么剩愧。