spring boot 配置文件安全策略

為了避免配置文件中關(guān)鍵的信息暴露出來,需要進(jìn)行安全控制。首先需要對配置文件中關(guān)鍵字段進(jìn)行加密,避免明文顯示。其次是需要將配置文件進(jìn)行集中儲存,并進(jìn)行安全控制。

1、配置文件中賬號和密碼進(jìn)行加密

由于在配置文件中需要配置jdbc的相關(guān)參數(shù),大多數(shù)人習(xí)慣用明文進(jìn)行配置,如下:

spring:
  application:
    name: athena
  profiles: uat

  datasource:
    url: jdbc:mysql://localhost:3306/athena?autoReconnect=true&useSSL=false
    username: root
    password: ENC(uNwnq8guBUeEdlSe0BXgVRx9PugA+cjv)  #pwd
    driver-class-name: com.mysql.jdbc.Driver

這樣的配置有兩個很大的弊端:
1、一旦服務(wù)器遭受攻擊,很容易通過反編譯獲取配置文件中數(shù)據(jù)庫的賬號和密碼
2、賬號和密碼時常暴露在外面,一些沒有權(quán)限的開發(fā)人員也易于獲取相關(guān)信息,于安全無益

解決方案:
由于spring boot 已經(jīng)集成了jasypt,所以添加相關(guān)依賴即可

1.1 添加maven 依賴

<!-- 加密工具 -->
<dependency>
       <groupId>com.github.ulisesbocchio</groupId>
       <artifactId>jasypt-spring-boot-starter</artifactId>
       <version>1.8</version>
</dependency>        

1.2. 在配置文件中配置加密參數(shù)(可以理解為加密的salt)

jasypt:
  encryptor:
    password: BdaObXaELAA   #(或者用123456)

1.3 使用加密

jasypt:
  encryptor:
    password: e!Jd&ljyJ^e4I5oU

spring:
  application:
    name: athena
  profiles: uat

  datasource:
    url: jdbc:mysql://localhost:3306/athena?autoReconnect=true&useSSL=false
    username: root
    password: ENC(uNwnq8guBUeEdlSe0BXgVRx9PugA+cjv)  #root
    driver-class-name: com.mysql.jdbc.Driver

1.4 加密密碼

public class JasypTest {


    @Autowired
    StringEncryptor stringEncryptor;

    @Test
    public void encryptPwd() {
        String result = stringEncryptor.encrypt("your paasword 123456");
        System.out.println(result); 
    }
}

2、配置文件放入spring cloud config 進(jìn)行統(tǒng)一管理

根據(jù)springCloudConfig的規(guī)范,

2.1 進(jìn)行相關(guān)配置創(chuàng)建psring cloud config Service

2.2 在應(yīng)用中配置bootstrap.yml文件

spring:
  profiles:
    active: uat

  application:
    name: athena #應(yīng)用名稱
  cloud:
    config:
       env: uat #環(huán)境名稱
       label: dev # 分支名稱
       uri: http://localhost:9090  #springCloudConfig Service 服務(wù)url

3、對springCloudConfig的訪問權(quán)限進(jìn)行限制

3.1 在springCloudConfig service 中設(shè)置訪問權(quán)限

在bootstrap.yml中設(shè)置加密信息

security:
  basic:
    enabled: true
  user:
    name: user
    password: pwd

3.2 在sprintCloudConfig Client 中設(shè)置訪問權(quán)限

spring:
  profiles:
    active: uat

  application:
    name: athena
  cloud:
    config:
       env: uat
       label: dev
       uri: http://user:pwd@localhost:9090  #url中添加賬戶名和密碼
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,273評論 6 342
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 100,671評論 9 468
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,034評論 25 709
  • 初春的清晨,薄薄的霧伴著淡淡的月光 路燈在身后閃爍著 昨夜的夢,我還沒醒 夢中的酒,我還沒喝 酒中的人,還沒看清 ...
    藍(lán)藍(lán)月亮閱讀 179評論 0 1

友情鏈接更多精彩內(nèi)容