すべてのプロダクト
Search
ドキュメントセンター

Key Management Service:Secrets JDBC クライアント

最終更新日:Jun 13, 2026

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 ロール」をご参照ください。

  1. RAM コンソール にログインし、信頼された Alibaba Cloud サービス向けの RAM ロールを作成します。

    • 信頼エンティティタイプ: Elastic Compute Service を選択します。

    • 信頼エンティティ: Elastic Compute Service (ECS) を選択します。

  2. RAM ロールに KMS へのアクセス権限を付与します。

    • 方法 1:ID ベースのポリシーを設定する

      RAM ロールの 操作 列で、権限の付与 をクリックし、RAM ロールに KMS 向けの組み込みシステム権限ポリシーをアタッチします。KMS のシステム権限ポリシーの詳細については、「KMS のシステムポリシー」をご参照ください。

      説明

      カスタム権限ポリシーを作成することもできます。詳細については、「カスタムポリシーの作成」をご参照ください。

    • 方法 2:リソースベースのポリシーを設定する

      KMS は、個々のキーおよびシークレットに対するアクセス権限を付与するリソースベースのポリシーをサポートしています。これらのポリシーを使用して、どの Alibaba Cloud アカウント、RAM ユーザー、および RAM ロールが KMS キーおよびシークレットを管理または使用できるかを制御できます。詳細については、「キーポリシー」および「シークレットポリシー」をご参照ください。

  3. ECS コンソール にログインし、RAM ロールを ECS インスタンスにアタッチします。image

RamRoleArn

RAM ユーザーまたはクラウドサービスは、長期キーを使用する代わりにロールを偽装して一時的な権限(STS トークン)を取得できます。これにより、キーの漏洩リスクを低減できます。たとえば、一時的なデータ処理タスクでは、RAM ユーザーまたはクラウドサービスが特定の RamRoleArn を持つロールを一時的に偽装します。タスクが完了すると、ロールの権限が取り消され、暴露リスクを最小限に抑えます。

  1. ユーザー AccessKey ペアの作成

    1. RAM コンソール にログインします。左側のナビゲーションウィンドウで、アイデンティティ > ユーザー を選択します。「ユーザー」ページで、対象の RAM ユーザー名をクリックします。

    2. AliyunSTSAssumeRoleAccess システムポリシー、または sts:AssumeRole アクションを含むカスタムポリシーを RAM ユーザーにアタッチします。

    3. 認証管理 タブの AccessKey セクションで、Create AccessKey をクリックし、画面の指示に従います。

  2. RAM ロールの作成および権限付与:

    1. 左側のナビゲーションウィンドウで、アイデンティティ > ロール を選択します。「ロール」ページで、ロールの作成 をクリックします。詳細については、「RAM ロールの作成」をご参照ください。

    2. RAM ロールに KMS へのアクセス権限を付与します。

      • 方法 1:ID ベースのポリシーを設定する

        RAM ロールの 操作 列で、権限の付与 をクリックし、RAM ロールに KMS 向けの組み込みシステム権限ポリシーをアタッチします。KMS のシステム権限ポリシーの詳細については、「KMS のシステムポリシー」をご参照ください。

        説明

        カスタム権限ポリシーを作成することもできます。詳細については、「カスタムポリシーの作成」をご参照ください。

      • 方法 2:リソースベースのポリシーを設定する

        KMS は、個々のキーおよびシークレットに対するアクセス権限を付与するリソースベースのポリシーをサポートしています。これらのポリシーを使用して、どの Alibaba Cloud アカウント、RAM ユーザー、および RAM ロールが KMS キーおよびシークレットを管理または使用できるかを制御できます。詳細については、「キーポリシー」および「シークレットポリシー」をご参照ください。

  3. 対象の RAM ロールの RamRoleArn を取得します。詳細については、「RAM ロール情報の表示」をご参照ください。

    1. 左側のナビゲーションウィンドウで、アイデンティティ > ロール を選択します。「ロール」ページで、対象のロール名をクリックします。

    2. ロール詳細ページの ARN セクションで、RamRoleArn を確認します。

      説明

      RamRoleArn は、偽装する RAM ロールの Alibaba Cloud リソースネーム (ARN) です。形式は acs:ram::$accountID:role/$roleName であり、$accountID は Alibaba Cloud アカウント ID、$roleName は RAM ロール名です。

STS トークン

セキュリティトークンサービス (STS) は、RAM ユーザーまたは RAM ロールに対して一時的なアクセス認証情報である STS トークン を発行します。このトークンにより、有効期間内に特定の権限で KMS にアクセスできます。トークンの有効期限が切れると、自動的に無効になります。

  1. RAM コンソール にログインし、RAM ユーザーまたは RAM ロールを作成します。詳細については、「RAM ユーザーの作成」および「RAM ロールの作成」をご参照ください。

  2. RAM ユーザーまたは RAM ロールに AliyunSTSAssumeRoleAccess 権限を付与します。詳細については、「RAM ユーザー権限の管理」および「RAM ロールへの権限付与」をご参照ください。

  3. RAM ユーザーまたは RAM ロールに KMS へのアクセス権限を付与します。

    • 方法 1:ID ベースのポリシーを設定する

      RAM ロールまたはユーザーの 操作 列で、権限の付与 をクリックし、KMS 向けの組み込みシステム権限ポリシーをアタッチします。KMS のシステム権限ポリシーの詳細については、「KMS のシステムポリシー」をご参照ください。

      説明

      カスタム権限ポリシーを作成することもできます。詳細については、「カスタムポリシーの作成」をご参照ください。

    • 方法 2:リソースベースのポリシーを設定する

      KMS は、個々のキーおよびシークレットに対するアクセス権限を付与するリソースベースのポリシーをサポートしています。これらのポリシーを使用して、どの Alibaba Cloud アカウント、RAM ユーザー、および RAM ロールが KMS キーおよびシークレットを管理または使用できるかを制御できます。詳細については、「キーポリシー」および「シークレットポリシー」をご参照ください。

  4. RAM ユーザーまたは RAM ロールを使用して STS AssumeRole オペレーションを呼び出し、一時的な STS アクセス認証情報を取得します。詳細については、「AssumeRole」をご参照ください。

AccessKey

警告

Alibaba Cloud アカウントには、すべてのリソースに対する管理者権限がデフォルトで付与されており、変更できません。リソースのセキュリティを確保するため、RAM ユーザーを使用して AccessKey ペアを作成し、必要な最小限の権限のみを付与することを推奨します。

  1. RAM コンソール にログインします。「ユーザー」ページで、対象の RAM ユーザー名をクリックします。

  2. 認証管理 タブの AccessKey セクションで、Create AccessKey をクリックし、画面の指示に従います。

  3. RAM ユーザーに KMS へのアクセス権限を付与します。

    • 方法 1:ID ベースのポリシーを設定する

      RAM ユーザーの 操作 列で、権限の付与 をクリックし、RAM ユーザーに KMS 向けの組み込みシステム権限ポリシーをアタッチします。KMS のシステム権限ポリシーの詳細については、「KMS のシステムポリシー」をご参照ください。

      説明

      カスタム権限ポリシーを作成することもできます。詳細については、「カスタムポリシーの作成」をご参照ください。

    • 方法 2:リソースベースのポリシーを設定する

      KMS は、個々のキーおよびシークレットに対するアクセス権限を付与するリソースベースのポリシーをサポートしています。これらのポリシーを使用して、どの Alibaba Cloud アカウント、RAM ユーザー、および RAM ロールが KMS キーおよびシークレットを管理または使用できるかを制御できます。詳細については、「キーポリシー」および「シークレットポリシー」をご参照ください。

ClientKey (非推奨)

  1. Key Management Service コンソール にログインします。上部のナビゲーションバーでリージョンを選択し、左側のナビゲーションウィンドウで、アプリケーションアクセス > マルチクラウドアクセス (元のアクセスポイント) を選択します。

  2. (省略可)ネットワークルールを作成します。

    説明

    送信元 IP アドレスによるアクセスを制限するネットワークルールの設定は任意です。ただし、セキュリティを強化するため、設定することを推奨します。

    1. Network Access Rules タブをクリックし、Create Network Access Rule をクリックします。

    2. Create Network Access Rule パネルで、Network Typeパブリック に設定し、Allowed Source IP Addresses を入力し、OK をクリックします。

  3. 権限ポリシーの作成

    1. 権限ポリシー タブをクリックし、権限ポリシーの作成 をクリックします。

    2. 権限ポリシーの作成 パネルで、以下のように共有ゲートウェイ向けのパラメーターを設定し、OK をクリックします。

      1. スコープ: Shared KMS Gateway

      2. アクセス可能のリソース: アクセスするシークレットを選択します。

      3. (省略可) Network Access Rules: 前のステップで作成したネットワークルールを選択します。

  4. アプリケーションアクセスポイント (AAP) の作成

    1. アプリケーションアクセス タブをクリックし、Create AAP をクリックします。

    2. Create AAP パネルで、ModeStandard Creation に設定し、以下のパラメーターを設定します。

      パラメーター

      説明

      Authentication Method

      ClientKey を選択します。

      Encryption Password

      8~64 文字の文字列を入力します。文字列には数字、英字、および特殊文字 (~!@#$%^&*?_-) を含める必要があります。

      Validity Period

      重要

      ClientKey 漏洩のリスクを低減するため、有効期間を 1 年に設定することを推奨します。サービス中断を回避するため、有効期限が切れる前に ClientKey をローテーションしてください。詳細については、「ClientKey のローテーション」をご参照ください。

      権限ポリシー

      前のステップで作成した権限ポリシーを選択します。

    3. OK をクリックします。ブラウザにより ClientKey が自動的にダウンロードされます。ClientKey には以下のファイルが含まれます。

      • Credential (ClientKeyContent): デフォルトのファイル名は clientKey_****.json です。

      • 認証情報パスワード (ClientKeyPassword): デフォルトのファイル名は clientKey_****_Password.txt です。

シナリオ 2:専用ゲートウェイを使用してシークレットを取得 (非推奨)

ネットワークタイプは KMS プライベートネットワークであり、ClientKey のみがサポートされるアクセス認証情報です。

ClientKey は、クイック作成モードまたは標準作成モードのいずれかで作成できます。ClientKey の詳細については、「アプリケーションアクセスポイント」および「アプリケーションアクセスポイントの作成」をご参照ください。

  • 方法 1:クイック作成

    この方法は便利かつ効率的で、迅速なテストおよび開発に適しています。この方法で作成されたアクセス認証情報は、KMS インスタンス内のすべてのリソースへのフルアクセス権限を持ちます。

    1. Key Management Service コンソール にログインします。上部のナビゲーションバーでリージョンを選択し、左側のナビゲーションウィンドウで、アプリケーションアクセス > マルチクラウドアクセス (元のアクセスポイント) を選択します。

    2. アプリケーションアクセス タブで、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 インスタンス内のすべてのキーおよびシークレットにアクセスできることを意味します。

    3. OK をクリックします。ブラウザにより ClientKey が自動的にダウンロードされます。ClientKey には以下のファイルが含まれます。

      • Credential (ClientKeyContent): デフォルトのファイル名は clientKey_****.json です。

      • 認証情報パスワード (ClientKeyPassword): デフォルトのファイル名は clientKey_****_Password.txt です。

  • 方法 2:標準作成

    リソースに対して詳細なアクセス権限を設定する必要がある場合は、標準作成方法を使用することを推奨します。

    1. アプリケーションアクセスポイントの作成」の標準作成手順に従って、専用ゲートウェイにアクセスするための ClientKey を作成します。主なパラメーターは以下のとおりです。

      1. ネットワークルールを設定する際は、ネットワークタイプに [Private] を選択してください。

      2. 権限ルールの範囲を設定する際、対応する KMS インスタンス ID を選択します。

    2. 作成後、ブラウザにより 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=21600000

RamRoleArn

## アクセス認証情報の種類。
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=21600000

ECS インスタンス 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=21600000

STS トークン

## アクセス認証情報の種類。
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=21600000

ClientKey (共有ゲートウェイ)

## アクセス認証情報の種類。
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=3600000

ClientKey (専用ゲートウェイ)

アプローチ 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.userc3p0.driverClass、および c3p0.jdbcUrl を設定します。c3p0.user はシークレット名、c3p0.driverClass は Alibaba Cloud Secrets JDBC ドライバークラス名、c3p0.jdbcUrlsecrets-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;
          }
      }