Ao conectar-se a um banco de dados com JDBC, você pode armazenar suas credenciais de banco de dados em um segredo do RDS ou em um segredo genérico. Em seguida, sua aplicação pode usar o cliente JDBC de segredos para se autenticar no banco de dados com o segredo do KMS.
Visão geral do SDK
O cliente JDBC de segredos é projetado para conectar-se a bancos de dados por meio do JDBC. O cliente simplifica a integração ao recuperar automaticamente um segredo do KMS para autenticar a conexão com o banco de dados. Para outros cenários de recuperação e uso de segredos, recomendamos o uso inicial do cliente de segredos, seguido do SDK da instância do KMS e do Alibaba Cloud SDK. Para mais informações, consulte SDK Reference.
Você pode gerencie segredos apenas com o Alibaba Cloud SDK.
O cliente JDBC de segredos oferece os seguintes recursos:
Suporta o Java Database Connectivity (JDBC), incluindo conexões com pools de conexão de banco de dados (como c3p0 e DBCP) e source de dados.
Suporta quatro tipos de banco de dados: MySQL, SQL Server, PostgreSQL e MariaDB.
Suporta intervalos de atualização personalizados para segredos.
Notas de uso
-
Tipos de segredo compatíveis: segredos genéricos e segredos do RDS.
Ao usar um segredo do RDS, recomendamos um segredo do RDS gerenciado com conta dupla.
-
Ao usar um segredo genérico, o valor do segredo deve estar no seguinte formato JSON:
{ "AccountName":"<YOUR-DATABASE-USERNAME>", "AccountPassword":"<YOUR-DATABASE-PASSWORD>" }
Linguagem de programação compatível: Java 8 ou superior.
Pools de conexão de banco de dados compatíveis: c3p0, DBCP, HikariCP e Druid.
Etapa 1: Crie uma credencial de acesso
Cenário 1: Recuperar segredos por meio de um gateway compartilhado
As redes compatíveis são a rede pública e a VPC. Este método é compatível com autenticações baseadas no RAM, como função RAM de instância ECS, RamRoleArn, token STS e AccessKey. Para mais informações, consulte Manage access credentials.
Função RAM de instância ECS
A função RAM de instância ECS permite obter uma credencial de acesso temporária (token STS) diretamente de uma instância ECS para chamar operações da API do KMS, sem configurar um par de AccessKey.
Para mais informações, consulte Instance RAM roles.
-
Acesse o RAM console e crie uma função RAM para um service confiável do Alibaba Cloud.
Trusted Entity Type: selecione Elastic Compute Service.
Trusted entity: selecione Elastic Compute Service (ECS).
-
Conceda permissões de acesso ao KMS para a função RAM.
-
Método 1: configure uma política baseada em identidade
Na coluna Actions da função RAM, clique em Grant Permission para anexar uma política de permissão do sistema integrada do KMS à função RAM. Para mais informações sobre as políticas de permissão do sistema do KMS, consulte System policies for KMS.
NotaVocê também pode criar políticas de permissão personalizadas. Para mais informações, consulte Create a custom policy.
-
Método 2: configure uma política baseada em recursos
O KMS é compatível com políticas baseadas em recursos que concedem permissões de acesso a chaves e segredos individuais. Use essas políticas para controlar quais contas do Alibaba Cloud, usuários do RAM e funções RAM podem gerencie ou usar chaves e segredos do KMS. Para mais informações, consulte Key policies e Secret policies.
-
Acesse o ECS console e anexe a função RAM a uma instância ECS.
RamRoleArn
Usuários do RAM ou service de cloud podem assumir uma função para obter permissões temporárias (token STS) em vez de usar chaves de longo prazo, reduzindo o risco de vazamento. Por exemplo, em uma tarefa temporária de processamento de dados, um usuário ou service assume temporariamente uma função com um RamRoleArn específico. Após a conclusão da tarefa, as permissões são revogadas, o que minimiza o risco de exposição.
-
Crie um par de AccessKey para o usuário:
Acesse o RAM console. No painel de navegação à esquerda, escolha . Na página Users, clique em nome do usuário RAM de destino.
Anexe a política do sistema
AliyunSTSAssumeRoleAccessou uma política personalizada com a açãosts:AssumeRoleao usuário RAM.Na aba Secret Management, na seção AccessKey, clique em Create AccessKey.
-
Crie e autorize uma função RAM:
No painel de navegação à esquerda, escolha . Na página Roles, clique em Create Role. Para mais informações, consulte Create a RAM role.
-
Conceda permissões de acesso ao KMS para a função RAM.
-
Método 1: configure uma política baseada em identidade
Na coluna Actions da função RAM, clique em Grant Permission para anexar uma política de permissão do sistema integrada do KMS à função RAM. Para mais informações sobre as políticas de permissão do sistema do KMS, consulte System policies for KMS.
NotaVocê também pode criar políticas de permissão personalizadas. Para mais informações, consulte Create a custom policy.
-
Método 2: configure uma política baseada em recursos
O KMS é compatível com políticas baseadas em recursos que concedem permissões de acesso a chaves e segredos individuais. Use essas políticas para controlar quais contas do Alibaba Cloud, usuários do RAM e funções RAM podem gerencie ou usar chaves e segredos do KMS. Para mais informações, consulte Key policies e Secret policies.
-
-
Obtenha o RamRoleArn da função RAM de destino. Para mais informações, consulte View the information about a RAM role.
No painel de navegação à esquerda, escolha . Na página Roles, clique em nome da função de destino.
-
Na página de detalhes da função, encontre o RamRoleArn na seção ARN.
NotaO RamRoleArn é o Alibaba Cloud Resource Name (ARN) da função RAM a ser assumida. O formato é
acs:ram::$accountID:role/$roleName, onde$accountIDé o ID da conta do Alibaba Cloud e$roleNameé o nome da função RAM.
Token STS
O Security Token Service (STS) emite uma credencial de acesso temporária, o token STS, para um usuário ou função RAM. Esse token permite o acesso ao KMS com permissões específicas por um período limitado. Após a expiração, o token torna-se inválido automaticamente.
Acesse o RAM console para criar um usuário RAM ou uma função RAM. Para mais informações, consulte Create a RAM user e Create a RAM role.
Conceda a permissão
AliyunSTSAssumeRoleAccessao usuário ou função RAM. Para mais informações, consulte Manage RAM user permissions e Grant permissions to a RAM role.-
Conceda permissões de acesso ao KMS para o usuário ou função RAM.
-
Método 1: configure uma política baseada em identidade
Na coluna Actions da função ou usuário RAM, clique em Grant Permission para anexar uma política de permissão do sistema integrada do KMS. Para mais informações sobre as políticas de permissão do sistema do KMS, consulte System policies for KMS.
NotaVocê também pode criar políticas de permissão personalizadas. Para mais informações, consulte Create a custom policy.
-
Método 2: configure uma política baseada em recursos
O KMS é compatível com políticas baseadas em recursos que concedem permissões de acesso a chaves e segredos individuais. Use essas políticas para controlar quais contas do Alibaba Cloud, usuários do RAM e funções RAM podem gerencie ou usar chaves e segredos do KMS. Para mais informações, consulte Key policies e Secret policies.
-
Use o usuário ou função RAM para chamar a operação AssumeRole do STS e obter uma credencial de acesso STS temporária. Para mais informações, consulte AssumeRole.
AccessKey
Por padrão, uma conta do Alibaba Cloud possui permissões de administrador para todos os recursos, e isso não pode ser modificado. Para garantir a segurança, recomendamos o uso de um usuário RAM para criar um par de AccessKey e conceder apenas as permissões necessárias.
Acesse o RAM console. Na página Users, clique em nome do usuário RAM de destino.
Na aba Secret Management, na seção AccessKey, clique em Create AccessKey.
-
Conceda permissões de acesso ao KMS para o usuário RAM.
-
Método 1: configure uma política baseada em identidade
Na coluna Actions do usuário RAM, clique em Grant Permission para anexar uma política de permissão do sistema integrada do KMS ao usuário RAM. Para mais informações sobre as políticas de permissão do sistema do KMS, consulte System policies for KMS.
NotaVocê também pode criar políticas de permissão personalizadas. Para mais informações, consulte Create a custom policy.
-
Método 2: configure uma política baseada em recursos
O KMS é compatível com políticas baseadas em recursos que concedem permissões de acesso a chaves e segredos individuais. Use essas políticas para controlar quais contas do Alibaba Cloud, usuários do RAM e funções RAM podem gerencie ou usar chaves e segredos do KMS. Para mais informações, consulte Key policies e Secret policies.
-
ClientKey (não recomendado)
Acesse o Key Management Service console. Na barra de navegação superior, selecione uma região. No painel de navegação à esquerda, escolha .
-
(Opcional) Crie uma regra de rede.
NotaA configuração de uma regra de rede para restringir o acesso por endereço IP de origem é opcional. No entanto, recomendamos essa configuração para maior segurança.
Clique na aba Network Access Rules e, em seguida, clique em Create Network Access Rule.
No painel Create Network Access Rule, defina Network Type como Public, insira os Allowed Source IP Addresses e clique em OK.
-
Crie uma política de permissão.
Clique na aba Policies e, em seguida, clique em Create Policy.
-
No painel Create Policy, configure os parâmetros para o gateway compartilhado conforme descrito abaixo e, em seguida, clique em OK.
Scope: Shared KMS Gateway
Accessible Resources: selecione os segredos que você deseja acessar.
(Opcional) Network Access Rules: selecione a regra de rede criada na etapa anterior.
-
Crie um application access point (AAP).
Clique na aba Application Access e, em seguida, clique em Create AAP.
-
No painel Create AAP, defina Mode como Standard Creation e, em seguida, configure os parâmetros conforme descrito abaixo.
Parâmetro
Descrição
Authentication Method
Selecione ClientKey.
Encryption Password
Insira uma string de 8 a 64 caracteres que contenha dígitos, letras e caracteres especiais:
~!@#$%^&*?_-.Validity Period
ImportanteRecomendamos definir o período de validade como um ano para reduzir o risco de vazamento do ClientKey. Certifique-se de rotacionar o ClientKey antes da expiração para evitar interrupções no service. Para mais informações, consulte Rotate a ClientKey.
Policies
Selecione a política de permissão criada na etapa anterior.
-
Clique em OK. O navegador baixa automaticamente o ClientKey. O ClientKey inclui os seguintes arquivos:
Credential (ClientKeyContent): O nome padrão do arquivo é
clientKey_****.json.Credential password (ClientKeyPassword): O nome padrão do arquivo é
clientKey_****_Password.txt.
Cenário 2: Recuperar segredos por meio de um gateway dedicado (não recomendado)
O tipo de rede é uma rede privada do KMS, e o ClientKey é a única credencial de acesso compatível.
Você pode criar um ClientKey nos modos Quick Create ou Standard Create. Para mais informações sobre o ClientKey, consulte Application access points e Create an application access point.
-
Método 1: Quick Create
Este método é prático e eficiente, ideal para testes e desenvolvimentos rápidos. A credencial de acesso criada dessa forma possui acesso total a todos os recursos na instância do KMS.
Acesse o Key Management Service console. Na barra de navegação superior, selecione uma região. No painel de navegação à esquerda, escolha .
-
Na aba Application Access, clique em Create AAP. No painel Create AAP, configure os parâmetros.
Parâmetro
Descrição
Mode
Selecione Quick Creation.
Scope (KMS Instance)
Selecione a instância do KMS que sua aplicação precisa acessar.
Application Access Point Name
Insira um nome para o application access point.
Authentication Method
Definido como ClientKey, não pode ser alterado.
Encryption Algorithm
Selecione o algoritmo de criptografia para o ClientKey. Valores válidos: TripleDES-CBC e RC2-CBC (padrão).
NotaO RC2-CBC funciona na maioria dos ambientes e é o mais recomendado. Caso o seu ambiente possua requisitos de algoritmo mais rigorosos e não seja compatível com o RC2-CBC, selecione TripleDES-CBC.
Default Permission Policy
O valor é
key/secret/e não pode ser alterado. Isso significa que a aplicação pode acessar todas as chaves e segredos na instância do KMS especificada. -
Clique em OK. O navegador baixa automaticamente o ClientKey. O ClientKey inclui os seguintes arquivos:
Credential (ClientKeyContent): O nome padrão do arquivo é
clientKey_****.json.Credential password (ClientKeyPassword): O nome padrão do arquivo é
clientKey_****_Password.txt.
-
Método 2: Standard Create
Caso precise configure permissões de acesso refinadas para recursos, recomendamos o método Standard Create.
-
Siga as instruções do Standard Create em Create an application access point para criar um ClientKey para acessar o gateway dedicado. Os principais parâmetros são descritos abaixo:
Ao configure as regras de rede, selecione Private para o tipo de rede.
Ao configure o escopo da regra de permissão, selecione o KMS Instance ID correspondente.
-
Após a criação, o navegador baixa automaticamente o ClientKey, que inclui:
Credential (ClientKeyContent): O nome padrão do arquivo é
clientKey_****.json.Credential password (ClientKeyPassword): O nome padrão do arquivo é
clientKey_****_Password.txt.
-
Etapa 2: Instale o cliente
Instale o cliente JDBC de segredos por meio do 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>
Recomendamos a instalação da versão mais recente do SDK. Para mais informações sobre a instalação e o código source, visite aliyun-secretsmanager-jdbc.
Etapa 3: Inicializar o cliente com o secretsmanager.properties
Adicione um arquivo de configuração chamado secretsmanager.properties ao seu projeto. Os parâmetros de configuração variam de acordo com a credencial de acesso.
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
Função RAM de instância 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
Token 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 (gateway compartilhado)
## 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 (gateway dedicado)
Abordagem 1: Configure o caminho do arquivo
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>"}]
Abordagem 2: Configure a senha via variável de ambiente
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>"}]
Etapa 4: Conectar-se ao banco de dados
Os exemplos a seguir mostram apenas as propriedades que exigem modificação. Configure as demais propriedades com base nos requisitos do seu negócio.
Conectar-se a um banco de dados usando JDBC
-
Banco de dados MySQL
NotaSubstitua
#your-mysql-secret-name#,<YOUR-MYSQL-IP>,<YOUR-MYSQL-PORT>e<YOUR-DATABASE-NAME>pelo nome real do segredo, endereço IP do servidor, porta e nome do banco de dados, respectivamente.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(); } } } -
Banco de dados SQL Server
NotaSubstitua
#your-sqlserver-secret-name#,<YOUR-SQLSERVER-IP>,<YOUR-SQLSERVER-PORT>e<YOUR-DATABASE-NAME>pelo nome real do segredo, endereço IP do servidor, porta e nome do banco de dados, respectivamente.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(); } } } -
Banco de dados PostgreSQL
NotaSubstitua
#your-postgresql-secret-name#,<YOUR-POSTGRESQL-IP>,<YOUR-POSTGRESQL-PORT>e<YOUR-DATABASE-NAME>pelo nome real do segredo, endereço IP do servidor, porta e nome do banco de dados, respectivamente.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(); } } } -
Banco de dados MariaDB
NotaSubstitua
#your-mariadb-secret-name#,<YOUR-MARIADB-IP>,<YOUR-MARIADB-PORT>e<YOUR-DATABASE-NAME>pelo nome real do segredo, endereço IP do servidor, porta e nome do banco de dados, respectivamente.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(); } } }
Conectar-se usando um pool de conexão de banco de dados
Defina c3p0.user, c3p0.driverClass e c3p0.jdbcUrl no arquivo de configuração c3p0.properties. c3p0.user é o nome do segredo, c3p0.driverClass é o nome da classe do driver JDBC de segredos do Alibaba Cloud, e c3p0.jdbcUrl deve começar com secrets-manager.
-
Banco de dados MySQL
NotaSubstitua
#your-mysql-secret-name#,<YOUR-MYSQL-IP>,<YOUR-MYSQL-PORT>e<YOUR-DATABASE-NAME>pelo nome real do segredo, endereço IP do servidor, porta e nome do banco de dados, respectivamente.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> -
Banco de dados SQL Server
NotaSubstitua
#your-sqlserver-secret-name#,<YOUR-SQLSERVER-IP>,<YOUR-SQLSERVER-PORT>e<YOUR-DATABASE-NAME>pelo nome real do segredo, endereço IP do servidor, porta e nome do banco de dados, respectivamente.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> -
Banco de dados PostgreSQL
NotaSubstitua
#your-postgresql-secret-name#,<YOUR-POSTGRESQL-IP>,<YOUR-POSTGRESQL-PORT>e<YOUR-DATABASE-NAME>pelo nome real do segredo, endereço IP do servidor, porta e nome do banco de dados, respectivamente.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> -
Banco de dados MariaDB
NotaSubstitua
#your-mariadb-secret-name#,<YOUR-MARIADB-IP>,<YOUR-MARIADB-PORT>e<YOUR-DATABASE-NAME>pelo nome real do segredo, endereço IP do servidor, porta e nome do banco de dados, respectivamente.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>
Conectar-se usando uma fonte de dados
Este exemplo usa um c3p0 ComboPooledDataSource e um banco de dados MySQL. Adicione a seguinte configuração ao arquivo de configuração do Spring.
Substitua #your-mysql-secret-name#, <YOUR-MYSQL-IP>, <YOUR-MYSQL-PORT> e <YOUR-DATABASE-NAME> pelo nome real do segredo, endereço IP do servidor, porta e nome do banco de dados, respectivamente.
<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>
Defina os valores dos parâmetros maxPoolSize, minPoolSize e initialPoolSize de acordo com os requisitos do seu negócio.
Conectar-se usando um pool de conexões Druid
Este exemplo usa um banco de dados MySQL. Modifique as seguintes propriedades no arquivo de configuração.
Substitua #your-mysql-secret-name#, <YOUR-MYSQL-IP>, <YOUR-MYSQL-PORT> e <YOUR-DATABASE-NAME> pelo nome real do segredo, endereço IP do servidor, porta e nome do banco de dados, respectivamente.
-
Use um arquivo de configuração 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> -
Use a configuração bean
-
Método 1: Arquivo de configuração 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étodo 2: Injeção de propriedade
Crie uma classe de configuração na sua aplicação para carregar as informações de conexão do banco de dados.
@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; } }
-