全部产品
Search
文档中心

Key Management Service:Secrets Manager JDBC

更新时间:Jul 06, 2025

Secrets Manager JDBC mengenkapsulasi logika bisnis, praktik terbaik, dan pola desain berdasarkan rahasia ApsaraDB RDS dinamis yang disediakan oleh Secrets Manager. Dengan Secrets Manager JDBC, Anda dapat mengintegrasikan Secrets Manager dengan sistem bisnis Anda serta menggunakan rahasia ApsaraDB RDS dinamis dalam aplikasi database tanpa perlu menuliskan sandi akun database secara hard code.

Fitur

  • Menyediakan driver Java Database Connectivity (JDBC) umum dan koneksi database sederhana.
  • Mendukung koneksi ke database menggunakan c3p0 atau Database Connection Pools (DBCP).
  • Memungkinkan Anda memperoleh rahasia ApsaraDB RDS dinamis melalui berbagai metode akses, seperti pasangan AccessKey, Security Token Service (STS), atau Peran RAM dari Instance ECS.
  • Memungkinkan penyesuaian interval rotasi untuk rahasia.

Batasan

  • Hanya mendukung rahasia ApsaraDB RDS dinamis. Disarankan menggunakan rahasia ApsaraDB RDS dinamis dalam mode Kelola Akun Ganda. Untuk informasi lebih lanjut tentang cara membuat rahasia ApsaraDB RDS dinamis, lihat Buat rahasia ApsaraDB RDS dinamis.
  • Hanya mendukung Java 1.8 atau versi yang lebih baru.
  • Hanya mendukung instance ApsaraDB RDS yang menjalankan MySQL, SQL Server, PostgreSQL, atau MariaDB TX.

Instal Secrets Manager JDBC

Secrets Manager JDBC dikembangkan dalam Java. Untuk informasi lebih lanjut tentang cara menginstal Secrets Manager JDBC, kunjungi aliyun-secretsmanager-jdbc.

Anda dapat menginstal Secrets Manager JDBC dengan menambahkan dependensi Maven berikut:

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-secretsmanager-jdbc</artifactId>
    <version>x.x.x</version>
</dependency>
Catatan Untuk informasi lebih lanjut tentang versi Secrets Manager JDBC, kunjungi rilis aliyun-secretsmanager-jdbc.

Konfigurasikan metode akses

Saat Secrets Manager JDBC dimulai, ia memeriksa file secretsmanager.properties untuk metode akses. Berikut adalah contoh konfigurasi metode akses yang berbeda:

  • Akses Secrets Manager menggunakan kunci klien titik akses aplikasi

    Metode ini direkomendasikan. Untuk informasi lebih lanjut tentang cara membuat kunci klien, lihat Ikat kunci klien ke AAP.

    Catatan Secrets Manager JDBC 1.0.7 dan versi yang lebih baru mendukung penggunaan kunci klien titik akses aplikasi untuk mengakses Secrets Manager.
    ## Tentukan metode akses.
    credentials_type=client_key
    ## Baca kata sandi dekripsi kunci klien. Anda dapat membaca kata sandi dari variabel lingkungan atau file.
    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#
    ## Baca file kunci privat kunci klien.
    client_key_private_key_path=#your client key private key file path#
    ## Tentukan wilayah Key Management Service (KMS).
    cache_client_region_id=[{"regionId":"#regionId#"}]
  • Akses Secrets Manager menggunakan pasangan AccessKey
    ## Tentukan metode akses.
    credentials_type=ak
    ## Tentukan ID AccessKey.
    credentials_access_key_id=#credentials_access_key_id#
    ## Tentukan Rahasia AccessKey.
    credentials_access_secret=#credentials_access_secret#
    ## Tentukan wilayah KMS.
    cache_client_region_id=[{"regionId":"#regionId#"}]
    ## Sesuaikan interval rotasi. Nilai default: 21600000. Nilai minimum: 300000. Unit: milidetik. Nilai default setara dengan 6 jam, dan nilai minimum setara dengan 5 menit.
    refresh_secret_ttl=21600000
    Catatan Untuk informasi lebih lanjut tentang cara memperoleh pasangan AccessKey, lihat Peroleh pasangan AccessKey.
  • Akses Secrets Manager menggunakan STS
    ## Tentukan metode akses.
    credentials_type=sts
    ## Tentukan ID AccessKey.
    credentials_access_key_id=#credentials_access_key_id#
    ## Tentukan Rahasia AccessKey.
    credentials_access_secret=#credentials_access_secret#
    ## Tentukan nama sesi di mana rahasia ApsaraDB RDS dinamis diperoleh.
    credentials_role_session_name=#credentials_role_session_name#
    ## Tentukan Alibaba Cloud Resource Name (ARN) dari peran RAM.
    credentials_role_arn=#credentials_role_arn#
    ## Tentukan kebijakan yang digunakan untuk memperoleh rahasia ApsaraDB RDS dinamis.
    credentials_policy=#credentials_policy#
    ## Tentukan wilayah KMS.
    cache_client_region_id=[{"regionId":"#regionId#"}]
    ## Sesuaikan interval rotasi. Nilai default: 21600000. Nilai minimum: 300000. Unit: milidetik. Nilai default setara dengan 6 jam, dan nilai minimum setara dengan 5 menit.
    refresh_secret_ttl=21600000
    Catatan Untuk informasi lebih lanjut tentang cara memperoleh pasangan AccessKey, lihat Peroleh pasangan AccessKey.
  • Akses Secrets Manager menggunakan Peran RAM dari instance ECS
    ## Tentukan metode akses.
    credentials_type=ecs_ram_role
    ## Tentukan nama Peran RAM.
    credentials_role_name=#credentials_role_name#
    ## Tentukan wilayah KMS.
    cache_client_region_id=[{"regionId":"#regionId#"}]
    ## Sesuaikan interval rotasi. Nilai default: 21600000. Nilai minimum: 300000. Unit: milidetik. Nilai default setara dengan 6 jam, dan nilai minimum setara dengan 5 menit.
    refresh_secret_ttl=21600000
    Catatan Untuk informasi lebih lanjut tentang cara membuat Peran RAM dan menetapkan Peran RAM ke instance ECS, lihat Akses KMS dari instance ECS dengan cara yang aman.

Contoh kode

  • Access a database by using JDBC

    Kode sampel berikut memberikan contoh cara mengakses instance ApsaraDB RDS for MySQL menggunakan JDBC:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class SecretManagerJDBCSample {
    
        public static void main(String[] args) throws Exception {
            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();
            }
        }
    }
  • Access a database by using a c3p0 connection pool

    Kode sampel berikut memberikan contoh file konfigurasi c3p0.properties:

    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>
  • Access a database by using an open source framework

    Kode sampel berikut memberikan contoh file konfigurasi Spring:

    <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="500" />
          <property name="minPoolSize" value="5" />
          <property name="initialPoolSize" value="20" />
      </bean>
      <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" >
          <property name="dataSource" ref="dataSource" />
      </bean>