中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

使能堆转储增强特性

介绍

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>

    jmap命令参数具体使用用例和方法请参见《Heapdump匿名化用户使用说明书》。

以上命令参数说明如表1所示。

表1 堆转储增强特性使能命令参数说明

参数

说明

-XX:HeapDumpRedact

指定匿名化模式。

  • names:屏蔽敏感symbols,需要用户指定映射表,可以由RedactMapFile指定在一个文件里,或者由RedactMap直接写在命令行中。
  • basic:屏蔽int/char/byte数组,全部清零。
  • full:names + baisc。
  • annotation:屏蔽敏感字段值,需要用户指定注解类(包含classPath)。
  • diyrules:屏蔽敏感字段值,需要屏蔽的类和字段值信息由RedactMapFile指定在一个文件里,或者由RedactMap直接写在命令行中。
  • off:默认行为,关闭heapdump匿名化即堆转储特性。

-XX:RedactMap

  • 命令行中指定屏蔽敏感名字映射关系对,以分号作为组之间的分隔,以冒号作为映射对key/value的分隔。例如:key1:value1;key2:value2...。

-XX:RedactMapFile

通过文件获取要屏蔽敏感名字的映射关系。

-XX:RedactClassPath

指定敏感值替换的注解类。