針對使用JDBC方式串連資料庫的業務情境,您將資料庫帳號密碼儲存在RDS憑據或通用憑據後,應用可以整合憑據JDBC用戶端,通過在KMS託管的憑據完成資料庫連接身份鑒別。本文介紹如何安裝和使用憑據JDBC用戶端。
SDK介紹
憑據JDBC用戶端是針對使用JDBC方式串連資料庫的業務情境,該用戶端自動從KMS擷取憑據用於資料庫連接身份鑒別,更便於您整合。其他擷取和使用憑據的業務情境推薦您優先使用憑據用戶端,其次是KMS執行個體SDK和阿里雲SDK。詳細資料,請參見SDK參考。
如果您需要對憑據進行管控類操作,僅支援使用阿里雲SDK。
憑據JDBC用戶端具有以下功能特性:
支援Java資料庫連接(Java Database Connectivity,簡稱JDBC),包括在資料庫連接池(例如c3p0和DBCP)和資料來源中通過JDBC串連資料庫。
支援MySQL、SQL Server、PostgreSQL和MariaDB四種資料庫類型。
支援使用者自訂憑據重新整理頻率。
注意事項
支援的憑據類型:通用憑據、RDS憑據。
如果是RDS憑據,建議您使用雙帳號託管的RDS憑據。
如果是通用憑據,憑據值為JSON格式且內容格式如下。
{ "AccountName":"<您的資料庫帳號使用者名稱>", "AccountPassword":"<您的資料庫帳號密碼>" }
支援的開發語言:Java(Java 8及以上版本)。
支援的資料庫連接池:c3p0、DBCP 和 Druid。
重要Spring Boot 預設的 HikariCP 串連池存在 JDBC 錯誤碼處理不規範問題,可能導致 KMS 憑據重新整理失敗。
步驟一:建立訪問憑證
情境一:通過共用網關擷取憑據值
網路類型為公網或VPC網路。支援ECS執行個體RAM角色、RamRoleArn、STS Token、AccessKey等基於RAM的身份認證方式。詳細內容,請參見管理訪問憑據。
ECS執行個體RAM角色
ECS RAM角色是指為ECS執行個體授予的RAM角色,該RAM角色是一個受信服務為雲端服務器的普通服務角色。使用執行個體RAM角色可以實現在ECS執行個體內部無需配置AccessKey即可擷取臨時訪問憑證(STS Token),從而調用KMS的OpenAPI。
具體操作,請參見執行個體RAM角色。
登入RAM控制台,建立可信實體為阿里雲服務的RAM角色。
信任主體類型:選擇雲端服務。
信任主體名稱:選擇Elastic Compute Service。
授予RAM角色訪問KMS的許可權。
方式一:設定基於身份的策略
KMS內建了系統權限原則,可以直接綁定到RAM角色,詳細介紹,請參見Key Management Service系統權限原則參考。您也可以自訂權限原則。

方式二:設定基於資源的策略
KMS支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰、憑據。詳細介紹,請參見密鑰策略、憑據策略。
登入ECS管理主控台,將RAM角色授予ECS執行個體。

RamRoleArn
RAM使用者或雲產品可以通過扮演角色的方式擷取臨時許可權,而不是直接使用長期密鑰,降低了密鑰泄露的風險。例如,在臨時的資料處理任務中,RAM使用者或雲產品臨時扮演一個具有特定RamRoleArn的角色,完成任務后角色許可權被收回,減少泄露風險。
授予RAM角色訪問KMS的許可權。
方式一:設定基於身份的策略
KMS內建了系統權限原則,可以直接綁定到RAM角色,詳細介紹,請參見Key Management Service系統權限原則參考。您也可以自訂權限原則。

方式二:設定基於資源的策略
KMS支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰、憑據。詳細介紹,請參見密鑰策略、憑據策略。
擷取目標RAM角色的RamRoleArn。具體操作,請參見查看RAM角色。
說明RamRoleArn是RAM角色的ARN資訊,即需要扮演的角色ID。格式為acs:ram::$accountID:role/$roleName。$accountID為阿里雲帳號ID。$roleName為RAM角色名稱。

STS Token
通過STS服務為RAM使用者或RAM角色頒發一個臨時訪問憑證,可以在限定的有效期間內,以符合策略規定的許可權訪問KMS,超過有效期間後,該憑證自動失效。
為RAM使用者或RAM角色授予
AliyunSTSAssumeRoleAccess許可權。具體操作,請參見為RAM使用者授權、為RAM角色授權。
授予RAM使用者或RAM角色訪問KMS的許可權。
方式一:設定基於身份的策略
KMS內建了系統權限原則,可以直接綁定到RAM使用者或RAM角色,詳細介紹,請參見Key Management Service系統權限原則參考。您也可以自訂權限原則。

方式二:設定基於資源的策略
KMS支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰、憑據。詳細介紹,請參見密鑰策略、憑據策略。
使用RAM使用者或RAM角色調用STS服務的AssumeRole介面擷取STS臨時訪問憑證。具體操作,請參見AssumeRole - 擷取扮演角色的臨時身份憑證。
AccessKey
以使用RAM使用者的AccessKey為例。
阿里雲帳號預設有所有資源的Administrator許可權且不可修改,其AccessKey泄露會危及資源安全,因此強烈建議不要為主帳號建立AccessKey,請建立專用於API訪問的RAM使用者並建立對應的AccessKey,並完成最小化授權。具體操作,請參見建立AccessKey。
登入RAM控制台,在使用者頁面,單擊目標RAM使用者名稱稱。
在認證管理頁簽下的AccessKey地區,單擊建立AccessKey,並按照指引完成建立。

授予RAM使用者訪問KMS的許可權。
方式一:設定基於身份的策略
KMS內建了系統權限原則,可以直接綁定到RAM使用者,詳細介紹,請參見Key Management Service系統權限原則參考。您也可以自訂權限原則。

方式二:設定基於資源的策略
KMS支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰、憑據。詳細介紹,請參見密鑰策略、憑據策略。
ClientKey(不推薦)
請參考建立應用存取點中的標準建立方式,建立用於訪問共用網關的ClientKey。
配置網路規則時,網路類型選擇Public或VPC。
配置許可權規則範圍時,請選擇KMS共享网关。
情境二:通過專屬網關擷取憑據值(不推薦)
網路類型為KMS私人網路。訪問憑證僅支援ClientKey。
ClientKey支援快速建立和標準建立兩種方式。關於ClientKey的詳細介紹,請參見應用存取點概述、建立應用存取點。
方式一:快速建立
便捷高效適合於快速測試和開發情境,該方式建立的訪問憑證可以訪問KMS執行個體的全部資源。
登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊。
在应用接入頁簽,單擊创建应用接入点,在创建应用接入点面板完成各項配置。
配置項
說明
创建模式
選擇快速创建。
作用域(KMS实例)
選擇應用要訪問的KMS執行個體。
应用接入点名称
自訂應用存取點的名稱。
认证方式
預設為ClientKey,不支援修改。
默认权限策略
預設為
key/*secret/*,不支援修改。即應用可以訪問指定KMS執行個體中的所有密鑰和憑據。單擊確定,瀏覽器會自動下載ClientKey。
ClientKey包含應用身份憑證內容(ClientKeyContent)和憑證口令(ClientKeyPassword)。 應用身份憑證內容(ClientKeyContent)檔案名稱預設為
clientKey_****.json。憑證口令(ClientKeyPassword)檔案名稱預設為clientKey_****_Password.txt。
方式二:標準建立
若您希望對資源設定更精細化的存取權限,建議您使用標準建立。具體操作,請參考建立應用存取點。
重要建立應用存取點時如果選擇標準建立,需要注意以下兩點:
配置網路規則時,網路類型選擇Private。
配置許可權規則範圍時,請選擇對應的KMS執行個體ID。
步驟二:安裝用戶端
通過Maven的方式安裝憑據JDBC用戶端。
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-secretsmanager-jdbc</artifactId>
<version>x.x.x</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.x.x</version>
</dependency>建議您安裝最新版本的SDK。訪問aliyun-secretsmanager-jdbc瞭解更多安裝資訊和原始碼。
步驟三:通過secretsmanager.properties設定檔初始化用戶端
在專案中新增設定檔secretsmanager.properties,不同訪問憑證需要配置的參數不同。
AccessKey
## 訪問憑據類型
credentials_type=ak
## Access Key Id
credentials_access_key_id=#credentials_access_key_id#
## Access Key Secret
credentials_access_secret=#credentials_access_secret#
## 關聯的KMS服務地區
cache_client_region_id=[{"regionId":"#regionId#"}]
## 使用者自訂的重新整理頻率, 預設為6小時,最小值為5分鐘,單位為毫秒
refresh_secret_ttl=21600000RAMRoleArn
## 訪問憑據類型
credentials_type=ram_role
## Access Key Id
credentials_access_key_id=#credentials_access_key_id#
## Access Key Secret
credentials_access_secret=#credentials_access_secret#
## 訪問憑據Session名稱
credentials_role_session_name=#credentials_role_session_name#
## RAM Role ARN
credentials_role_arn=#credentials_role_arn#
## 訪問憑據Policy
credentials_policy=#credentials_policy#
## 關聯的KMS服務地區
cache_client_region_id=[{"regionId":"#regionId#"}]
## 使用者自訂的重新整理頻率, 預設為6小時,最小值為5分鐘,單位為毫秒
refresh_secret_ttl=21600000ECS執行個體RAM角色
## 訪問憑據類型
credentials_type=ecs_ram_role
## ECS RAM Role名稱
credentials_role_name=#credentials_role_name#
## 關聯的KMS服務地區
cache_client_region_id=[{"regionId":"#regionId#"}]
## 使用者自訂的重新整理頻率, 預設為6小時,最小值為5分鐘,單位為毫秒
refresh_secret_ttl=21600000STS Token
## 訪問憑據類型
credentials_type=sts
## Access Key Id
credentials_access_key_id=#credentials_access_key_id#
## Access Key Secret
credentials_access_secret=#credentials_access_secret#
## 訪問憑據Session名稱
credentials_role_session_name=#credentials_role_session_name#
## RAM Role ARN
credentials_role_arn=#credentials_role_arn#
## 訪問憑據Policy
credentials_policy=#credentials_policy#
## 關聯的KMS服務地區
cache_client_region_id=[{"regionId":"#regionId#"}]
## 使用者自訂的重新整理頻率, 預設為6小時,最小值為5分鐘,單位為毫秒
refresh_secret_ttl=21600000ClientKey(共用網關)
## 訪問憑據類型
credentials_type=client_key
# Client Key檔案路徑
client_key_private_key_path=#your client key private key file path#
## 讀取client key的解密密碼:支援從環境變數或者檔案讀取
client_key_password_from_env_variable=#your client key private key password environment variable name#
client_key_password_from_file_path=#your client key private key password file path#
## 關聯的KMS服務地區
cache_client_region_id=[{"regionId":"#regionId#"}]
## 使用者自訂的重新整理頻率, 預設為6小時,最小值為5分鐘,單位為毫秒
## 下面的配置將憑據重新整理頻率設定為1小時
refresh_secret_ttl=3600000ClientKey(專屬網關)
參數配置項為cache_client_dkms_config_info,cache_client_dkms_config_info採用JSON數組格式,您可配置多個KMS執行個體,以支援業務獲得更高標準的服務可用性保障和容災能力。
方式一:通過環境變數擷取ClientKey憑證口令
設定檔內容為:
cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your ClientKey file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]該方式您還需要將ClientKey的憑證口令(ClientKeyPassword)的內容配置到環境變數中,變數名稱由您自訂,配置完成後將
<YOUR_PASSWORD_ENV_VARIABLE>替換為變數名稱。樣本如下:cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromEnvVariable":"passwordFromEnvVariable","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]方式二:通過檔案擷取ClientKey憑證口令
ClientKey的憑證口令(ClientKeyPassword)下載後檔案名稱預設為
clientKey_****_Password.txt,您也可以修改檔案名稱,但需要將cache_client_dkms_config_info取值中<your Client Key file path>替換為修改後的檔案路徑。設定檔內容為:
cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your Client Key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]樣本如下:
cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromFilePath":"C:\RamSecretPlugin\src\main\resources\clientKeyPassword.txt","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]
各配置項說明:
配置項 | 配置項含義 | 說明 |
regionId | KMS執行個體所在地區ID。 | 具體的地區ID,請參見地區和可用性區域。 |
endpoint | KMS執行個體的網域名稱地址,格式為 | 訪問实例管理頁面,在執行個體詳情頁面查看实例VPC地址,即endpoint。 |
clientKeyFile | ClientKey檔案(JSON格式)的絕對路徑或相對路徑。 |
重要 ClientKey檔案和憑證口令是一一對應的,僅支援您在建立ClientKey時擷取。如果您在建立時未儲存,則需要在應用存取點AAP中重新建立ClientKey。更多詳細內容,請參見建立應用存取點。 |
passwordFromFilePath或passwordFromEnvVariable |
| |
ignoreSslCerts | 是否忽略KMS執行個體SSL認證的有效性檢查。KMS執行個體內建SSL認證,使用SSL/TLS協議用於身分識別驗證和加密通訊。取值:
| 正式生產環境中,請將該值設定為false。 |
caFilePath | KMS執行個體CA認證檔案的絕對路徑或相對路徑。 KMS執行個體CA認證,用於檢查KMS執行個體SSL認證的有效性。例如:檢查KMS執行個體SSL認證是否由對應的CA中心簽發、是否在有效期間內、以及對應的網域名稱是否為KMS執行個體的網域名稱地址(endpoint)。 | 訪問实例管理頁面,在執行個體詳情頁面,單擊实例CA证书地區的下载。 |
步驟四:使用憑據JDBC用戶端串連資料庫
樣本中僅介紹必須修改的屬性,其他屬性請您根據實際業務情況進行填寫。
通過JDBC方式串連資料庫
MySQL資料庫
說明請將
#your-mysql-secret-name#、<your-mysql-ip>、<your-mysql-port>、<your-database-name>替換為您實際使用的憑據名稱、伺服器IP地址、連接埠、資料庫名稱。import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class SecretManagerJDBCSample { public static void main(String[] args) throws Exception { // 載入阿里雲憑據JDBC用戶端 Load the JDBC Driver com.aliyun.kms.secretsmanager.MysqlSecretsManagerSimpleDriver Class.forName("com.aliyun.kms.secretsmanager.MysqlSecretsManagerSimpleDriver"); Connection connect = null; try { connect = DriverManager.getConnection("secrets-manager:mysql://<your-mysql-ip>:<your-mysql-port>/<your-database-name>", "#your-mysql-secret-name#",""); } catch(SQLException e) { e.printStackTrace(); } } }SQLServer資料庫
說明請將
#your-sqlserver-secret-name#、<your-sqlserver-ip>、<your-sqlserver-port>、<your-database-name>替換為您實際使用的憑據名稱、伺服器IP地址、連接埠、資料庫名稱。import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class SecretManagerJDBCSqlServerSample { public static void main(String[] args) throws Exception{ // 載入阿里雲憑據JDBC用戶端 Load the JDBC Driver com.aliyun.kms.secretsmanager.MssqlSecretsManagerSimpleDriver Class.forName("com.aliyun.kms.secretsmanager.MssqlSecretsManagerSimpleDriver"); Connection connect = null; try { connect = DriverManager.getConnection("secrets-manager:sqlserver://<your-sqlserver-ip>:<your-sqlserver-port>;databaseName=<your-database-name>", "#your-sqlserver-secret-name#", ""); } catch (SQLException e) { e.printStackTrace(); } } }PostgreSQL資料庫
說明請將
#your-postgresql-secret-name#、<your-postgresql-ip>、<your-postgresql-port>、<your-database-name>替換為您實際使用的憑據名稱、伺服器IP地址、連接埠、資料庫名稱。import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class SecretManagerJDBCPostgreSQLSample { public static void main(String[] args) throws Exception { // 載入阿里雲憑據JDBC用戶端 Load the JDBC Driver com.aliyun.kms.secretsmanager.PostgreSQLSecretManagerSimpleDriver Class.forName("com.aliyun.kms.secretsmanager.PostgreSQLSecretManagerSimpleDriver"); Connection connect = null; try { connect = DriverManager.getConnection("secrets-manager:postgresql://<your-postgresql-ip>:<your-postgresql-port>/<your-database-name>", "#your-postgresql-secret-name#", ""); } catch (SQLException e) { e.printStackTrace(); } } }MariaDB資料庫
說明請將
#your-mariadb-secret-name#、<your-mariadb-ip>、<your-mariadb-port>、<your-database-name>替換為您實際使用的憑據名稱、伺服器IP地址、連接埠、資料庫名稱。import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class SecretManagerJDBCMarialDBSample { public static void main(String[] args) throws Exception{ // 載入阿里雲憑據JDBC用戶端 Load the JDBC Driver com.aliyun.kms.secretsmanager.MariaDBSecretManagerSimpleDriver Class.forName("com.aliyun.kms.secretsmanager.MariaDBSecretManagerSimpleDriver"); Connection connect = null; try { connect = DriverManager.getConnection("secrets-manager:mariadb://<your-mariadb-ip>:<your-mariadb-port>/<your-database-name>", "#your-mariadb-secret-name#", ""); } catch (SQLException e) { e.printStackTrace(); } } }
通過資料庫連接池串連資料庫
請按如下方式設定c3p0設定檔(c3p0.properties)中的c3p0.user、c3p0.driverClass和c3p0.jdbcUrl。c3p0.user為憑據名稱,c3p0.driverClass為阿里雲憑據JDBC Driver類名稱,c3p0.jdbcUrl需要以secrets-manager開頭。
MySQL資料庫
說明請將
#your-mysql-secret-name#、<your-mysql-ip>、<your-mysql-port>、<your-database-name>替換為您實際使用的憑據名稱、伺服器IP地址、連接埠、資料庫名稱。c3p0.user=#your-mysql-secret-name# c3p0.driverClass=com.aliyun.kms.secretsmanager.MysqlSecretsManagerSimpleDriver c3p0.jdbcUrl=secrets-manager:mysql://<your-mysql-ip>:<your-mysql-port>/<your-database-name>SQLServer資料庫
說明請將
#your-sqlserver-secret-name#、<your-sqlserver-ip>、<your-sqlserver-port>、<your-database-name>替換為您實際使用的憑據名稱、伺服器IP地址、連接埠、資料庫名稱。c3p0.user=#your-sqlserver-secret-name# c3p0.driverClass=com.aliyun.kms.secretsmanager.MysqlSecretsManagerSimpleDriver c3p0.jdbcUrl=secrets-manager:sqlserver://<your-sqlserver-ip>:<your-sqlserver-port>/<your-database-name>PostgreSQL資料庫
說明請將
#your-postgresql-secret-name#、<your-postgresql-ip>、<your-postgresql-port>、<your-database-name>替換為您實際使用的憑據名稱、伺服器IP地址、連接埠、資料庫名稱。c3p0.user=#your-postgresql-secret-name# c3p0.driverClass=com.aliyun.kms.secretsmanager.MysqlSecretsManagerSimpleDriver c3p0.jdbcUrl=secrets-manager:postgresql://<your-postgresql-ip>:<your-postgresql-port>/<your-database-name>MariaDB資料庫
說明請將
#your-mariadb-secret-name#、<your-mariadb-ip>、<your-mariadb-port>、<your-database-name>替換為您實際使用的憑據名稱、伺服器IP地址、連接埠、資料庫名稱。c3p0.user=#your-mariadb-secret-name# c3p0.driverClass=com.aliyun.kms.secretsmanager.MysqlSecretsManagerSimpleDriver c3p0.jdbcUrl=secrets-manager:mariadb://<your-mariadb-ip>:<your-mariadb-port>/<your-database-name>
通過資料來源(DataSource)串連資料庫
以使用c3p0 ComboPooledDataSource、MySQL資料庫為例,在Spring設定檔中增加如下配置。
請將#your-mysql-secret-name#、<your-mysql-ip>、<your-mysql-port>、<your-database-name>替換為您實際使用的憑據名稱、伺服器IP地址、連接埠、資料庫名稱。
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" >
<property name="driverClass" value="com.aliyun.kms.secretsmanager.MysqlSecretsManagerSimpleDriver" />
<property name="user" value="#your-mysql-secret-name#" />
<property name="jdbcUrl" value="secrets-manager:mysql://<your-mysql-ip>:<your-mysql-port>/<your-database-name>" />
<property name="maxPoolSize" value="***" />
<property name="minPoolSize" value="***" />
<property name="initialPoolSize" value="***" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" >
<property name="dataSource" ref="dataSource" />
</bean>請您根據實際需求設定maxPoolSize、minPoolSize和initialPoolSize參數值。
通過Druid串連池串連資料庫
以MySQL資料庫為例,您需要修改設定檔中的如下屬性。
請將#your-mysql-secret-name#、<your-mysql-ip>、<your-mysql-port>、<your-database-name>替換為您實際使用的憑據名稱、伺服器IP地址、連接埠、資料庫名稱。
properties設定檔方式
username=#your-mysql-secret-name# driverClassName=com.aliyun.kms.secretsmanager.MysqlSecretsManagerSimpleDriver url=secrets-manager:mysql://<your-mysql-ip>:<your-mysql-port>/<your-database-name>bean配置方式
方式一:XML設定檔
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="username" value="${your-mysql-secret-name}" /> <property name="driverClassName" value="com.aliyun.kms.secretsmanager.MysqlSecretsManagerSimpleDriver" /> <property name="url" value="secrets-manager:mysql://<your-mysql-ip>:<your-mysql-port>/<your-database-name>" /> </bean>方式二:配置屬性注入
在應用中建立一個載入資料庫連接資訊的驅動類。
@Configuration public class DataConfig { @Value("${your-mysql-secret-name}") private String username; @Value("com.aliyun.kms.secretsmanager.MysqlSecretsManagerSimpleDriver") private String driverClassName; @Value("secrets-manager:mysql://<your-mysql-ip>:<your-mysql-port>/<your-database-name>") private String url; @Bean(name = "dataSource",initMethod = "init",destroyMethod = "close") public DruidDataSource dataSource(){ DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setUsername(username); druidDataSource.setDriverClassName(driverClassName); druidDataSource.setUrl(url); return druidDataSource; } }

