Tous les produits
Search
Centre de documentation

Key Management Service:Client JDBC pour les secrets

Dernière mise à jour :Sep 21, 2026

Lorsque vous vous connectez à une base de données via JDBC, vous pouvez stocker vos identifiants de base de données dans un secret RDS ou un secret générique. Votre application peut ensuite utiliser le client JDBC pour les secrets afin de s'authentifier auprès de la base de données en récupérant le secret depuis KMS.

Présentation du SDK

Le client JDBC pour les secrets est conçu pour établir des connexions aux bases de données via JDBC. Il simplifie l'intégration en récupérant automatiquement un secret depuis KMS pour authentifier la connexion à la base de données. Pour les autres scénarios impliquant la récupération et l'utilisation de secrets, nous vous recommandons d'utiliser d'abord le client pour les secrets, puis le SDK d'instance KMS et le SDK Alibaba Cloud. Pour plus d'informations, consultez la section Référence du SDK.

Remarque

Vous ne pouvez gérer les secrets qu'en utilisant le SDK Alibaba Cloud.

Le client JDBC pour les secrets offre les fonctionnalités suivantes :

  • Prise en charge de Java Database Connectivity (JDBC), y compris les connexions utilisant des pools de connexions à la base de données (tels que c3p0 et DBCP) et des sources de données.

  • Prise en charge de quatre types de bases de données : MySQL, SQL Server, PostgreSQL et MariaDB.

  • Prise en charge d'intervalles d'actualisation personnalisés pour les secrets.

Remarques sur l'utilisation

  • Types de secrets pris en charge : secrets génériques et secrets RDS.

    • Si vous utilisez un secret RDS, nous vous recommandons d'utiliser un secret RDS géré avec double compte.

    • Si vous utilisez un secret générique, la valeur du secret doit respecter le format JSON suivant.

      {
          "AccountName":"<YOUR-DATABASE-USERNAME>",
          "AccountPassword":"<YOUR-DATABASE-PASSWORD>"
      }
  • Langage de programmation pris en charge : Java 8 ou version ultérieure.

  • Pools de connexions à la base de données pris en charge : c3p0, DBCP, HikariCP et Druid.

Étape 1 : Créer des identifiants d'accès

Scénario 1 : Récupérer des secrets via une passerelle partagée

Les types de réseau pris en charge sont le réseau public et le VPC. Cette méthode prend en charge les méthodes d'authentification basées sur RAM, telles que le rôle RAM d'instance ECS, RamRoleArn, un jeton STS et une AccessKey. Pour plus d'informations, consultez la section Gérer les identifiants d'accès.

Rôle RAM d'instance ECS

Un rôle RAM d'instance ECS vous permet d'obtenir un identifiant d'accès temporaire (jeton STS) depuis une instance ECS pour appeler les opérations API KMS, sans avoir besoin de configurer une paire AccessKey.

Pour plus d'informations, consultez la section Rôles RAM d'instance.

  1. Connectez-vous à la console RAM et créez un rôle RAM pour un service Alibaba Cloud de confiance.

    • Type d'entité de confiance : sélectionnez Elastic Compute Service.

    • Entité de confiance : sélectionnez Elastic Compute Service (ECS).

  2. Accordez au rôle RAM les autorisations nécessaires pour accéder à KMS.

    • Méthode 1 : Configurer une stratégie basée sur l'identité

      Dans la colonne Actions du rôle RAM, cliquez sur Grant Permission pour attacher une stratégie d'autorisation système intégrée pour KMS au rôle RAM. Pour plus d'informations sur les stratégies d'autorisation système pour KMS, consultez la section Stratégies système pour KMS.

      Remarque

      Vous pouvez également créer des stratégies d'autorisation personnalisées. Pour plus d'informations, consultez la section Créer une stratégie personnalisée.

    • Méthode 2 : Configurer une stratégie basée sur les ressources

      KMS prend en charge les stratégies basées sur les ressources qui accordent des autorisations d'accès pour des clés et des secrets individuels. Vous pouvez utiliser ces stratégies pour contrôler quels comptes Alibaba Cloud, utilisateurs RAM et rôles RAM peuvent gérer ou utiliser les clés et secrets KMS. Pour plus d'informations, consultez les sections Stratégies de clé et Stratégies de secret.

  3. Connectez-vous à la console ECS et associez le rôle RAM à une instance ECS.

RamRoleArn

Les utilisateurs RAM ou les services cloud peuvent endosser un rôle pour obtenir des autorisations temporaires (jeton STS) au lieu d'utiliser des clés à long terme, ce qui réduit le risque de fuite de clés. Par exemple, lors d'une tâche de traitement de données temporaire, un utilisateur RAM ou un service cloud endosse temporairement un rôle avec un RamRoleArn spécifique. Une fois la tâche terminée, les autorisations du rôle sont révoquées, minimisant ainsi le risque d'exposition.

  1. Créer une paire AccessKey utilisateur

    1. Connectez-vous à la console RAM. Dans le volet de navigation de gauche, choisissez Identities > Users. Sur la page Users, cliquez sur le nom de l'utilisateur RAM cible.

    2. Attachez la stratégie système AliyunSTSAssumeRoleAccess ou une stratégie personnalisée incluant l'action sts:AssumeRole à l'utilisateur RAM.

    3. Sous l'onglet Secret Management, dans la section AccessKey, cliquez sur Create AccessKey.

  2. Créer et autoriser un rôle RAM :

    1. Dans le volet de navigation de gauche, choisissez Identities > Roles. Sur la page Roles, cliquez sur Create Role. Pour plus d'informations, consultez la section Créer un rôle RAM.

    2. Accordez au rôle RAM les autorisations nécessaires pour accéder à KMS.

      • Méthode 1 : Configurer une stratégie basée sur l'identité

        Dans la colonne Actions du rôle RAM, cliquez sur Grant Permission pour attacher une stratégie d'autorisation système intégrée pour KMS au rôle RAM. Pour plus d'informations sur les stratégies d'autorisation système pour KMS, consultez la section Stratégies système pour KMS.

        Remarque

        Vous pouvez également créer des stratégies d'autorisation personnalisées. Pour plus d'informations, consultez la section Créer une stratégie personnalisée.

      • Méthode 2 : Configurer une stratégie basée sur les ressources

        KMS prend en charge les stratégies basées sur les ressources qui accordent des autorisations d'accès pour des clés et des secrets individuels. Vous pouvez utiliser ces stratégies pour contrôler quels comptes Alibaba Cloud, utilisateurs RAM et rôles RAM peuvent gérer ou utiliser les clés et secrets KMS. Pour plus d'informations, consultez les sections Stratégies de clé et Stratégies de secret.

  3. Obtenez le RamRoleArn du rôle RAM cible. Pour plus d'informations, consultez la section Afficher les informations d'un rôle RAM.

    1. Dans le volet de navigation de gauche, choisissez Identities > Roles. Sur la page Roles, cliquez sur le nom du rôle cible.

    2. Sur la page des détails du rôle, recherchez le RamRoleArn dans la section ARN.

      Remarque

      Le RamRoleArn correspond au nom de ressource Alibaba Cloud (ARN) du rôle RAM à endosser. Le format est acs:ram::$accountID:role/$roleName, où $accountID représente l'ID du compte Alibaba Cloud et $roleName le nom du rôle RAM.

Jeton STS

Security Token Service (STS) délivre un identifiant d'accès temporaire, appelé jeton STS, à un utilisateur RAM ou à un rôle RAM. Ce jeton permet d'accéder à KMS avec des autorisations spécifiques pendant une période de validité limitée. Une fois le jeton expiré, il devient automatiquement invalide.

  1. Connectez-vous à la console RAM pour créer un utilisateur RAM ou un rôle RAM. Pour plus d'informations, consultez les sections Créer un utilisateur RAM et Créer un rôle RAM.

  2. Accordez l'autorisation AliyunSTSAssumeRoleAccess à l'utilisateur RAM ou au rôle RAM. Pour plus d'informations, consultez les sections Gérer les autorisations des utilisateurs RAM et Accorder des autorisations à un rôle RAM.

  3. Accordez à l'utilisateur RAM ou au rôle RAM les autorisations nécessaires pour accéder à KMS.

    • Méthode 1 : Configurer une stratégie basée sur l'identité

      Dans la colonne Actions du rôle ou de l'utilisateur RAM, cliquez sur Grant Permission pour attacher une stratégie d'autorisation système intégrée pour KMS. Pour plus d'informations sur les stratégies d'autorisation système pour KMS, consultez la section Stratégies système pour KMS.

      Remarque

      Vous pouvez également créer des stratégies d'autorisation personnalisées. Pour plus d'informations, consultez la section Créer une stratégie personnalisée.

    • Méthode 2 : Configurer une stratégie basée sur les ressources

      KMS prend en charge les stratégies basées sur les ressources qui accordent des autorisations d'accès pour des clés et des secrets individuels. Vous pouvez utiliser ces stratégies pour contrôler quels comptes Alibaba Cloud, utilisateurs RAM et rôles RAM peuvent gérer ou utiliser les clés et secrets KMS. Pour plus d'informations, consultez les sections Stratégies de clé et Stratégies de secret.

  4. Utilisez l'utilisateur RAM ou le rôle RAM pour appeler l'opération STS AssumeRole afin d'obtenir un identifiant d'accès STS temporaire. Pour plus d'informations, consultez la section AssumeRole.

AccessKey

Avertissement

Par défaut, un compte Alibaba Cloud dispose des autorisations d'administrateur pour toutes les ressources, lesquelles ne peuvent pas être modifiées. Pour garantir la sécurité des ressources, nous vous recommandons d'utiliser un utilisateur RAM pour créer une paire AccessKey et de ne lui accorder que les autorisations nécessaires.

  1. Connectez-vous à la console RAM. Sur la page Users, cliquez sur le nom de l'utilisateur RAM cible.

  2. Sous l'onglet Secret Management, dans la section AccessKey, cliquez sur Create AccessKey.

  3. Accordez à l'utilisateur RAM les autorisations nécessaires pour accéder à KMS.

    • Méthode 1 : Configurer une stratégie basée sur l'identité

      Dans la colonne Actions de l'utilisateur RAM, cliquez sur Grant Permission pour attacher une stratégie d'autorisation système intégrée pour KMS à l'utilisateur RAM. Pour plus d'informations sur les stratégies d'autorisation système pour KMS, consultez la section Stratégies système pour KMS.

      Remarque

      Vous pouvez également créer des stratégies d'autorisation personnalisées. Pour plus d'informations, consultez la section Créer une stratégie personnalisée.

    • Méthode 2 : Configurer une stratégie basée sur les ressources

      KMS prend en charge les stratégies basées sur les ressources qui accordent des autorisations d'accès pour des clés et des secrets individuels. Vous pouvez utiliser ces stratégies pour contrôler quels comptes Alibaba Cloud, utilisateurs RAM et rôles RAM peuvent gérer ou utiliser les clés et secrets KMS. Pour plus d'informations, consultez les sections Stratégies de clé et Stratégies de secret.

ClientKey (non recommandé)

  1. Connectez-vous à la console Key Management Service. Dans la barre de navigation supérieure, sélectionnez une région. Dans le volet de navigation de gauche, choisissez Application Access > Multi-Cloud Access (formerly AAP).

  2. (Facultatif) Créez une règle réseau.

    Remarque

    La configuration d'une règle réseau pour restreindre l'accès par adresse IP source est facultative. Toutefois, nous vous recommandons d'en configurer une pour une meilleure sécurité.

    1. Cliquez sur l'onglet Network Access Rules, puis cliquez sur Create Network Access Rule.

    2. Dans le panneau Create Network Access Rule, définissez le paramètre Network Type sur Public, saisissez les Allowed Source IP Addresses, puis cliquez sur OK.

  3. Créez une stratégie d'autorisation.

    1. Cliquez sur l'onglet Policies, puis cliquez sur Create Policy.

    2. Dans le panneau Create Policy, configurez les paramètres de la passerelle partagée comme décrit ci-dessous, puis cliquez sur OK.

      1. Scope : Shared KMS Gateway

      2. Accessible Resources : Sélectionnez les secrets auxquels vous souhaitez accéder.

      3. (Facultatif) Network Access Rules : Sélectionnez la règle réseau créée à l'étape précédente.

  4. Créez un point d'accès applicatif (AAP).

    1. Cliquez sur l'onglet Application Access, puis cliquez sur Create AAP.

    2. Dans le panneau Create AAP, définissez le paramètre Mode sur Standard Creation, puis configurez les paramètres comme décrit ci-dessous.

      Paramètre

      Description

      Authentication Method

      Sélectionnez ClientKey.

      Encryption Password

      Saisissez une chaîne de 8 à 64 caractères contenant des chiffres, des lettres et des caractères spéciaux : ~!@#$%^&*?_-.

      Validity Period

      Important

      Nous vous recommandons de définir la période de validité sur un an afin de réduire le risque de fuite de ClientKey. Assurez-vous de faire pivoter le ClientKey avant son expiration pour éviter toute interruption de service. Pour plus d'informations, consultez la section Faire pivoter un ClientKey.

      Policies

      Sélectionnez la stratégie d'autorisation que vous avez créée à l'étape précédente.

    3. Cliquez sur OK. Le navigateur télécharge automatiquement le ClientKey. Le ClientKey comprend les fichiers suivants :

      • Credential (ClientKeyContent) : Le nom de fichier par défaut est clientKey_****.json.

      • Mot de passe des identifiants (ClientKeyPassword) : Le nom de fichier par défaut est clientKey_****_Password.txt.

Scénario 2 : Récupérer des secrets via une passerelle dédiée (non recommandé)

Le type de réseau est un réseau privé KMS et ClientKey est le seul identifiant d'accès pris en charge.

Vous pouvez créer un ClientKey en utilisant le mode Création rapide ou Création standard. Pour plus d'informations sur les ClientKeys, consultez les sections Points d'accès applicatifs et Créer un point d'accès applicatif.

  • Méthode 1 : Création rapide

    Cette méthode est pratique et efficace, ce qui la rend adaptée aux tests rapides et au développement. L'identifiant d'accès créé de cette manière dispose d'un accès complet à toutes les ressources de l'instance KMS.

    1. Connectez-vous à la console Key Management Service. Dans la barre de navigation supérieure, sélectionnez une région. Dans le volet de navigation de gauche, choisissez Application Access > Access Control (Formerly Access Point) .

    2. Sous l'onglet Application Access, cliquez sur Create AAP. Dans le panneau Create AAP, configurez les paramètres.

      Paramètre

      Description

      Mode

      Sélectionnez Quick Creation.

      Scope (KMS Instance)

      Sélectionnez l'instance KMS à laquelle votre application doit accéder.

      Application Access Point Name

      Saisissez un nom pour le point d'accès applicatif.

      Authentication Method

      Ce paramètre est défini sur ClientKey et ne peut pas être modifié.

      Encryption Algorithm

      Sélectionnez l'algorithme de chiffrement utilisé pour chiffrer le ClientKey. Valeurs valides : TripleDES-CBC et RC2-CBC (par défaut).

      Remarque

      RC2-CBC fonctionne dans la plupart des environnements et est recommandé. Si votre environnement impose des exigences algorithmiques plus strictes et ne prend pas en charge RC2-CBC, sélectionnez TripleDES-CBC.

      Default Permission Policy

      La valeur est key/ secret/ et ne peut pas être modifiée. Cela signifie que l'application peut accéder à toutes les clés et à tous les secrets de l'instance KMS spécifiée.

    3. Cliquez sur OK. Le navigateur télécharge automatiquement le ClientKey. Le ClientKey comprend les fichiers suivants :

      • Credential (ClientKeyContent) : Le nom de fichier par défaut est clientKey_****.json.

      • Mot de passe des identifiants (ClientKeyPassword) : Le nom de fichier par défaut est clientKey_****_Password.txt.

  • Méthode 2 : Création standard

    Si vous devez configurer des autorisations d'accès granulaires aux ressources, nous vous recommandons d'utiliser la méthode de création standard.

    1. Suivez les instructions de création standard décrites dans la section Créer un point d'accès applicatif pour créer un ClientKey permettant d'accéder à la passerelle dédiée. Les paramètres clés sont décrits ci-dessous :

      1. Lors de la configuration des règles réseau, sélectionnez Private pour le type de réseau.

      2. Lorsque vous configurez la portée de la règle d'autorisation, sélectionnez l'ID d'instance KMS correspondant.

    2. Après la création, votre navigateur télécharge automatiquement le ClientKey, qui comprend :

      • Credential (ClientKeyContent) : Le fichier est nommé clientKey_****.json par défaut.

      • Mot de passe des identifiants (ClientKeyPassword) : Le fichier est nommé clientKey_****_Password.txt par défaut.

Étape 2 : Installer le client

Installez le client JDBC pour les secrets à l'aide de Maven.

<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>
Remarque

Nous vous recommandons d'installer la dernière version du SDK. Pour plus d'informations sur l'installation et le code source, visitez le dépôt aliyun-secretsmanager-jdbc.

Étape 3 : Initialiser le client avec secretsmanager.properties

Ajoutez un fichier de configuration nommé secretsmanager.properties à votre projet. Les paramètres à configurer varient selon l'identifiant d'accès utilisé.

AccessKey

## The type of the access credential.
credentials_type=ak
## The AccessKey ID.
credentials_access_key_id=#credentials_access_key_id#
## The AccessKey secret.
credentials_access_secret=#credentials_access_secret#
## The region of the associated KMS service.
cache_client_region_id=[{"regionId":"#regionId#"}]
## The custom refresh interval. Default value: 6 hours. Minimum value: 5 minutes. Unit: milliseconds.
refresh_secret_ttl=21600000

RamRoleArn

## The type of the access credential.
credentials_type=ram_role
## The AccessKey ID.
credentials_access_key_id=#credentials_access_key_id#
## The AccessKey secret.
credentials_access_secret=#credentials_access_secret#
## The session name of the access credential.
credentials_role_session_name=#credentials_role_session_name#
## The ARN of the RAM role.
credentials_role_arn=#credentials_role_arn#
## The policy of the access credential.
credentials_policy=#credentials_policy#
## The region of the associated KMS service.
cache_client_region_id=[{"regionId":"#regionId#"}]
## The custom refresh interval. Default value: 6 hours. Minimum value: 5 minutes. Unit: milliseconds.
refresh_secret_ttl=21600000

Rôle RAM d'instance ECS

## The type of the access credential.
credentials_type=ecs_ram_role
## The name of the ECS RAM role.
credentials_role_name=#credentials_role_name#
## The region of the associated KMS service.
cache_client_region_id=[{"regionId":"#regionId#"}]
## The custom refresh interval. Default value: 6 hours. Minimum value: 5 minutes. Unit: milliseconds.
refresh_secret_ttl=21600000

Jeton STS

## The type of the access credential.
credentials_type=sts
## The AccessKey ID.
credentials_access_key_id=#credentials_access_key_id#
## The AccessKey secret.
credentials_access_secret=#credentials_access_secret#
## The session name of the access credential.
credentials_role_session_name=#credentials_role_session_name#
## The ARN of the RAM role.
credentials_role_arn=#credentials_role_arn#
## The policy of the access credential.
credentials_policy=#credentials_policy#
## The region of the associated KMS service.
cache_client_region_id=[{"regionId":"#regionId#"}]
## The custom refresh interval. Default value: 6 hours. Minimum value: 5 minutes. Unit: milliseconds.
refresh_secret_ttl=21600000

ClientKey (passerelle partagée)

## The type of the access credential.
credentials_type=client_key
# The file path of the ClientKey.
client_key_private_key_path=#your client key private key file path#
## The decryption password of the ClientKey. You can read the password from an environment variable or a 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#
## The region of the associated KMS service.
cache_client_region_id=[{"regionId":"#regionId#"}]
## The custom refresh interval. Default value: 6 hours. Minimum value: 5 minutes. Unit: milliseconds.
## The following configuration sets the secret refresh interval to 1 hour.
refresh_secret_ttl=3600000

ClientKey (passerelle dédiée)

Approche 1 : Configurer le chemin du fichier


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

Approche 2 : Configurer le mot de passe via une variable d'environnement


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

Étape 4 : Se connecter à la base de données

Important

Les exemples suivants montrent uniquement les propriétés que vous devez modifier. Configurez les autres propriétés en fonction de vos besoins métier.

Se connecter à une base de données avec JDBC

  • Base de données MySQL

    Remarque

    Remplacez #your-mysql-secret-name#, <YOUR-MYSQL-IP>, <YOUR-MYSQL-PORT> et <YOUR-DATABASE-NAME> par le nom réel du secret, l'adresse IP du serveur, le port et le nom de la base de données.

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class SecretManagerJDBCSample {
        public static void main(String[] args) throws Exception {
            // Load the Alibaba Cloud secrets 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();
            }
        }
    }
  • Base de données SQL Server

    Remarque

    Remplacez #your-sqlserver-secret-name#, <YOUR-SQLSERVER-IP>, <YOUR-SQLSERVER-PORT> et <YOUR-DATABASE-NAME> par le nom réel du secret, l'adresse IP du serveur, le port et le nom de la base de données.

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class SecretManagerJDBCSqlServerSample {
    
        public static void main(String[] args) throws Exception{
            // Load the Alibaba Cloud secrets 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();
            }
        }
    }
  • Base de données PostgreSQL

    Remarque

    Remplacez #your-postgresql-secret-name#, <YOUR-POSTGRESQL-IP>, <YOUR-POSTGRESQL-PORT> et <YOUR-DATABASE-NAME> par le nom réel du secret, l'adresse IP du serveur, le port et le nom de la base de données.

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class SecretManagerJDBCPostgreSQLSample {
        public static void main(String[] args) throws Exception {
            // Load the Alibaba Cloud secrets 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();
            }
        }
    }
  • Base de données MariaDB

    Remarque

    Remplacez #your-mariadb-secret-name#, <YOUR-MARIADB-IP>, <YOUR-MARIADB-PORT> et <YOUR-DATABASE-NAME> par le nom réel du secret, l'adresse IP du serveur, le port et le nom de la base de données.

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class SecretManagerJDBCMarialDBSample {
    
    	public static void main(String[] args) throws Exception{
    		// Load the Alibaba Cloud secrets 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();
    		}
    	}
    }

Se connecter avec un pool de connexions à la base de données

Définissez les paramètres c3p0.user, c3p0.driverClass et c3p0.jdbcUrl dans le fichier de configuration c3p0.properties. Le paramètre c3p0.user correspond au nom du secret, c3p0.driverClass au nom de la classe du pilote JDBC Alibaba Cloud pour les secrets, et c3p0.jdbcUrl doit commencer par secrets-manager.

  • Base de données MySQL

    Remarque

    Remplacez #your-mysql-secret-name#, <YOUR-MYSQL-IP>, <YOUR-MYSQL-PORT> et <YOUR-DATABASE-NAME> par le nom réel du secret, l'adresse IP du serveur, le port et le nom de la base de données.

    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>
  • Base de données SQL Server

    Remarque

    Remplacez #your-sqlserver-secret-name#, <YOUR-SQLSERVER-IP>, <YOUR-SQLSERVER-PORT> et <YOUR-DATABASE-NAME> par le nom réel du secret, l'adresse IP du serveur, le port et le nom de la base de données.

    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>
  • Base de données PostgreSQL

    Remarque

    Remplacez #your-postgresql-secret-name#, <YOUR-POSTGRESQL-IP>, <YOUR-POSTGRESQL-PORT> et <YOUR-DATABASE-NAME> par le nom réel du secret, l'adresse IP du serveur, le port et le nom de la base de données.

    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>
  • Base de données MariaDB

    Remarque

    Remplacez #your-mariadb-secret-name#, <YOUR-MARIADB-IP>, <YOUR-MARIADB-PORT> et <YOUR-DATABASE-NAME> par le nom réel du secret, l'adresse IP du serveur, le port et le nom de la base de données.

    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>

Se connecter avec une source de données

Cet exemple utilise une ComboPooledDataSource c3p0 et une base de données MySQL. Ajoutez la configuration suivante au fichier de configuration Spring.

Remarque

Remplacez #your-mysql-secret-name#, <YOUR-MYSQL-IP>, <YOUR-MYSQL-PORT> et <YOUR-DATABASE-NAME> par le nom réel du secret, l'adresse IP du serveur, le port et le nom de la base de données.

<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>
Remarque

Définissez les valeurs des paramètres maxPoolSize, minPoolSize et initialPoolSize en fonction de vos besoins métier.

Se connecter avec un pool de connexions Druid

Cet exemple utilise une base de données MySQL. Vous devez modifier les propriétés suivantes dans le fichier de configuration.

Remarque

Remplacez #your-mysql-secret-name#, <YOUR-MYSQL-IP>, <YOUR-MYSQL-PORT> et <YOUR-DATABASE-NAME> par le nom réel du secret, l'adresse IP du serveur, le port et le nom de la base de données.

  • Utiliser un fichier de configuration 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>
  • Utiliser la configuration bean

    • Méthode 1 : Fichier de configuration 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>
      
    • Méthode 2 : Injection de propriété

      Créez une classe de configuration dans votre application pour charger les informations de connexion à la base de données.

      @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;
          }
      }