Spring Boot整合Spring Cloud Vault進行安全儲存

省赚客开发者团队發表於2024-08-16

Spring Boot整合Spring Cloud Vault進行安全儲存

大家好,我是微賺淘客返利系統3.0的小編,是個冬天不穿秋褲,天冷也要風度的程式猿!

在微服務架構中,安全儲存敏感資訊是一個重要的話題。Spring Cloud Vault提供了一種安全的方式來儲存和訪問敏感資料,如API金鑰、資料庫密碼等。本文將介紹如何在Spring Boot應用中整合Spring Cloud Vault。

環境準備

確保你的開發環境已經安裝了Java 8或更高版本,以及Maven或Gradle作為構建工具。

新增依賴

在Spring Boot專案的pom.xml檔案中新增Spring Cloud Vault的依賴。

<dependencies>
    <!-- Spring Cloud Vault Dependency -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-vault-config</artifactId>
    </dependency>
</dependencies>

配置Vault伺服器

  1. 安裝Vault

    你可以從Vault官網下載並安裝Vault伺服器。

  2. 啟動Vault

    使用以下命令啟動Vault伺服器(確保已經配置好Vault的配置檔案)。

    vault server -config=/path/to/config.hcl
    
  3. 初始化Vault

    使用以下命令初始化Vault。

    vault operator init
    
  4. 認證Vault

    使用vault login命令進行認證。

配置Spring Boot應用

  1. 配置application.properties

    application.properties檔案中配置Vault伺服器的地址和認證資訊。

    spring.cloud.vault.host=127.0.0.1
    spring.cloud.vault.port=8200
    spring.cloud.vault.scheme=http
    spring.cloud.vault.authentication=TOKEN
    spring.cloud.vault.token=YOUR_VAULT_TOKEN
    
  2. 配置Vault儲存的金鑰

    在Vault中建立一個新金鑰路徑,並新增一些金鑰值。

    vault secrets enable -path=my-app-secrets kv
    vault kv put my-app-secrets/db username=root password=secretpassword
    

使用Vault配置

  1. 配置配置類

    建立一個配置類,使用@RefreshScope註解,以便在配置重新整理時更新配置。

    package cn.juwatech.config;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.cloud.context.config.annotation.RefreshScope;
    import org.springframework.stereotype.Component;
    
    @Component
    @RefreshScope
    public class VaultConfig {
        @Value("${vault.my-app-secrets.db.username}")
        private String dbUsername;
    
        @Value("${vault.my-app-secrets.db.password}")
        private String dbPassword;
    
        // Getters
    }
    
  2. 使用配置

    在Spring元件中注入配置,並使用它們。

    package cn.juwatech.service;
    
    import cn.juwatech.config.VaultConfig;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service
    public class DatabaseService {
        private final VaultConfig vaultConfig;
    
        @Autowired
        public DatabaseService(VaultConfig vaultConfig) {
            this.vaultConfig = vaultConfig;
        }
    
        public void connectToDatabase() {
            // 使用vaultConfig.dbUsername和vaultConfig.dbPassword連線資料庫
        }
    }
    

重新整理配置

Spring Cloud Vault支援配置重新整理,當Vault中的配置發生變化時,可以動態更新應用配置。

  1. 配置重新整理端點

    application.properties中啟用重新整理端點。

    management.endpoints.web.exposure.include=refresh
    
  2. 重新整理配置

    傳送POST請求到/actuator/refresh端點來重新整理配置。

    curl -X POST http://localhost:8080/actuator/refresh
    

結論

透過整合Spring Cloud Vault,Spring Boot應用可以安全地儲存和訪問敏感資訊。Vault提供了一種集中管理配置和秘密的方式,支援動態配置重新整理,非常適合微服務架構。使用Vault可以提高應用的安全性和靈活性。

本文著作權歸聚娃科技微賺淘客系統開發者團隊,轉載請註明出處!

相關文章