使能堆转储增强特性
介绍
JVM提供支持转储进程堆内容的能力,若Java进程内存中保留了大量的敏感信息,dump转储堆文件的操作将存在信息泄漏的安全风险。堆转储增强特性在保障Heap-dump故障定位能力前提下,屏蔽了转储堆文件中的敏感信息,该特性尤其在重大涉密项目中,对数据安全与隐私保护有重大意义。
场景建议
需要通过Heapdump文件进行问题定位或性能分析,但不希望发生敏感信息泄漏。
使用约束
- 堆转储增强特性支持毕昇JDK 8(8u422开始支持)和毕昇JDK 17(17.0.12开始支持)版本。
- 服务部署的Java版本要升级到和支持该功能的JDK工具包对应的版本。
- 请参见安装毕昇JDK加速库完成毕昇JDK加速软件包的下载和安装。
使用方法
堆转储增强特性支持以下两种方式使能。
- 进程VM参数使能方式命令举例:
java -Xmx10M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpRedact=full -XX:RedactMapFile=/home/heapmap.txt -XX:RedactMap="password:abc,encrypt:cde" MyClass -XX:RedactClassPath=/myClass/.../ReplaceValueAnnotation
- jmap命令参数使能方式命令举例:
jmap -dump:HeapDumpRedact=<names/basic/full/annotation/diyrules/off>,RedactMap="<key1:value1;key2:value2;...>",RedactMapFile=<file path>,RedactClassPath=</myClass/.../ReplaceValueAnnotation> <pid>
以上命令参数说明如表1所示。
参数 |
说明 |
---|---|
-XX:HeapDumpRedact |
指定匿名化模式。
|
-XX:RedactMap |
|
-XX:RedactMapFile |
通过文件获取要屏蔽敏感名字的映射关系。 |
-XX:RedactClassPath |
指定敏感值替换的注解类。 |