针对使用 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角色。
登录RAM 控制台,创建可信实体为阿里云服务的 RAM 角色。
信任主体类型:选择云服务器。
信任主体名称:选择云服务器 ECS。
授予 RAM 角色访问 KMS 的权限。
方式一:设置基于身份的策略
单击 RAM 角色操作列的新增授权,直接绑定 KMS 内置系统权限策略到 RAM 角色。KMS 内置系统权限策略,请参见密钥管理服务系统权限策略参考。
说明同时支持自定义权限策略,具体操作请参见创建自定义权限策略。
方式二:设置基于资源的策略
KMS 支持基于资源的策略,即为单个密钥和凭据设置访问权限,用于控制哪些阿里云账号、RAM 用户、RAM 角色有权限来管理或使用 KMS 密钥、凭据。详细介绍,请参见密钥策略、凭据策略。
登录ECS 管理控制台,将 RAM 角色授予 ECS 实例。
RamRoleArn
RAM 用户或云产品可以通过扮演角色的方式获取临时权限(STS Token),而不是直接使用长期密钥,降低了密钥泄露的风险。例如,在临时的数据处理任务中,RAM 用户或云产品临时扮演一个具有特定 RamRoleArn 的角色,完成任务后角色权限被收回,减少泄露风险。
创建用户 AK
登录RAM 控制台,在页面,单击目标 RAM 用户名称。
为 RAM 用户分配系统策略
AliyunSTSAssumeRoleAccess或包含权限操作sts:AssumeRole的自定义策略。在凭证管理标签页的AccessKey区域,单击创建 AccessKey。
创建 RAM 角色并授权:
在页面,单击创建角色具体操作,请参见创建RAM角色。
授予 RAM 角色访问 KMS 的权限。
方式一:设置基于身份的策略
单击 RAM 角色操作列的新增授权,直接绑定 KMS 内置系统权限策略到 RAM 角色。KMS 内置系统权限策略,请参见密钥管理服务系统权限策略参考。
说明同时支持自定义权限策略,具体操作请参见创建自定义权限策略。
方式二:设置基于资源的策略
KMS 支持基于资源的策略,即为单个密钥和凭据设置访问权限,用于控制哪些阿里云账号、RAM 用户、RAM 角色有权限来管理或使用 KMS 密钥、凭据。详细介绍,请参见密钥策略、凭据策略。
获取目标 RAM 角色的 RamRoleArn。具体操作,请参见查看RAM角色。
在页面,单击目标角色名称。
进入角色详情页,在ARN区域可获取 RamRoleArn 信息。
说明RamRoleArn 是 RAM 角色的 ARN 信息,即需要扮演的角色 ID。格式为 acs:ram::$accountID:role/$roleName。$accountID 为阿里云账号 ID。$roleName 为 RAM 角色名称。
STS Token
通过 STS 服务为 RAM 用户或 RAM 角色颁发一个临时访问凭证(STS Token),可以在限定的有效期内,以符合策略规定的权限访问 KMS,超过有效期后,该凭证自动失效。
为 RAM 用户或 RAM 角色授予
AliyunSTSAssumeRoleAccess权限。具体操作,请参见管理RAM用户的权限、管理RAM角色的权限。授予 RAM 用户或 RAM 角色访问 KMS 的权限。
方式一:设置基于身份的策略
单击 RAM 角色或用户操作列的新增授权,直接绑定 KMS 内置系统权限策略。KMS 内置系统权限策略,请参见密钥管理服务系统权限策略参考。
说明同时支持自定义权限策略,具体操作请参见创建自定义权限策略。
方式二:设置基于资源的策略
KMS 支持基于资源的策略,即为单个密钥和凭据设置访问权限,用于控制哪些阿里云账号、RAM 用户、RAM 角色有权限来管理或使用 KMS 密钥、凭据。详细介绍,请参见密钥策略、凭据策略。
使用 RAM 用户或 RAM 角色调用 STS 服务的 AssumeRole 接口获取 STS 临时访问凭证。具体操作,请参见获取扮演角色的临时身份凭证。
AccessKey
阿里云账号默认有所有资源的 Administrator 权限且不可修改,为了确保资源安全,建议使用 RAM 用户创建 AccessKey,并根据需求进行最小化授权。
登录RAM 控制台,在页用户面,单击目标 RAM 用户名称。
在凭证管理标签页的AccessKey区域,单击创建 AccessKey。
授予 RAM 用户访问 KMS 的权限。
方式一:设置基于身份的策略
单击 RAM 用户操作列的新增授权,直接绑定 KMS 内置系统权限策略到 RAM 角色。KMS 内置系统权限策略,请参见密钥管理服务系统权限策略参考。
说明同时支持自定义权限策略,具体操作请参见创建自定义权限策略。
方式二:设置基于资源的策略
KMS 支持基于资源的策略,即为单个密钥和凭据设置访问权限,用于控制哪些阿里云账号、RAM 用户、RAM 角色有权限来管理或使用 KMS 密钥、凭据。详细介绍,请参见密钥策略、凭据策略。
ClientKey(不推荐)
登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击。
创建网络规则(非必须)。
说明如果不需要基于来源 IP 限制访问,则不需要设置网络规则。但为了更高的安全性,通常建议合理设置。
单击网络规则页签,然后单击创建网络规则。
在创建网络规则面板,网络类型选择Public,填写允许访问的源IP地址后,单击确定。
创建权限策略。
单击权限策略,然后单击创建权限策略。
在创建权限策略面板,按照下方提示完成共享网关配置后,单击确定。
作用域:KMS共享网关
允许访问的资源:勾选需要访问的凭据
网络控制规则(非必须):勾选步骤二创建网络规则。
创建应用接入点 AAP。
单击应用接入页签,然后单击创建应用接入点。
在创建应用接入点面板,创建模式选择标准创建,然后按照下方提示完成各项配置。
配置项
说明
认证方式
选择 ClientKey
Client Key加密口令
设置 8~64 位包含数字、英文大小写、特殊字符
~!@#$%^&*?_-的字符串有效期
重要推荐设置为 1 年,以降低 ClientKey 被泄露的风险。请务必在到期前更换,以免无法正常访问 KMS。具体操作,请参见更换ClientKey。
权限策略
选择步骤三创建的权限策略。
单击确定,浏览器会自动下载ClientKey。ClientKey包含以下内容:
应用身份凭证内容(ClientKeyContent):文件名默认为
clientKey_****.json凭证口令(ClientKeyPassword):文件名默认为
clientKey_****_Password.txt。
场景二:通过专属网关获取凭据值(不推荐)
网络类型为KMS私有网络。访问凭证仅支持ClientKey。
ClientKey 支持快速创建和标准创建两种方式。关于 ClientKey 的详细介绍,请参见应用接入点概述、创建应用接入点。
方式一:快速创建
操作便捷高效,适用于快速测试和开发场景,该方式创建的访问凭证可以访问 KMS 实例的全部资源。
登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击。
在应用接入页签,单击创建应用接入点,在创建应用接入点面板完成各项配置。
配置项
说明
创建模式
选择快速创建。
作用域(KMS实例)
选择应用要访问的KMS实例。
应用接入点名称
自定义应用接入点的名称。
认证方式
默认为ClientKey,不支持修改。
加密算法
选择用于加密 ClientKey 的加密算法。可选 TripleDES-CBC 或 RC2-CBC,默认为 RC2-CBC。
说明RC2-CBC 适用于大多数运行环境,推荐优先使用;若您的运行环境有更严格的算法要求而不支持 RC2-CBC,请选择 TripleDES-CBC
默认权限策略
默认为
key/*secret/*,不支持修改。即应用可以访问指定KMS实例中的所有密钥和凭据。单击确定,浏览器会自动下载ClientKey。ClientKey包含以下内容:
应用身份凭证内容(ClientKeyContent):文件名默认为
clientKey_****.json凭证口令(ClientKeyPassword):文件名默认为
clientKey_****_Password.txt。
方式二:标准创建
若希望对资源设置更精细化的访问权限,建议使用标准创建。
请参考创建应用接入点中的标准创建方式,创建用于访问专属网关的 ClientKey。关键配置说明如下:
配置网络规则时,网络类型选择Private。
配置权限规则作用域时,请选择对应的KMS 实例 ID。
创建完成后,浏览器会自动下载 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; } }
-