自訂字典提供簡單卻強大的功能,可讓您比對字詞或詞組清單。您可以將自訂字典當做偵測工具,或做為內建偵測工具的例外清單。您也可以使用自訂字典來擴增內建的 infoType 偵測工具,以比對額外的發現項目。
本節說明如何根據字詞清單建立一般自訂字典偵測工具。
字典自訂 infoType 偵測工具的剖析
如 API 總覽所述,如要建立字典自訂 infoType 偵測工具,請定義包含下列項目的 CustomInfoType 物件:
- 您要為自訂 infoType 偵測工具指定的名稱,位於
InfoType物件中。 - 選用的
Likelihood值。如果省略這個欄位,與字典項目相符的項目會傳回預設可能性VERY_LIKELY。 - 選用
DetectionRule物件或啟動字詞規則。這些規則可在指定啟動字詞的特定字數範圍內,針對發現項目調整可能性。如要進一步瞭解熱字規則,請參閱「自訂比對可能性」。 選用的
SensitivityScore值。如果省略這個欄位,與字典項目相符的項目會傳回預設敏感度等級HIGH。資料剖析會使用敏感度分數。剖析資料時,Sensitive Data Protection 會使用 infoType 的機密程度分數計算機密程度。
Dictionary,可以是包含要掃描的字詞清單的WordList,也可以是CloudStoragePath,指向包含要掃描的字詞清單 (以換行符號分隔) 的單一文字檔案。
字典自訂 infoType 偵測工具包含所有選用元件,以 JSON 物件表示時,看起來會像這樣。這個 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 基本多語言平面中的字母、數字和其他字母字元外,所有字元都會視為空白字元。如果字典掃描
Abby Abernathy,則會比對abby abernathy、Abby, Abernathy、Abby (ABERNATHY)等。 - 任何相符項目周圍的字元必須是不同類型 (字母或數字),不可以是字詞中的相鄰字元。如果字典掃描
Abi,則會比對Abi904的前三個字元,但不會比對Abigail。 - 如果字典字詞包含 Unicode 標準輔助多語言平面中的字元,可能會產生非預期的結果。這類字元的例子包括表情符號、科學符號和歷史文字。
字母、數字和其他字母字元的定義如下:
- 字母:萬國碼 (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 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Go
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱「Sensitive Data Protection 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Java
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱「Sensitive Data Protection 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱「Sensitive Data Protection 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
PHP
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱「Sensitive Data Protection 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Python
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱「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 輸入內容 POST 至 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 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Go
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱「Sensitive Data Protection 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Java
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱「Sensitive Data Protection 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱「Sensitive Data Protection 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
PHP
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱「Sensitive Data Protection 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Python
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱「Sensitive Data Protection 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
REST
下列 JSON 範例會建立自訂字典,列出 WordList 訊息中的電子郵件地址子集 (jack@example.org 和 jill@example.org),並指派自訂 infoType 名稱 DEVELOPER_EMAIL。這段 JSON 會指示 Sensitive Data Protection 忽略指定的電子郵件地址,並將偵測到的其他電子郵件地址替換為與其 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 POST 到 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 偵測工具無法傳回資料集中常見的部分人名相符項目。
Sensitive Data Protection 可讓您在自訂 infoType 偵測工具的宣告中加入內建偵測工具,藉此擴充內建 infoType 偵測工具,如以下範例所示。這段程式碼片段說明如何設定 Sensitive Data Protection,讓 PERSON_NAME 內建 infoType 偵測工具額外比對「Quasimodo」這個名稱:
C#
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱「Sensitive Data Protection 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Go
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱「Sensitive Data Protection 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Java
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱「Sensitive Data Protection 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱「Sensitive Data Protection 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
PHP
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱「Sensitive Data Protection 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Python
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱「Sensitive Data Protection 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
REST
...
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"PERSON_NAME"
},
"dictionary":{
"wordList":{
"words":[
"quasimodo"
]
}
}
}
]
}
...
後續步驟
瞭解大型自訂字典。