JDBC を使用してデータベースに接続する際、データベースの認証情報を RDS シークレットまたは汎用シークレットとして保存できます。アプリケーションは Secrets JDBC クライアントを使用して、KMS からシークレットを取得し、データベース接続の認証を行います。
SDK の概要
Secrets JDBC クライアントは、JDBC を使用したデータベース接続を目的として設計されています。このクライアントは、データベース接続の認証に必要なシークレットを KMS から自動的に取得することで、統合を簡素化します。シークレットの取得および使用を伴うその他のシナリオでは、まず Secrets クライアントを使用し、その後で KMS インスタンス SDK および Alibaba Cloud SDK を使用することを推奨します。詳細については、「SDK リファレンス」をご参照ください。
シークレットの管理は、Alibaba Cloud SDK のみで行えます。
Secrets JDBC クライアントは、以下の機能を提供します。
Java Database Connectivity (JDBC) をサポートします。データベース接続プール (c3p0 や DBCP など) およびデータソースを使用した接続もサポートします。
MySQL、SQL Server、PostgreSQL、MariaDB の 4 種類のデータベースをサポートします。
シークレットのカスタム更新間隔をサポートします。
注意事項
サポートされるシークレットの種類:汎用シークレットおよび RDS シークレット。
RDS シークレットを使用する場合は、デュアルアカウント管理型の RDS シークレットを使用することを推奨します。
汎用シークレットを使用する場合、シークレット値は以下の JSON 形式である必要があります。
{ "AccountName":"<your-database-username>", "AccountPassword":"<your-database-password>" }
サポートされるプログラミング言語:Java 8 以降。
サポートされるデータベース接続プール:c3p0、DBCP、HikariCP、Druid。
ステップ 1:アクセス認証情報の作成
シナリオ 1:共有ゲートウェイを使用してシークレットを取得
サポートされるネットワークタイプは、パブリックネットワークおよび VPC です。この方法では、ECS インスタンス RAM ロール、RamRoleArn、STS トークン、AccessKey などの RAM ベースの認証方式をサポートします。詳細については、「アクセス認証情報の管理」をご参照ください。
ECS インスタンス RAM ロール
ECS インスタンス RAM ロールを使用すると、AccessKey ペアを設定せずに、ECS インスタンス内から一時的なアクセス認証情報 (STS トークン) を取得して KMS API オペレーションを呼び出すことができます。
詳細については、「インスタンス RAM ロール」をご参照ください。
RAM コンソール にログインし、信頼された Alibaba Cloud サービス向けの RAM ロールを作成します。
信頼エンティティタイプ: Elastic Compute Service を選択します。
信頼エンティティ: Elastic Compute Service (ECS) を選択します。
RAM ロールに KMS へのアクセス権限を付与します。
方法 1:ID ベースのポリシーを設定する
RAM ロールの 操作 列で、権限の付与 をクリックし、RAM ロールに KMS 向けの組み込みシステム権限ポリシーをアタッチします。KMS のシステム権限ポリシーの詳細については、「KMS のシステムポリシー」をご参照ください。
説明カスタム権限ポリシーを作成することもできます。詳細については、「カスタムポリシーの作成」をご参照ください。
方法 2:リソースベースのポリシーを設定する
KMS は、個々のキーおよびシークレットに対するアクセス権限を付与するリソースベースのポリシーをサポートしています。これらのポリシーを使用して、どの Alibaba Cloud アカウント、RAM ユーザー、および RAM ロールが KMS キーおよびシークレットを管理または使用できるかを制御できます。詳細については、「キーポリシー」および「シークレットポリシー」をご参照ください。
ECS コンソール にログインし、RAM ロールを ECS インスタンスにアタッチします。

RamRoleArn
RAM ユーザーまたはクラウドサービスは、長期キーを使用する代わりにロールを偽装して一時的な権限(STS トークン)を取得できます。これにより、キーの漏洩リスクを低減できます。たとえば、一時的なデータ処理タスクでは、RAM ユーザーまたはクラウドサービスが特定の RamRoleArn を持つロールを一時的に偽装します。タスクが完了すると、ロールの権限が取り消され、暴露リスクを最小限に抑えます。
ユーザー AccessKey ペアの作成
RAM コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。「ユーザー」ページで、対象の RAM ユーザー名をクリックします。
AliyunSTSAssumeRoleAccessシステムポリシー、またはsts:AssumeRoleアクションを含むカスタムポリシーを RAM ユーザーにアタッチします。認証管理 タブの AccessKey セクションで、Create AccessKey をクリックし、画面の指示に従います。
RAM ロールの作成および権限付与:
左側のナビゲーションウィンドウで、 を選択します。「ロール」ページで、ロールの作成 をクリックします。詳細については、「RAM ロールの作成」をご参照ください。
RAM ロールに KMS へのアクセス権限を付与します。
方法 1:ID ベースのポリシーを設定する
RAM ロールの 操作 列で、権限の付与 をクリックし、RAM ロールに KMS 向けの組み込みシステム権限ポリシーをアタッチします。KMS のシステム権限ポリシーの詳細については、「KMS のシステムポリシー」をご参照ください。
説明カスタム権限ポリシーを作成することもできます。詳細については、「カスタムポリシーの作成」をご参照ください。
方法 2:リソースベースのポリシーを設定する
KMS は、個々のキーおよびシークレットに対するアクセス権限を付与するリソースベースのポリシーをサポートしています。これらのポリシーを使用して、どの Alibaba Cloud アカウント、RAM ユーザー、および RAM ロールが KMS キーおよびシークレットを管理または使用できるかを制御できます。詳細については、「キーポリシー」および「シークレットポリシー」をご参照ください。
対象の RAM ロールの RamRoleArn を取得します。詳細については、「RAM ロール情報の表示」をご参照ください。
左側のナビゲーションウィンドウで、 を選択します。「ロール」ページで、対象のロール名をクリックします。
ロール詳細ページの ARN セクションで、RamRoleArn を確認します。
説明RamRoleArn は、偽装する RAM ロールの Alibaba Cloud リソースネーム (ARN) です。形式は
acs:ram::$accountID:role/$roleNameであり、$accountIDは Alibaba Cloud アカウント ID、$roleNameは RAM ロール名です。
STS トークン
セキュリティトークンサービス (STS) は、RAM ユーザーまたは RAM ロールに対して一時的なアクセス認証情報である STS トークン を発行します。このトークンにより、有効期間内に特定の権限で KMS にアクセスできます。トークンの有効期限が切れると、自動的に無効になります。
RAM コンソール にログインし、RAM ユーザーまたは RAM ロールを作成します。詳細については、「RAM ユーザーの作成」および「RAM ロールの作成」をご参照ください。
RAM ユーザーまたは RAM ロールに
AliyunSTSAssumeRoleAccess権限を付与します。詳細については、「RAM ユーザー権限の管理」および「RAM ロールへの権限付与」をご参照ください。RAM ユーザーまたは RAM ロールに KMS へのアクセス権限を付与します。
方法 1:ID ベースのポリシーを設定する
RAM ロールまたはユーザーの 操作 列で、権限の付与 をクリックし、KMS 向けの組み込みシステム権限ポリシーをアタッチします。KMS のシステム権限ポリシーの詳細については、「KMS のシステムポリシー」をご参照ください。
説明カスタム権限ポリシーを作成することもできます。詳細については、「カスタムポリシーの作成」をご参照ください。
方法 2:リソースベースのポリシーを設定する
KMS は、個々のキーおよびシークレットに対するアクセス権限を付与するリソースベースのポリシーをサポートしています。これらのポリシーを使用して、どの Alibaba Cloud アカウント、RAM ユーザー、および RAM ロールが KMS キーおよびシークレットを管理または使用できるかを制御できます。詳細については、「キーポリシー」および「シークレットポリシー」をご参照ください。
RAM ユーザーまたは RAM ロールを使用して STS AssumeRole オペレーションを呼び出し、一時的な STS アクセス認証情報を取得します。詳細については、「AssumeRole」をご参照ください。
AccessKey
Alibaba Cloud アカウントには、すべてのリソースに対する管理者権限がデフォルトで付与されており、変更できません。リソースのセキュリティを確保するため、RAM ユーザーを使用して AccessKey ペアを作成し、必要な最小限の権限のみを付与することを推奨します。
RAM コンソール にログインします。「ユーザー」ページで、対象の RAM ユーザー名をクリックします。
認証管理 タブの AccessKey セクションで、Create AccessKey をクリックし、画面の指示に従います。
RAM ユーザーに KMS へのアクセス権限を付与します。
方法 1:ID ベースのポリシーを設定する
RAM ユーザーの 操作 列で、権限の付与 をクリックし、RAM ユーザーに KMS 向けの組み込みシステム権限ポリシーをアタッチします。KMS のシステム権限ポリシーの詳細については、「KMS のシステムポリシー」をご参照ください。
説明カスタム権限ポリシーを作成することもできます。詳細については、「カスタムポリシーの作成」をご参照ください。
方法 2:リソースベースのポリシーを設定する
KMS は、個々のキーおよびシークレットに対するアクセス権限を付与するリソースベースのポリシーをサポートしています。これらのポリシーを使用して、どの Alibaba Cloud アカウント、RAM ユーザー、および RAM ロールが KMS キーおよびシークレットを管理または使用できるかを制御できます。詳細については、「キーポリシー」および「シークレットポリシー」をご参照ください。
ClientKey (非推奨)
Key Management Service コンソール にログインします。上部のナビゲーションバーでリージョンを選択し、左側のナビゲーションウィンドウで、 を選択します。
(省略可)ネットワークルールを作成します。
説明送信元 IP アドレスによるアクセスを制限するネットワークルールの設定は任意です。ただし、セキュリティを強化するため、設定することを推奨します。
Network Access Rules タブをクリックし、Create Network Access Rule をクリックします。
Create Network Access Rule パネルで、Network Type を パブリック に設定し、Allowed Source IP Addresses を入力し、OK をクリックします。
権限ポリシーの作成
権限ポリシー タブをクリックし、権限ポリシーの作成 をクリックします。
権限ポリシーの作成 パネルで、以下のように共有ゲートウェイ向けのパラメーターを設定し、OK をクリックします。
スコープ: Shared KMS Gateway
アクセス可能のリソース: アクセスするシークレットを選択します。
(省略可) Network Access Rules: 前のステップで作成したネットワークルールを選択します。
アプリケーションアクセスポイント (AAP) の作成
アプリケーションアクセス タブをクリックし、Create AAP をクリックします。
Create AAP パネルで、Mode を Standard Creation に設定し、以下のパラメーターを設定します。
パラメーター
説明
Authentication Method
ClientKey を選択します。
Encryption Password
8~64 文字の文字列を入力します。文字列には数字、英字、および特殊文字 (
~!@#$%^&*?_-) を含める必要があります。Validity Period
重要ClientKey 漏洩のリスクを低減するため、有効期間を 1 年に設定することを推奨します。サービス中断を回避するため、有効期限が切れる前に ClientKey をローテーションしてください。詳細については、「ClientKey のローテーション」をご参照ください。
権限ポリシー
前のステップで作成した権限ポリシーを選択します。
-
OK をクリックします。ブラウザにより ClientKey が自動的にダウンロードされます。ClientKey には以下のファイルが含まれます。
-
Credential (ClientKeyContent): デフォルトのファイル名は
clientKey_****.jsonです。 -
認証情報パスワード (ClientKeyPassword): デフォルトのファイル名は
clientKey_****_Password.txtです。
-
シナリオ 2:専用ゲートウェイを使用してシークレットを取得 (非推奨)
ネットワークタイプは KMS プライベートネットワークであり、ClientKey のみがサポートされるアクセス認証情報です。
ClientKey は、クイック作成モードまたは標準作成モードのいずれかで作成できます。ClientKey の詳細については、「アプリケーションアクセスポイント」および「アプリケーションアクセスポイントの作成」をご参照ください。
方法 1:クイック作成
この方法は便利かつ効率的で、迅速なテストおよび開発に適しています。この方法で作成されたアクセス認証情報は、KMS インスタンス内のすべてのリソースへのフルアクセス権限を持ちます。
Key Management Service コンソール にログインします。上部のナビゲーションバーでリージョンを選択し、左側のナビゲーションウィンドウで、 を選択します。
-
アプリケーションアクセス タブで、Create AAP をクリックします。Create AAP パネルで、パラメーターを設定します。
パラメーター
説明
Mode
Quick Creation を選択します。
Scope (KMS Instance)
アプリケーションがアクセスする必要のある KMS インスタンスを選択します。
Application Access Point Name
アプリケーションアクセスポイントの名前を入力します。
Authentication Method
ClientKey に設定されており、変更できません。
Credential encryption algorithm
ClientKey の暗号化に使用する暗号化アルゴリズムを選択します。有効値:TripleDES-CBC および RC2-CBC (デフォルト)。
Default Permission Policy
値は
key/*secret/*であり、変更できません。これは、アプリケーションが指定された KMS インスタンス内のすべてのキーおよびシークレットにアクセスできることを意味します。 -
OK をクリックします。ブラウザにより ClientKey が自動的にダウンロードされます。ClientKey には以下のファイルが含まれます。
-
Credential (ClientKeyContent): デフォルトのファイル名は
clientKey_****.jsonです。 -
認証情報パスワード (ClientKeyPassword): デフォルトのファイル名は
clientKey_****_Password.txtです。
-
方法 2:標準作成
リソースに対して詳細なアクセス権限を設定する必要がある場合は、標準作成方法を使用することを推奨します。
「アプリケーションアクセスポイントの作成」の標準作成手順に従って、専用ゲートウェイにアクセスするための ClientKey を作成します。主なパラメーターは以下のとおりです。
ネットワークルールを設定する際は、ネットワークタイプに [Private] を選択してください。
権限ルールの範囲を設定する際、対応する KMS インスタンス ID を選択します。
作成後、ブラウザにより ClientKey が自動的にダウンロードされます。ClientKey には以下のファイルが含まれます。
Credential (ClientKeyContent): デフォルトのファイル名は
clientKey_****.jsonです。認証情報パスワード (ClientKeyPassword): デフォルトのファイル名は
clientKey_****_Password.txtです。
ステップ 2:クライアントのインストール
Maven を使用して Secrets 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」をご参照ください。
ステップ 3:secretsmanager.properties によるクライアントの初期化
プロジェクトに secretsmanager.properties という名前の設定ファイルを追加します。設定が必要なパラメーターは、アクセス認証情報の種類によって異なります。
AccessKey
## アクセス認証情報の種類。
credentials_type=ak
## AccessKey ID。
credentials_access_key_id=#credentials_access_key_id#
## AccessKey Secret。
credentials_access_secret=#credentials_access_secret#
## 関連付けられた KMS サービスのリージョン。
cache_client_region_id=[{"regionId":"#regionId#"}]
## カスタム更新間隔。デフォルト値:6 時間。最小値:5 分。単位:ミリ秒。
refresh_secret_ttl=21600000RamRoleArn
## アクセス認証情報の種類。
credentials_type=ram_role
## AccessKey ID。
credentials_access_key_id=#credentials_access_key_id#
## AccessKey Secret。
credentials_access_secret=#credentials_access_secret#
## アクセス認証情報のセッション名。
credentials_role_session_name=#credentials_role_session_name#
## RAM ロールの ARN。
credentials_role_arn=#credentials_role_arn#
## アクセス認証情報のポリシー。
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 ロールの名前。
credentials_role_name=#credentials_role_name#
## 関連付けられた KMS サービスのリージョン。
cache_client_region_id=[{"regionId":"#regionId#"}]
## カスタム更新間隔。デフォルト値:6 時間。最小値:5 分。単位:ミリ秒。
refresh_secret_ttl=21600000STS トークン
## アクセス認証情報の種類。
credentials_type=sts
## AccessKey ID。
credentials_access_key_id=#credentials_access_key_id#
## AccessKey Secret。
credentials_access_secret=#credentials_access_secret#
## アクセス認証情報のセッション名。
credentials_role_session_name=#credentials_role_session_name#
## RAM ロールの ARN。
credentials_role_arn=#credentials_role_arn#
## アクセス認証情報のポリシー。
credentials_policy=#credentials_policy#
## 関連付けられた KMS サービスのリージョン。
cache_client_region_id=[{"regionId":"#regionId#"}]
## カスタム更新間隔。デフォルト値:6 時間。最小値:5 分。単位:ミリ秒。
refresh_secret_ttl=21600000ClientKey (共有ゲートウェイ)
## アクセス認証情報の種類。
credentials_type=client_key
# ClientKey のファイルパス。
client_key_private_key_path=#your client key private key file path#
## ClientKey の復号パスワード。環境変数またはファイルからパスワードを読み取ることができます。
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 (専用ゲートウェイ)
アプローチ 1:ファイルパスを設定する
cache_client_dkms_config_info=[{"regionId":"<your_dkms_region_id>","endpoint":"<your_dkms_endpoint>","passwordFromFilePath":"<your_password_file_path>","clientKeyFile":"<your_client_key_file_path>","ignoreSslCerts":false,"caFilePath":"<your_ca_certificate_file_path>"}]
アプローチ 2:環境変数経由でパスワードを設定する
cache_client_dkms_config_info=[{"regionId":"<your_dkms_region_id>","endpoint":"<your_dkms_endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your_client_key_file_path>","ignoreSslCerts":false,"caFilePath":"<your_ca_certificate_file_path>"}]
ステップ 4: データベースへの接続
以下の例は、変更が必要なプロパティのみを示しています。その他のプロパティは、ビジネス要件に基づいて設定してください。
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 { // Alibaba Cloud Secrets JDBC ドライバーをロードします: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(); } } }SQL Server データベース
説明#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{ // Alibaba Cloud Secrets JDBC ドライバーをロードします: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 { // Alibaba Cloud Secrets JDBC ドライバーをロードします: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{ // Alibaba Cloud Secrets JDBC ドライバーをロードします: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.properties 設定ファイルで c3p0.user、c3p0.driverClass、および c3p0.jdbcUrl を設定します。c3p0.user はシークレット名、c3p0.driverClass は Alibaba Cloud Secrets JDBC ドライバークラス名、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>SQL Server データベース
説明#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.MssqlSecretsManagerSimpleDriver 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.PostgreSQLSecretManagerSimpleDriver 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.MariaDBSecretManagerSimpleDriver c3p0.jdbcUrl=secrets-manager:mariadb://<your-mariadb-ip>:<your-mariadb-port>/<your-database-name>
データソースを使用した接続
この例では、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 設定を使用する
方法 1: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>方法 2:プロパティインジェクション
アプリケーション内に設定クラスを作成し、データベース接続情報をロードします。
@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; } }