You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot如何解密YAML文件中的环境变量?支持Shell加密

实现方案:基于Jasypt Spring Boot Starter

完全可以实现你的需求,以下是具体操作步骤:

  • 引入依赖
    在你的pom.xml中添加Jasypt Spring Boot Starter依赖:

    <dependency>
        <groupId>com.github.ulisesbocchio</groupId>
        <artifactId>jasypt-spring-boot-starter</artifactId>
        <version>3.0.5</version> <!-- 使用最新稳定版 -->
    </dependency>
    
  • 配置加密密钥与解析规则
    加密密钥不能硬编码在配置文件中,建议通过环境变量传递:

    • 启动应用时设置环境变量:JASYPT_ENCRYPTOR_PASSWORD=your_secret_key
    • GitLab流水线中,将密钥配置为受保护且掩码的变量,避免泄露

    同时在application.yml中配置Jasypt的解析格式,匹配你期望的#{decrypt(...)}语法:

    jasypt:
      encryptor:
        property:
          prefix: "#{decrypt("
          suffix: ")}"
    
  • 修改数据源配置
    直接在YAML中使用目标语法引用加密后的环境变量:

    datasource:
      url: jdbc:postgresql://#{decrypt(${DB_SERVER_AND_PORT})}/my_db
      username: #{decrypt(${DB_USER})}
      password: #{decrypt(${DB_USER_PASSWORD})}
    
  • Shell/GitLab流水线中执行加密
    有两种便捷方式:

    1. 命令行工具加密
      下载Jasypt压缩包解压后,执行:

      ./bin/jasypt encrypt.sh --input=要加密的明文 --password=your_secret_key
      

      输出的加密字符串即可设置为对应环境变量。

    2. Maven插件加密
      先在pom.xml中添加插件:

      <build>
          <plugins>
              <plugin>
                  <groupId>com.github.ulisesbocchio</groupId>
                  <artifactId>jasypt-maven-plugin</artifactId>
                  <version>3.0.5</version>
              </plugin>
          </plugins>
      </build>
      

      然后执行Shell命令:

      mvn jasypt:encrypt-value -Djasypt.encryptor.password=your_secret_key -Djasypt.plugin.value=要加密的明文
      
  • 注意事项

    • 加密密钥必须严格保密,生产环境建议用专业密钥管理工具(如K8s Secrets)传递,而非直接暴露环境变量
    • 应用启动时必须能获取到密钥,否则无法解密配置会启动失败
    • GitLab流水线中加密密钥要设置为掩码变量,防止日志泄露

内容的提问来源于stack exchange,提问作者Krzysztof

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 11:43:39