杂项-SpringBoot-Jasypt:Jasypt(安全框架)
ylbtech-杂项-SpringBoot-Jasypt:Jasypt(安全框架) |
1. 使用jasypt加密Spring Boot应用中的敏感配置返回顶部 |
本文讲述了在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.返回顶部 |
3.返回顶部 |
4.返回顶部 |
5.返回顶部 |
6.返回顶部 |
![]() |
作者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |
杂项-SpringBoot-Jasypt:Jasypt(安全框架)的更多相关文章
- SpringBoot集成Jasypt安全框架,配置文件内容加密
我们在SpringBoot项目中的yml或者properties配置文件中都是明文的,相对而言安全性就低了很多.都知道配置文件中的都是一些数据库连接用户名密码啊.一些第三方密钥等信息.所以我们谨慎点, ...
- 【Springboot】Springboot整合Jasypt,让配置信息安全最优雅方便的方式
1 简介 在上一篇文章中,介绍了Jasypt及其用法,具体细节可以查看[Java库]如何使用优秀的加密库Jasypt来保护你的敏感信息?.如此利器,用之得当,那将事半功倍.本文将介绍Springboo ...
- Springboot Application 集成 OSGI 框架开发
内容来源:https://www.ibm.com/developerworks/cn/java/j-springboot-application-integrated-osgi-framework-d ...
- 搭建SpringBoot+dubbo+zookeeper+maven框架(二)
上一篇文章是关于搭建SpringBoot+dubbo+zookeeper+maven框架的,但是里面的功能还不够完善,今天就日志管理方面做一些改善. 下了demo的网友可能会发现项目在启动时会有警告: ...
- 搭建SpringBoot+dubbo+zookeeper+maven框架(一)
这几天项目还没来,所以就自己试着参考网上的一些资料,搭建了一个SpringBoot+dubbo+zookeeper+maven框架,网上参考的很多资料照着他们一步一步搭建,最后很多都运行不通,很是郁闷 ...
- 使用Springboot快速搭建SSM框架
Spring Boot设计目的是用来简化Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. 一.环境准备 Idea 2017 或 201 ...
- Springboot整合Shiro安全框架
最近在学习Springboot,在这个过程中遇到了很多之前都没有技术知识,学习了一阵子,稍微总结一些. ---- Shiro框架 shiro框架,是一个相对比较简便的安全框架,它可以干净利落地处理身份 ...
- SpringBoot系列之日志框架使用教程
目录 1.SpringBoot日志级别 1).日志级别简介 2).默认日志级别 3).配置日志级别 4).日志分组设置 2.SpringBoot日志格式设置 1).默认格式原理简介 2).默认日志格式 ...
- SpringBoot系列之日志框架介绍及其原理简介
SpringBoot系列之日志框架介绍及其原理简介 1.常用日志框架简介 市面上常用日志框架:JUL.JCL.jboss-logging.logback.log4j.log4j2.slf4j.etc. ...
随机推荐
- myeclipse问题
eclipse使用过程中发现汉字太小,几乎不可辨识. 更改办法:eclipse界面依次选择“window”–“preference”–“general”–“appearance”–“color and ...
- 在Linux(centos)下,安装Apache和PHP环境
1001 ll /opt/lampp/modules/ 1002 history | grep httpd 1003 vim /etc/httpd/conf/httpd.conf 1004 v ...
- _proto_和prototype
_proto_和prototype 实例对象中有一个属性,_proto_,也是对象,叫原型,不是标准的属性,浏览器使用的, 构造函数中有一个属性,Prototype,也是对象,叫原型,是标准属性,程序 ...
- Navicat Premium下载、安装、破解
Navicat Premium 是一套数据库管理工具,让你以单一程序同時连接到 MySQL.MariaDB.SQL Server.SQLite.Oracle 和 PostgreSQL 数据库. 此外, ...
- 网页存储倒计时与解决网页cookie保存多个相同key问题
短信倒计时多用网页临时存储,这可以保证网页在关闭状态也可记时. <p class="test_button" id="getcode">获取验证码& ...
- spring boot项目开发中遇到问题,持续更新
1.JPA中EntityManager不能执行建表语句,提示要加事务Error:javax.persistence.TransactionRequiredException: Executing an ...
- CreateRemoteThread简单应用
要实现线程的远程注入必须使用Windows提供的CreateRemoteThread函数来创建一个远程线程 该函数的原型如下: HANDLE CreateRemoteThread( HAND ...
- (2)mysql数据类型
数据类型 1.整数类型 浮点类型 定点数类型 decimal(M,D)也看作(numeric) decimal(8,2) M是定点精度,D是小数位数.指定小数点左边.右边加一起共8位数.也就是整数部分 ...
- Docker系列(二):Docker基础命令
docker的部署安装(Linux kernel至少3.8以上): yum install docker docker1.8安装:(下面 是两个命令) # cat >/etc/yum.repos ...
- LightOJ-1259-Goldbach`s Conjecture-素数打表+判断素数对数
Goldbach's conjecture is one of the oldest unsolved problems in number theory and in all of mathemat ...