我正在调用DLP API,使用以下请求以文本形式屏蔽人名和电子邮件地址:
请求
{
"item": {
"value": "Eleanor RigbynPharmacistneleanor.rigby@example.com"
},
"deidentifyConfig": {
"infoTypeTransformations": {
"transformations": [
{
"infoTypes": [ { "name": "EMAIL_ADDRESS" } ],
"primitiveTransformation": {
"characterMaskConfig": {
"maskingCharacter": "#",
"reverseOrder": false,
"charactersToIgnore": [
{
"charactersToSkip": ".@"
}
]
}
}
},
{
"infoTypes": [ { "name": "PERSON_NAME" } ],
"primitiveTransformation": {
"replaceConfig": {
"newValue": {
"stringValue": "(person)"
}
}
}
}
]
}
},
"inspectConfig": {
"infoTypes": [ { "name": "EMAIL_ADDRESS" }, { "name": "PERSON_NAME" } ]
}
}
API调用
curl -s
-H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Type: application/json"
https://dlp.googleapis.com/v2/projects/$PROJECT_ID/content:deidentify
-d @gcp-dlp/input/text-request.json
响应
{
"item": {
"value": "(person)nPharmacistn(person)#######.#####@#######.###(person)"
},
"overview": {
"transformedBytes": "50",
"transformationSummaries": [
{
"infoType": {
"name": "EMAIL_ADDRESS"
},
"transformation": {
"characterMaskConfig": {
"maskingCharacter": "#",
"charactersToIgnore": [
{
"charactersToSkip": ".@"
}
]
}
},
"results": [
{
"count": "1",
"code": "SUCCESS"
}
],
"transformedBytes": "25"
},
{
"infoType": {
"name": "PERSON_NAME"
},
"transformation": {
"replaceConfig": {
"newValue": {
"stringValue": "(person)"
}
}
},
"results": [
{
"count": "3",
"code": "SUCCESS"
}
],
"transformedBytes": "25"
}
]
}
}
请求(仅限文本(
Eleanor Rigby
Pharmacist
eleanor.rigby@example.com
响应(仅限文本(
(person)
Pharmacist
(person)#######.#####@#######.###(person)
输入文本包含人名和电子邮件地址。两者都会按预期进行检测和屏蔽。但是,在屏蔽的电子邮件地址之前和之后会添加额外的(person)
标记。
这是一个非常简单的例子,但我在以这种方式处理的每个文档中都观察到了这种行为。
为什么多次检测到个人实体?
此问题已在谷歌公共问题跟踪器上报告,此类请求没有索引,但这是报告问题或请求新功能的好方法。请按照此案例进行更新。
谷歌提出了一个变通办法:
在这种情况下,当发现重叠该人员来自用户的配置以替换人名和人名。
他们可以省略重叠部分。
有关更多信息,请参阅文档"修改infoType检测器以完善扫描结果"部分,如果PERSON_NAME检测器也与EMAIL_ADDRESS检测器匹配,则省略匹配项:
以下JSON片段和几种语言的代码说明如何使用InspectConfig向Cloud DLP指示它应该在与
PERSON_NAME
匹配的情况下只返回一个匹配检测器与CCD_ 3检测器的匹配重叠。正在执行这是为了避免出现以下情况:"james@example.com"PERSON_NAME
和EMAIL_ADDRESS
上的匹配探测器。... "inspectConfig":{ "ruleSet":[ { "infoTypes":[ { "name":"PERSON_NAME" } ], "rules":[ { "exclusionRule":{ "excludeInfoTypes":{ "infoTypes":[ { "name":"EMAIL_ADDRESS" } ] }, "matchingType": "MATCHING_TYPE_PARTIAL_MATCH" } } ] } ] } ...