写点什么

Nacos 配置中心脱敏

作者:Nacol
  • 2023-12-02
    广东
  • 本文字数:1357 字

    阅读完需:约 4 分钟

Nacos配置中心脱敏

1. 背景

为防止黑客黑掉配置中心获取关键配置信息,例如数据库账号密码。因此配置中心中的配置文件中有敏感信息时不能以明文的方式配置,将敏感信息加密,且密钥必须与配置中心隔离,防止黑客黑掉配置中心的同时拿到密钥,从而控制了黑客的爆炸半径。

2. 引入依赖

使用【jasypt】:

Jaysypt 版本请根据自行项目情况配置,本文以 3.0.5 为例

<dependency>   <groupId>com.github.ulisesbocchio</groupId>   <artifactId>jasypt-spring-boot-starter</artifactId>   <version>3.0.5</version></dependency>
复制代码

3. 配置 jasypt

jasypt 配置可作为 SpringBoot 应用的 yml 配置的一部分,但如果按照公司规定开发人员无权限知道特定环境敏感配置,那么可将权限收拢于运维,将特定环境的 jasypt 配置放置应用的启动命令中或者使用 k8s 的 Secret 管理。

jasypt:  encryptor:    # 秘钥:自定义    password: Nacol174$    # 加密算法    algorithm: PBEWithMD5AndDES
复制代码

4. 敏感信息加密

StringEncryp 会根据配置的加密策略加密敏感信息:

@Slf4j@RefreshScope@RestController@RequestMapping("/encryp")public class JasyptApi {
@Autowired private StringEncryptor encryptor;
/** * @Author Nacol(姚秋实) * @Title 字符串加密 */ @GetMapping("/enc") public String enc(@Param("content") String content) { String enc = "ENC(" + encryptor.encrypt(content) + ")"; log.info("{} → {}", content, enc); return enc; }
}
复制代码

输出【root】和【12356】加密后的结果:

root → ENC(gWOlqzdPyq2pWxZ+A1S6vfuixDSRPEN11j3HF0db4et1qg8SvEES/pVKzehrAxU7)123456 → ENC(HCHr/nQWahNYn1Vbk7kHgdCssH2SwEp4hSXJ4oG85l/NLEf9hVYQ2+Ck8EoGsyX3)
复制代码

5. 配置中心脱敏

spring:  application: config-enc  datasource:    url: jdbc:p6spy:mysql://127.0.0.1:3306/xxxxxxxx    # 配置加密的账号    username: ENC(ucIPdC+D7yYmURTbPe70Q9Mk0GeuoDbK9GnNJdLjqVyT0F6e16XR6dmeB6TyX8iZ)    # 配置加密的密码    password: ENC(y9xxLfgn4nouIfXi1qJ6w02jX+F+9ub4G2ELzJdx8aj8w8MXBu2dWQvJ1azmmjJ0)
复制代码

6. 验证-应用解密

通过 @Value 或者 @ConfigurationProperties 的配置类均可直接获取解密后的值,如下:

@Value("${spring.datasource.username}")private String username;
@Value("${spring.datasource.password}")private String password;
/** * @Author Nacol(姚秋实) * @Date 2023/12/2 * @Title 获取加密字段 */@GetMapping("/print-dynamic-config")public void printDynamicConfig() { log.info("username: {}, password: {}", username, password);}
复制代码

输出:

 username: root, password 123456
复制代码

7. 验证-动态刷新

  1. 将 【root → nacol】 以及 【123456 → 888888】;

nacol → ENC(ktMuvifstjuxP8MnQfSFeXuT55GCbQjQVKOm/QmAscjrqAnM/5URaXdXiiE1r/9e)888888 → ENC(ob4soYVtSCHM3bzXsSKAuo//2apo1AlGYge9tMjV/VjDDTq3rtJLwQ7/pCV0ILzM)
复制代码
  1. 修改 nacos 配置中心对应配置;

  2. 重新获取加密字段,结果如下:

username: nacolpassword: 888888
复制代码

8. 总结

使用 jasypt 对 Nacos 配置中心的敏感信息加密,支持应用的自动解密、动态刷新和密钥隔离。

发布于: 刚刚阅读数: 7
用户头像

Nacol

关注

一个快乐的完美主义者。 2019-07-19 加入

技术不仅是工具,更是一种生活方式。

评论

发布
暂无评论
Nacos配置中心脱敏_安全_Nacol_InfoQ写作社区