成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用Vault保護SpringBoot配置文件中的敏感數據,你學會了嗎?

開發 前端
Spring Vault 為訪問、存儲和撤銷秘密提供客戶端支持。有了 HashiCorp 的 Vault,你就有了一個集中的地方來管理所有環境中應用程序的外部秘密數據。

環境:SpringBoot2.7.16 + Vault1.15.5(Vault服務版本)

1. 簡介

SpringBoot作為流行的Java微服務框架,其配置文件可能包含數據庫密碼、API密鑰等敏感數據。為了保障這些信息的安全,Vault作為一個開源的秘密管理工具,成為了眾多開發者的選擇。本文將深入探討如何整合SpringBoot與Vault,實現對配置文件中敏感信息的有效保護,從而確保微服務應用的安全性。

Spring Vault 為訪問、存儲和撤銷秘密提供客戶端支持。有了 HashiCorp 的 Vault,你就有了一個集中的地方來管理所有環境中應用程序的外部秘密數據。Vault 可以管理應用程序數據、遠程應用程序/資源的用戶名/密碼等靜態和動態秘密,并為 MySQL、PostgreSQL、Apache Cassandra、Consul、AWS 等外部服務提供憑證。

2. Vault服務安裝及配置

本文將通過Docker安裝Vault服務。執行如下命令即可

docker run -d --name vault --cap-add=IPC_LOCK \
  -e 'VAULT_LOCAL_CONFIG={"storage": {"file": {"path": "/vault/file"}}, "listener": [{"tcp": { "address": "0.0.0.0:8200", "tls_disable": true}}], "default_lease_ttl": "168h", "max_lease_ttl": "720h", "ui": true}' \
  -p 8200:8200 hashicorp/vault server

上面以服務的模式運行vault。

--cap-add=IPC_LOCK:這是 Vault 鎖定內存所必需的,這會阻止內存被交換到磁盤。強烈推薦這個。在非開發環境中,如果不想使用該功能,則必須添加"disable_mlock: true"配置信息。

這將運行一個禁用 TLS 的 Vault 服務器,file存儲后端位于路徑/vault/file,默認秘密租約期限為一周,最長為 30 天。file不建議在生產使用中禁用 TLS 和使用存儲后端。

3. Vault基本操作

通過http://localhost:8200/ui/ 訪問Vault管理頁面

圖片圖片

這里輸入你初次進入頁面時會給你生成一份token文件,文件中包含了token信息。如下:

圖片圖片

進入管理頁面后點擊Secrets Engines菜單,在該菜單中進行信息的配置

圖片圖片

創建新的密鑰管理

圖片圖片

選擇KV

圖片圖片

輸入路徑Path,這個路徑就是以后你要訪問的路徑,然后點擊Enable Engine。

最后添加你需要的配置信息

圖片圖片

以上就是基本的配置。

在上面的加密引擎選擇中有個,Transit這個類型可以同來對數據進行加解密也是非常的實用。

4. Vault加解密數據

接下來我們通過Transit進行數據的加解密。

private VaultEndpoint vaultEndpoint ;
private VaultTemplate vaultTemplate  ;


@BeforeEach
public void init() {
  vaultEndpoint = new VaultEndpoint() ;
  vaultEndpoint.setHost("localhost") ;
  vaultEndpoint.setPort(8200) ;
  vaultEndpoint.setScheme("http") ;
  
  vaultTemplate = new VaultTemplate(vaultEndpoint, new TokenAuthentication("hvs.xxxxxxxxxxooooooooo"));
}

加密數據

@Test
public void testEncrypt() {
  String ret = vaultTemplate.opsForTransit().encrypt("db.password", "123123") ;
  System.out.println(ret) ;
}
// 輸出
vault:v1:1WxwJjUJnN78FnqsTzxo+9wnGyHln3yCdG+lf5ZC/SDmeQ==

解密數據

@Test
public void testDecrypt() {
  String ret = vaultTemplate.opsForTransit().decrypt("db.password", "vault:v1:wBLlqFGICCnONZgwm+9JRRiOF/0xoxuO+OIy4omZoS1FBg==") ;
  System.out.println(ret) ;
}
// 輸出
123123

5. 編程方式存儲KV值

首先在Vault上建立一個mydata秘鑰引擎。

@Test
public void testCreate() {
  Secrets ss = new Secrets();
  ss.username = "admin";
  ss.password = "123123";
  Map<String, Object> data = new HashMap<>() ;
  data.put("data", ss) ;
  vaultTemplate.write("/mydata/data/db", data) ;
}

圖片圖片

查詢獲取數據

@Test
public void testRead() {
  System.out.println( vaultTemplate.read("/mydata/data/db").getData()) ;
}

6. SpringBoot整合Vault

添加配置文件vault.properties,內容如下:

vault.uri=http://localhost:8200
vault.token=hvs.xxxxxxxxoooooooo

配置類

@Configuration
@VaultPropertySource(value = {"demo/db"})
@PropertySource("vault.properties")
@Import(EnvironmentVaultConfiguration.class)
public class AppVaultConfig {}

@VaultPropertySource注解配置你需要查詢的密鑰key信息@Import(EnvironmentVaultConfiguration.class) 該配置會自動在容器中配置VaultTemplate類型的Bean,并且讀取的配置信息就是上面vault.properties中的。

以上就是SpringBoot與Vault整合所需要的全部內容。接下來在Vault服務上配置數據庫的信息

圖片圖片

以上準備工作做完后,接下來就可以在SpringBoot配置文件中去引用這些配置了。

spring:
  datasource:
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/batch?serverTimeznotallow=GMT%2B8&nullCatalogMeansCurrent=true&useSSL=false
    username: ${db.username}
    password: ${db.password}
    type: com.zaxxer.hikari.HikariDataSource
    hikari:
      minimumIdle: 10
      maximumPoolSize: 13

到此,就完成了所有的配置工作,接下來只需要啟動服務,查看是否有異常即可。

圖片圖片

數據庫正確的連接。

以上是本篇文章的全部內容,希望對你有所幫助。

完畢!!!

責任編輯:武曉燕 來源: Spring全家桶實戰案例源碼
相關推薦

2020-04-16 08:00:00

Ansible Vau敏感數據加密

2023-10-13 09:04:09

2024-02-02 11:03:11

React數據Ref

2024-05-29 07:47:30

SpringJava@Resource

2023-11-29 07:23:04

參數springboto

2022-10-24 09:55:32

ESLintJavaScript

2022-11-08 08:45:30

Prettier代碼格式化工具

2025-01-02 10:02:44

2023-06-27 08:00:35

2024-08-19 10:24:14

2023-08-08 08:23:08

Spring日志?線程池

2023-11-27 07:26:42

Springboot容器

2023-10-30 07:05:31

2023-12-27 07:31:45

json產品場景

2024-10-09 07:40:43

2023-09-06 11:31:24

MERGE用法SQL

2022-07-08 09:27:48

CSSIFC模型

2024-01-19 08:25:38

死鎖Java通信

2024-02-04 00:00:00

Effect數據組件

2023-07-26 13:11:21

ChatGPT平臺工具
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 美国一级片在线观看 | 97久久精品午夜一区二区 | 国产精品永久免费 | 国产精品九九九 | 国产99久久精品一区二区永久免费 | 在线视频一区二区三区 | 亚洲国产aⅴ成人精品无吗 亚洲精品久久久一区二区三区 | 成人区一区二区三区 | 国产精品96久久久久久 | 久久久久久免费精品一区二区三区 | 中日韩av| 亚洲高清在线播放 | 中文字幕成人免费视频 | 国产成人福利在线观看 | 国产精品国产精品 | 国产h视频 | 国产一级在线观看 | 99精品欧美一区二区三区综合在线 | 国产精品区二区三区日本 | 欧美亚洲国产精品 | 日本男人天堂 | 日韩色图视频 | 九九热久久免费视频 | 亚洲精品久久久久久久久久久久久 | 国产色爽 | 国产精品久久久久免费 | 欧美一级淫片免费视频黄 | 夜久久| 粉嫩一区二区三区国产精品 | 成人h动漫亚洲一区二区 | 亚洲欧美日韩中文字幕一区二区三区 | 天天搞天天搞 | 中文字幕av一区 | 久久99视频免费观看 | 精品日韩一区 | 亚洲一区二区三区免费 | av国产精品 | 精品国产乱码久久久久久果冻传媒 | 日韩一区二区福利视频 | 91精品国产91久久久久久吃药 | 国产精品久久久久久久7电影 |