如何让apollo支持数据库密码加密

本文介绍了如何在Apollo 1.2.0版本中通过引入jasypt-spring-boot依赖,对配置文件中的密码进行加密,包括添加依赖、启用加密注解、设置环境变量及执行加密命令的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运行背景

apollo版本:1.2.0

实现方式如下:

1、拉取github中1.2.0版本的代码

2、增加jasypt-spring-boot依赖【版本APOLLO已经控制,无需指定版本】

<dependency>
	<groupId>com.github.ulisesbocchio</groupId>
	<artifactId>jasypt-spring-boot</artifactId>
</dependency>

3、修改admin、config、portal的启动类增加@EnableEncryptableProperties 注解

4、在~/.bash_profile增加环境变量用于控制使用的profile apollo_profile=github export apollo_profile

5、使用jasypt-1.9.2.jar  加密原始密码后修改响应配置文件后重启。

 

密码加密命令

jasypt加密

java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="123456" password="mysalt" algorithm=PBEWithMD5AndDES

input:密码

password:盐

algorithm:加密方式

配置加密

需要加密的密码改用:ENC(加密命令执行结果)
### Apollo配置中心多个实例共享同一数据库的方法 为了使Apollo配置中心的多个实例能够共享同一个数据库,需确保这些实例连接到相同的数据库实例并遵循一致性的最佳实践。具体来说: #### 数据库配置一致性 所有Apollo服务端实例应指向相同的数据源URL、用户名和密码。这可以通过编辑`config/application-github.properties`文件来实现,在该文件中指定统一的JDBC URL和其他必要的数据库参数[^2]。 ```properties # config/application-github.properties spring.datasource.url=jdbc:mysql://shared-db-host:3306/ApolloConfigDB?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=true spring.datasource.username=your_db_user spring.datasource.password=your_db_password ``` #### 使用CP架构保障数据一致性 由于Apollo采用了CP(Consistency and Partition tolerance)架构设计原则,这意味着即使在网络分区的情况下也能保持强一致性读写操作。因此当多个Apollo服务器实例访问同一个MySQL数据库时,可以依赖其内部机制自动处理并发控制等问题。 #### 注意事项 - **高可用性和灾备方案** 考虑设置主从复制或更高级别的HA解决方案以提高系统的可靠性和容错能力。 - **性能优化** 对于大型部署场景下可能存在的大量客户端请求压力,建议对数据库层做适当调优,比如调整缓存策略、索引结构等措施提升响应速度;同时也要关注网络延迟带来的影响[^1]。 - **安全防护** 加密传输通道中的敏感信息,并严格限制只有授权的服务才能访问特定资源,防止未授权的操作发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值