全部產品
Search
文件中心

Key Management Service:憑據 JDBC 用戶端

更新時間:Sep 16, 2026

針對使用 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、HikariCP 和 Druid。

步驟一:建立訪問憑證

情境一:通過共用網關擷取憑據值

網路類型為公網或VPC網路。支援ECS執行個體RAM角色、RamRoleArn、STS Token、AccessKey等基於RAM的身份認證方式。詳細內容,請參見管理訪問憑據。

ECS執行個體RAM角色

ECS RAM 角色是指為 ECS 執行個體授予的 RAM 角色,該 RAM 角色是一個受信服務為雲端服務器的普通服務角色。使用執行個體 RAM 角色可以實現在 ECS 執行個體內部無需配置 AccessKey 即可擷取臨時訪問憑證(STS Token),從而調用 KMS 的 OpenAPI。

具體操作,請參見執行個體RAM角色。

  1. 登入RAM 控制台,建立可信實體為阿里雲服務的 RAM 角色。

    • 信任主體類型:選擇云服务器。

    • 信任主體名稱:選擇Elastic Compute Service。

  2. 授予 RAM 角色訪問 KMS 的許可權。

    • 方式一:設定基於身份的策略

      單擊 RAM 角色操作列的新增授权,直接綁定 KMS 內建系統權限原則到 RAM 角色。KMS 內建系統權限原則,請參見Key Management Service系統權限原則參考。

      說明

      同時支援自訂權限原則,具體操作請參見建立自訂權限原則。

    • 方式二:設定基於資源的策略

      KMS 支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM 使用者、RAM 角色有許可權來管理或使用 KMS 密鑰、憑據。詳細介紹,請參見密鑰策略、憑據策略。

  3. 登入ECS 管理主控台,將 RAM 角色授予 ECS 執行個體。

RamRoleArn

RAM 使用者或雲產品可以通過扮演角色的方式擷取臨時許可權(STS Token),而不是直接使用長期密鑰,降低了密鑰泄露的風險。例如,在臨時的資料處理任務中,RAM 使用者或雲產品臨時扮演一個具有特定 RamRoleArn 的角色,完成任務后角色許可權被收回,減少泄露風險。

  1. 建立使用者 AK

    1. 登入RAM 控制台,在身份管理 > 用户頁面,單擊目標 RAM 使用者名稱稱。

    2. 為 RAM 使用者指派系統策略 AliyunSTSAssumeRoleAccess或包含許可權操作sts:AssumeRole的自訂策略。

    3. 在凭证管理標籤頁的AccessKey地區,單擊建立 AccessKey。

  2. 建立 RAM 角色並授權:

    1. 在身份管理 > 角色頁面,單擊创建角色具體操作,請參見建立RAM角色。

    2. 授予 RAM 角色訪問 KMS 的許可權。

      • 方式一:設定基於身份的策略

        單擊 RAM 角色操作列的新增授权,直接綁定 KMS 內建系統權限原則到 RAM 角色。KMS 內建系統權限原則,請參見Key Management Service系統權限原則參考。

        說明

        同時支援自訂權限原則,具體操作請參見建立自訂權限原則。

      • 方式二:設定基於資源的策略

        KMS 支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM 使用者、RAM 角色有許可權來管理或使用 KMS 密鑰、憑據。詳細介紹,請參見密鑰策略、憑據策略。

  3. 擷取目標 RAM 角色的 RamRoleArn。具體操作,請參見查看RAM角色。

    1. 在身份管理 > 角色頁面,單擊目標角色名稱。

    2. 進入角色詳情頁,在ARN地區可擷取 RamRoleArn 資訊。

      說明

      RamRoleArn 是 RAM 角色的 ARN 資訊,即需要扮演的角色 ID。格式為 acs:ram::$accountID:role/$roleName。$accountID 為阿里雲帳號 ID。$roleName 為 RAM 角色名稱。

STS Token

通過 STS 服務為 RAM 使用者或 RAM 角色頒發一個臨時訪問憑證(STS Token),可以在限定的有效期間內,以符合策略規定的許可權訪問 KMS,超過有效期間後,該憑證自動失效。

  1. 登入RAM 控制台,建立 RAM 使用者或 RAM 角色。具體操作,請參見建立RAM使用者、建立RAM角色。

  2. 為 RAM 使用者或 RAM 角色授予AliyunSTSAssumeRoleAccess許可權。具體操作,請參見管理RAM使用者的許可權、管理RAM角色的許可權。

  3. 授予 RAM 使用者或 RAM 角色訪問 KMS 的許可權。

    • 方式一:設定基於身份的策略

      單擊 RAM 角色或使用者操作列的新增授权,直接綁定 KMS 內建系統權限原則。KMS 內建系統權限原則,請參見Key Management Service系統權限原則參考。

      說明

      同時支援自訂權限原則,具體操作請參見建立自訂權限原則。

    • 方式二:設定基於資源的策略

      KMS 支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM 使用者、RAM 角色有許可權來管理或使用 KMS 密鑰、憑據。詳細介紹,請參見密鑰策略、憑據策略。

  4. 使用 RAM 使用者或 RAM 角色調用 STS 服務的 AssumeRole 介面擷取 STS 臨時訪問憑證。具體操作,請參見AssumeRole - 擷取扮演角色的臨時身份憑證。

AccessKey

警告

阿里雲帳號預設有所有資源的 Administrator 許可權且不可修改,為了確保資源安全,建議使用 RAM 使用者建立 AccessKey,並根據需求進行最小化授權。

  1. 登入RAM 控制台,在頁用户面,單擊目標 RAM 使用者名稱稱。

  2. 在凭证管理標籤頁的AccessKey地區,單擊建立 AccessKey。

  3. 授予 RAM 使用者訪問 KMS 的許可權。

    • 方式一:設定基於身份的策略

      單擊 RAM 使用者操作列的新增授权,直接綁定 KMS 內建系統權限原則到 RAM 角色。KMS 內建系統權限原則,請參見Key Management Service系統權限原則參考。

      說明

      同時支援自訂權限原則,具體操作請參見建立自訂權限原則。

    • 方式二:設定基於資源的策略

      KMS 支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM 使用者、RAM 角色有許可權來管理或使用 KMS 密鑰、憑據。詳細介紹,請參見密鑰策略、憑據策略。

ClientKey(不推薦)

  1. 登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊应用接入 > 多云接入(原接入点)。

  2. 建立網路規則(非必須)。

    說明

    如果不需要基於來源 IP 限制訪問,則不需要設定網路規則。但為了更高的安全性,通常建議合理設定。

    1. 單擊网络规则頁簽,然後單擊创建网络规则。

    2. 在创建网络规则面板,网络类型選擇Public,填寫允许访问的源IP地址後,單擊確定。

  3. 建立權限原則。

    1. 單擊权限策略,然後單擊创建权限策略。

    2. 在创建权限策略面板,按照下方提示完成共用網關配置後,單擊確定。

      1. 作用域:KMS共享网关

      2. 允许访问的资源:勾選需要訪問的憑據

      3. 网络控制规则(非必須):勾選步驟二建立網路規則。

  4. 建立應用存取點 AAP。

    1. 單擊应用接入頁簽,然後單擊创建应用接入点。

    2. 在创建应用接入点面板,创建模式選擇标准创建,然後按照下方提示完成各項配置。

      配置項

      說明

      认证方式

      選擇 ClientKey

      Client Key加密口令

      設定 8~64 位元包含數字、英文大小寫、特殊字元~!@#$%^&*?_-的字串

      有效期

      重要

      推薦設定為 1 年,以降低 ClientKey 被泄露的風險。請務必在到期前更換,以免無法正常訪問 KMS。具體操作,請參見更換ClientKey。

      权限策略

      選擇步驟三建立的權限原則。

    3. 單擊確認,瀏覽器會自動下載ClientKey。ClientKey包含以下內容:

      • 应用身份凭证内容(ClientKeyContent):檔案名稱預設為clientKey_****.json

      • 憑證口令(ClientKeyPassword):檔案名稱預設為clientKey_****_Password.txt。

情境二:通過專屬網關擷取憑據值(不推薦)

網路類型為KMS私人網路。訪問憑證僅支援ClientKey。

ClientKey 支援快速建立和標準建立兩種方式。關於 ClientKey 的詳細介紹,請參見應用存取點概述、建立應用存取點。

  • 方式一:快速建立

    操作便捷高效,適用於快速測試和開發情境,該方式建立的訪問憑證可以訪問 KMS 執行個體的全部資源。

    1. 登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊应用接入 > 多云接入(原接入点)。

    2. 在应用接入頁簽,單擊创建应用接入点,在创建应用接入点面板完成各項配置。

      配置項

      說明

      创建模式

      選擇快速创建。

      作用域(KMS实例)

      選擇應用要訪問的KMS執行個體。

      应用接入点名称

      自訂應用存取點的名稱。

      认证方式

      預設為ClientKey,不支援修改。

      密碼編譯演算法

      選擇用於加密 ClientKey 的密碼編譯演算法。可選 TripleDES-CBC 或 RC2-CBC,預設為 RC2-CBC。

      默认权限策略

      預設為key/*secret/*,不支援修改。即應用可以訪問指定KMS執行個體中的所有密鑰和憑據。

    3. 單擊確認,瀏覽器會自動下載ClientKey。ClientKey包含以下內容:

      • 应用身份凭证内容(ClientKeyContent):檔案名稱預設為clientKey_****.json

      • 憑證口令(ClientKeyPassword):檔案名稱預設為clientKey_****_Password.txt。

  • 方式二:標準建立

    若希望對資源設定更精細化的存取權限,建議使用標準建立。

    1. 請參考建立應用存取點中的標準建立方式,建立用於訪問專屬網關的 ClientKey。關鍵配置說明如下:

      1. 配置網路規則時,網路類型選擇Private。

      2. 配置許可權規則範圍時,請選擇對應的KMS 執行個體 ID。

    2. 建立完成後,瀏覽器會自動下載 ClientKey。ClientKey 包含以下內容:

      • 应用身份凭证内容(ClientKeyContent):檔案名稱預設為clientKey_****.json

      • 憑證口令(ClientKeyPassword):檔案名稱預設為clientKey_****_Password.txt。

步驟二:安裝用戶端

通過 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=21600000

RAMRoleArn

## 訪問憑據類型
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=21600000

ECS執行個體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=21600000

STS 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=21600000

ClientKey(共用網關)

## 訪問憑據類型
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=3600000

ClientKey(專屬網關)

  • 方案一:配置ClientKey憑證口令(clientKey_****_Password.txt)檔案的路徑,由SDK讀取其中的內容。

    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>"}]
  • 方案二:直接配置ClientKey憑證口令(ClientKeyPassword)內容

    警告

    請先將憑證口令(ClientKeyPassword)即clientKey_****_Password.txt中的內容,存放至自訂環境變數(如clientKeyPassword_content)中。

    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>"}]

步驟四:使用憑據 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;
          }
      }