• SpringBoot-Jasypt:Jasypt(安全框架)


    ylbtech-SpringBoot-Jasypt:Jasypt(安全框架)
    1. 使用jasypt加密Spring Boot应用中的敏感配置返回顶部
    1、

    本文讲述了在Spring Boot/Spring Cloud应用中使用jasypt来加密properties。

    jasypt 简介

    详细信息直接看github文档即可,这里仅简单罗列一丢丢信息。

    Jasypt为Spring Boot应用提供property sources的加密支持,可以加密的数据有:

    • system property
    • environment property
    • command line argument
    • application.properties
    • yaml properties
    • other custom property sources

    ##哪些是敏感信息?

    由于很多应用使用 配置文件 (eg:properties、yml) 来存储配置信息,配置中经常会涉及到许多敏感信息。

    举几个小例子:

    • 普通应用密码信息,如:DB、Rabbit、Redis
    • 特殊密码信息,如:Spring Cloud Config需要配置Git等VCS密码信息
    • 第三方通讯凭证信息,如:调用第三方接口发送短信的通讯凭证信息

    由于各业务场景不同,因此敏感信息的定义也不同。

    应用场景案例

    这里以自有团队的Spring Cloud Config来举个例子。

    • 场景: 使用两个git repository来存储配置信息,一个存储生产环境配置,一个存储非生产环境所有配置。分两个的目的是控制权限,生产环境仅特定人员可见。
    • 问题: 由于VCS的账户密码存储在配置文件中,所以分两个git repo存储配置也是自欺欺人,可以直接根据配置文件中的VCS密码下载生产环境的配置信息。
    • 解决: 对VCS密码进行加密

    加密前的数据:

    spring:
      cloud:
        config:
          server:
            git:
              uri: https://example.domain.com/helloworld.git
              username: yourname
              password: yourpwd

    加密后的数据:

    spring:
      cloud:
        config:
          server:
            git:
              uri: https://example.domain.com/helloworld.git
              username: username
              password: ENC(DoyyHAMYaEyJBJHW496HiTT4VIazUYZo)

    如何使用jasypt

    参考 jasypt github文档最好,里面有更多信息,这里仅抛砖引玉,简单列举下使用步骤。

    引入jasypt-spring-boot-starter依赖

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

    ###配置加/解的密码

    以配置在 bootstrap.yml 中为例:

    jasypt:
      encryptor:
        password: JH8AS90jasH

    默认使用 PBEWithMD5AndDES 加密算法,只有 jasypt.encryptor.password 是必要配置。

    加密你的属性

    假设需要加密DB密码,密码为123456

    创建一个测试类,加密后得到的加密密码为:BsSPrDRNeU/Nb1v/GsHvZA==

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class BlogApplicationTests {
    
        @Autowired
        StringEncryptor stringEncryptor;
    
        @Test
        public void test() {
            System.out.println(stringEncryptor.encrypt("123456"));
        }
    }

    配置加密后的属性

    将加密后的属性值配置在配置文件中即可,ENC 是约定的关键字,在启动时会解析所有 PropertySource 中的加密属性。

    spring.datasource.password=ENC(BsSPrDRNeU/Nb1v/GsHvZA==)

    小结

    jasypt文档有更详细的介绍,支持多种配置方式甚至定制自己的Encryptor。

    2、
    2.返回顶部
     
    3.返回顶部
     
    4.返回顶部
     
    5.返回顶部
    0、
    0.1、
    1、
    2、
     
    6.返回顶部
     
    warn 作者:ylbtech
    出处:http://ylbtech.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    图形用户界面
    集合
    201671010136 泛型类总结
    异常、断言与日志
    [置顶]201671010131《面向对象程序设计课程学习进度条》
    [置顶]201671010131《面向对象程序设计课程学习进度条》
    201671010131《面向对象程序设计课程学习进度条》
    201671010131《面向对象程序设计课程学习进度条》
    201671010131《面向对象程序设计课程学习进度条》
    201671010131《面向对象程序设计课程学习进度条》
  • 原文地址:https://www.cnblogs.com/storebook/p/11009873.html
Copyright © 2020-2023  润新知