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.
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.
-
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).
-
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.
RemarqueVous 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.
-
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.
-
Créer une paire AccessKey utilisateur
Connectez-vous à la console RAM. Dans le volet de navigation de gauche, choisissez . Sur la page Users, cliquez sur le nom de l'utilisateur RAM cible.
Attachez la stratégie système
AliyunSTSAssumeRoleAccessou une stratégie personnalisée incluant l'actionsts:AssumeRoleà l'utilisateur RAM.Sous l'onglet Secret Management, dans la section AccessKey, cliquez sur Create AccessKey.
-
Créer et autoriser un rôle RAM :
Dans le volet de navigation de gauche, choisissez . Sur la page Roles, cliquez sur Create Role. Pour plus d'informations, consultez la section Créer un rôle RAM.
-
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.
RemarqueVous 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.
-
-
Obtenez le RamRoleArn du rôle RAM cible. Pour plus d'informations, consultez la section Afficher les informations d'un rôle RAM.
Dans le volet de navigation de gauche, choisissez . Sur la page Roles, cliquez sur le nom du rôle cible.
-
Sur la page des détails du rôle, recherchez le RamRoleArn dans la section ARN.
RemarqueLe RamRoleArn correspond au nom de ressource Alibaba Cloud (ARN) du rôle RAM à endosser. Le format est
acs:ram::$accountID:role/$roleName, où$accountIDreprésente l'ID du compte Alibaba Cloud et$roleNamele 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.
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.
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.-
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.
RemarqueVous 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.
-
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
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.
Connectez-vous à la console RAM. Sur la page Users, cliquez sur le nom de l'utilisateur RAM cible.
Sous l'onglet Secret Management, dans la section AccessKey, cliquez sur Create AccessKey.
-
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.
RemarqueVous 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é)
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 .
-
(Facultatif) Créez une règle réseau.
RemarqueLa 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é.
Cliquez sur l'onglet Network Access Rules, puis cliquez sur Create Network Access Rule.
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.
-
Créez une stratégie d'autorisation.
Cliquez sur l'onglet Policies, puis cliquez sur Create Policy.
-
Dans le panneau Create Policy, configurez les paramètres de la passerelle partagée comme décrit ci-dessous, puis cliquez sur OK.
Scope : Shared KMS Gateway
Accessible Resources : Sélectionnez les secrets auxquels vous souhaitez accéder.
(Facultatif) Network Access Rules : Sélectionnez la règle réseau créée à l'étape précédente.
-
Créez un point d'accès applicatif (AAP).
Cliquez sur l'onglet Application Access, puis cliquez sur Create AAP.
-
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
ImportantNous 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.
-
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.
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 .
-
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).
RemarqueRC2-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. -
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.
-
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 :
Lors de la configuration des règles réseau, sélectionnez Private pour le type de réseau.
Lorsque vous configurez la portée de la règle d'autorisation, sélectionnez l'ID d'instance KMS correspondant.
-
Après la création, votre navigateur télécharge automatiquement le ClientKey, qui comprend :
Credential (ClientKeyContent) : Le fichier est nommé
clientKey_****.jsonpar défaut.Mot de passe des identifiants (ClientKeyPassword) : Le fichier est nommé
clientKey_****_Password.txtpar 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>
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
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
RemarqueRemplacez
#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
RemarqueRemplacez
#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
RemarqueRemplacez
#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
RemarqueRemplacez
#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
RemarqueRemplacez
#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
RemarqueRemplacez
#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
RemarqueRemplacez
#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
RemarqueRemplacez
#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.
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>
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.
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; } }
-