自訂字典提供簡單卻強大的功能,可讓您比對字詞或詞組清單。您可以將自訂字典做為偵測工具,或做為內建偵測工具的例外狀況清單。您也可以使用自訂字典來擴增內建的 infoType 偵測工具,以比對額外的發現項目。
本節說明如何從字詞清單建立一般自訂字典偵測工具。
字典自訂 infoType 偵測工具的剖析
依據 API 總覽摘要說明,如要建立字典自訂 infoType 偵測工具,則必須定義包含下列項目的 CustomInfoType
物件:
- 在
InfoType
物件中您要提供給自訂 infoType 偵測工具的名稱。 - 選用的
Likelihood
值。如果省略這個欄位,則與字典項目進行比對時,將傳回VERY_LIKELY
的預設可能性。 - 選用的
DetectionRule
物件或啟動字詞規則。這些規則可在指定啟動字詞的特定字數範圍內,針對發現項目調整可能性。如要進一步瞭解啟動字詞規則,請參閱「自訂相符可能性」一文。 選用的
SensitivityScore
值。如果省略這個欄位,則與字典項目進行比對時,將傳回HIGH
的預設敏感度層級。敏感度分數會用於資料剖析檔。在分析資料時,Sensitive Data Protection 會使用 infoType 的私密程度分數計算私密程度。
A
Dictionary
,可以是包含要掃描字詞清單的WordList
,也可以是包含要掃描字詞清單 (以換行符號分隔) 的單一文字檔CloudStoragePath
。
做為 JSON 物件且包含所有選用元件的字典自訂 infoType 偵測工具如下所示。這個 JSON 包含儲存在 Cloud Storage 中的字典文字檔路徑。如要查看內嵌字詞清單,請參閱本主題後面的「範例」一節。
{
"customInfoTypes":[
{
"infoType":{
"name":"CUSTOM_INFOTYPE_NAME"
},
"likelihood":"LIKELIHOOD_LEVEL",
"detectionRules":[
{
"hotwordRule":{
HOTWORD_RULE
}
},
...
],
"sensitivityScore":{
"score": "SENSITIVITY_SCORE"
},
"dictionary":
{
"cloudStoragePath":
{
"path": "gs://PATH_TO_TXT_FILE"
}
}
}
],
...
}
字典比對細節
以下指引描述 Sensitive Data Protection 如何比對字典字詞和詞組。這些要點適用於一般和大型自訂字典:
- 字典的字詞不區分大小寫。如果字典包括
Abby
,就會與abby
、ABBY
、Abby
等相符。 - 掃描相符項目時,如果字典或掃描內容中的字元不是 Unicode 基本多語言字面 (Basic Multilingual Plane) 中包含的字母、數字和其他字母字元,則會被視為空格字元。如果字典掃描
Abby Abernathy
,就會與abby abernathy
、Abby, Abernathy
、Abby (ABERNATHY)
等相符。 - 任何相符項目周圍的字元必須是不同類型 (字母或數字),不可以是字詞中的相鄰字元。如果字典掃描
Abi
,就會與Abi904
的前三個字元相符,但與Abigail
的前三個字元不相符。 - 如果字典字詞包含 Unicode 標準增補多語平面中的字元,可能會導致非預期的發現項目。這類字元包括表情符號、科學符號和歷史文字。
字母、數字和其他字母字元的定義如下:
- 字母:萬國碼規格中一般類別為
Lu
、Ll
、Lt
、Lm
或Lo
的字元 - 數字:Unicode 規格中一般類別為
Nd
的字元 - 其他英文字母字元:Unicode 規格中一般類別為
Nl
的字元,或 Unicode 標準定義的貢獻屬性為Other_Alphabetic
的字元
範例
簡易字詞清單
假設您手上的資料包含病人就診期間接受治療的醫院病房。這些位置可能會被視為特定資料集中的機密資料,而無法供 Sensitive Data Protection 內建的偵測工具取用。
病房列示於下:
- "RM-Orange"
- "RM-Yellow"
- "RM-Green"
C#
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱這篇文章。
如要驗證 Sensitive Data Protection,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Go
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱這篇文章。
如要驗證 Sensitive Data Protection,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱這篇文章。
如要驗證 Sensitive Data Protection,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱這篇文章。
如要驗證 Sensitive Data Protection,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
PHP
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱這篇文章。
如要驗證 Sensitive Data Protection,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱這篇文章。
如要驗證 Sensitive Data Protection,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
REST
下列 JSON 範例會定義自訂字典,讓您用來去識別化自訂的病房號碼。
JSON 輸入:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"Patient was seen in RM-YELLOW then transferred to rm green."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"primitiveTransformation":{
"replaceWithInfoTypeConfig":{
}
}
}
]
}
},
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"CUSTOM_ROOM_ID"
},
"dictionary":{
"wordList":{
"words":[
"RM-GREEN",
"RM-YELLOW",
"RM-ORANGE"
]
}
}
}
]
}
}
JSON 輸出:
當我們將 JSON 輸入張貼至 content:deidentify
時,其會傳回下列 JSON 回應:
{
"item":{
"value":"Patient was seen in [CUSTOM_ROOM_ID] then transferred to [CUSTOM_ROOM_ID]."
},
"overview":{
"transformedBytes":"17",
"transformationSummaries":[
{
"infoType":{
"name":"CUSTOM_ROOM_ID"
},
"transformation":{
"replaceWithInfoTypeConfig":{
}
},
"results":[
{
"count":"2",
"code":"SUCCESS"
}
],
"transformedBytes":"17"
}
]
}
}
Sensitive Data Protection 已可正確地識別自訂字典的 WordList
郵件中指定的病房號碼。請注意,即使大小寫不同且缺少連字號 (-
) 亦可成為相符項目,如第二個範例「rm green」所示。
例外清單
假設您的記錄資料包含客戶 ID (例如電子郵件地址),而您想要遮蓋這項資訊,但是這類記錄中也包含內部開發人員的電子郵件地址,而且不需予以遮蓋。
C#
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱這篇文章。
如要驗證 Sensitive Data Protection,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Go
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱這篇文章。
如要驗證 Sensitive Data Protection,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱這篇文章。
如要驗證 Sensitive Data Protection,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱這篇文章。
如要驗證 Sensitive Data Protection,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
PHP
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱這篇文章。
如要驗證 Sensitive Data Protection,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱這篇文章。
如要驗證 Sensitive Data Protection,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
REST
以下 JSON 範例會建立自訂字典,列出 WordList
訊息中的電子郵件地址子集 (jack@example.org 和 jill@example.org),並將自訂 infoType 名稱 DEVELOPER_EMAIL
指派給這些地址。這段 JSON 會指示資訊保護服務忽略指定的電子郵件地址,並將偵測到的任何其他電子郵件地址,替換為對應 infoType 的字串 (在本例中為 EMAIL_ADDRESS
):
JSON 輸入:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"jack@example.org accessed customer record of user5@example.com"
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"primitiveTransformation":{
"replaceWithInfoTypeConfig":{
}
},
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
]
}
},
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"DEVELOPER_EMAIL"
},
"dictionary":{
"wordList":{
"words":[
"jack@example.org",
"jill@example.org"
]
}
}
}
],
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
"ruleSet": [
{
"infoTypes": [
{
"name": "EMAIL_ADDRESS"
}
],
"rules": [
{
"exclusionRule": {
"excludeInfoTypes": {
"infoTypes": [
{
"name": "DEVELOPER_EMAIL"
}
]
},
"matchingType": "MATCHING_TYPE_FULL_MATCH"
}
}
]
}
]
}
}
JSON 輸出:
當我們將此 JSON 張貼至 content:deidentify
時,其會傳回下列 JSON 回應:
{
"item":{
"value":"jack@example.org accessed customer record of [EMAIL_ADDRESS]"
},
"overview":{
"transformedBytes":"17",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"replaceWithInfoTypeConfig":{
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"17"
}
]
}
}
輸出已正確地將 user1@example.com 識別為與 EMAIL_ADDRESS
infoType 偵測工具相符,而將 jack@example.org 識別為與 DEVELOPER_EMAIL
自訂的 infoType 偵測工具相符。請注意,由於我們選擇僅轉換 EMAIL_ADDRESS
,因此 jack@example.org 會保持不變。
擴增內建 infotype 偵測工具
請試想內建的 infoType 偵測工具未傳回正確值的情況。舉例來說,您想要傳回人名的相符項目,但是 Sensitive Data Protection 內建 PERSON_NAME
偵測工具無法傳回部分人名的相符項目,而這些姓名在您的資料集內為常見項目。
您可以透過在自訂 infoType 偵測工具的宣告中加入內建偵測工具,藉此補強內建 infoType 偵測工具,如以下範例所示。這段程式碼說明如何設定 Sensitive Data Protection,以便讓 PERSON_NAME
內建 infoType 偵測工具另行比對名字「Quasimodo」:
C#
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱這篇文章。
如要驗證 Sensitive Data Protection,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Go
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱這篇文章。
如要驗證 Sensitive Data Protection,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱這篇文章。
如要驗證 Sensitive Data Protection,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱這篇文章。
如要驗證 Sensitive Data Protection,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
PHP
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱這篇文章。
如要驗證 Sensitive Data Protection,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱這篇文章。
如要驗證 Sensitive Data Protection,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
REST
... "inspectConfig":{ "customInfoTypes":[ { "infoType":{ "name":"PERSON_NAME" }, "dictionary":{ "wordList":{ "words":[ "quasimodo" ] } } } ] } ...
後續步驟
瞭解大型自訂字典。