Google DLP脱敏后JSON格式损坏及限定检测范围咨询
解决Google DLP脱敏后JSON格式损坏的问题
1. 让DLP只扫描引号内的敏感内容
你可以通过自定义规则限定DLP的扫描范围,只针对JSON里的属性值(也就是双引号包裹的内容)检测:
- 写个正则表达式
"([^"]*)",用来精准匹配并捕获双引号里的文本内容。 - 在DLP配置里创建
CustomInfoType,把这个正则设为触发器,同时关联LOCATION和STREET_ADDRESS这两个预定义探测器。这样DLP只会在引号内的文本里找敏感数据,不会碰JSON的结构符号(比如冒号、大括号、逗号),自然就不会破坏格式了。
2. 改用结构化数据提交(最稳妥的方案)
别直接传JSON字符串,把Address对象拆成结构化的键值对给DLP处理:
- 把Address的每个字段(比如street、city、zip)单独作为结构化字段,放到DLP的
ContentItem里,同时指定每个字段要检测的信息类型。 - DLP会逐个字段处理脱敏,处理完你再重新拼成JSON或者直接转回Address对象,完全不会有格式问题。
- 给你个伪代码参考:
// 构造结构化内容 StructuredContent structuredContent = StructuredContent.newBuilder() .addFields(Field.newBuilder().setName("street").setValue(address.getStreet())) .addFields(Field.newBuilder().setName("city").setValue(address.getCity())) .build(); // 提交DLP脱敏任务 DlpJob job = dlpClient.createDlpJob(DlpJob.newBuilder() .setInspectJob(InspectJobConfig.newBuilder() .setContentItem(ContentItem.newBuilder().setStructured(structuredContent)) .setInspectConfig(InspectConfig.newBuilder() .addInfoTypes(InfoType.newBuilder().setName("STREET_ADDRESS")) .addInfoTypes(InfoType.newBuilder().setName("LOCATION"))) .setDeidentifyConfig(DeidentifyConfig.newBuilder() .setInfoTypeTransformations(InfoTypeTransformations.newBuilder() .addTransformations(Transformation.newBuilder() .setPrimitiveTransformation(PrimitiveTransformation.newBuilder() .setReplaceConfig(ReplaceConfig.newBuilder().setReplaceWith("***")))))) .build()); // 根据返回的结构化结果重新组装Address对象
3. 临时修复格式(应急用)
如果暂时没法改提交方式,也可以在DLP返回结果后做简单的格式修正:
- 检查返回的JSON有没有引号被误删、逗号错位这类问题,用正则表达式批量修复,比如确保所有属性键和字符串值都被双引号正确包裹。不过这个方法治标不治本,只能临时救急,不推荐长期用。
内容的提问来源于stack exchange,提问作者Marian Toma
相关产品推荐
相关产品推荐

