本主題說明如何建立及重建大型自訂字典。並說明幾種錯誤情況。
何時應選擇大型自訂字典,而非一般自訂字典
如果您有數萬個機密字詞或詞組需要掃描內容,可以使用一般自訂字典偵測工具。如果您的字詞數量較多,或字詞清單經常變更,建議您建立大型自訂字典,可支援數千萬個字詞。
大型自訂字典與其他自訂 infoType 的差異
大型自訂字典與其他自訂 infoType 的不同之處,在於每個大型自訂字典都有兩個元件:
- 建立及定義的詞組清單。這份清單會以文字檔案的形式儲存在 Cloud Storage 中,或以資料欄的形式儲存在 BigQuery 資料表中。
- Sensitive Data Protection 會產生字典檔案,並儲存在 Cloud Storage。字典檔案由字詞清單副本和布隆篩選器組成,有助於搜尋和比對。
建立大型自訂字典
本節說明如何建立、編輯及重建大型自訂字典。
建立字詞清單
建立清單,列出您希望新 infoType 偵測工具搜尋的所有字詞和詞組。執行下列其中一個步驟:
- 將文字檔案放入 Cloud Storage bucket,每個字詞各占一行。
- 將 BigQuery 資料表的一個資料欄指定為字詞和詞組的容器。每個項目在資料欄中都應有專屬的資料列。您可以使用現有的 BigQuery 資料表,只要所有字典字詞和詞組都在同一欄即可。
如果字詞清單過大,Sensitive Data Protection 可能無法處理。如果看到錯誤訊息,請參閱本主題後續的「疑難排解錯誤」一節。
建立儲存的 infoType
建立字詞清單後,請使用 Sensitive Data Protection 建立字典:
控制台
在 Cloud Storage bucket 中建立新資料夾,Sensitive Data Protection 會將產生的字典儲存在該資料夾。
Sensitive Data Protection 會在您指定的位置建立資料夾,其中包含字典檔案。
前往 Google Cloud 控制台的「Create infoType」(建立 infoType) 頁面。
在「類型」部分,選取「大型自訂字典」。
在「InfoType ID」部分,輸入已儲存 infoType 的 ID。
設定檢查和去識別化工作時,您會用到這個 ID。名稱可使用英文字母、數字、連字號和底線。
在「InfoType 顯示名稱」部分,輸入已儲存 infoType 的名稱。
名稱中可以使用空格和標點符號。
在「Description」(說明) 中,輸入已儲存 infoType 的偵測內容說明。
在「Storage type」(儲存空間類型) 部分,選取字詞清單的位置:
- BigQuery:輸入專案 ID、資料集 ID 和資料表 ID。在「Field name」(欄位名稱) 欄位中,輸入資料欄 ID。您最多可以從資料表中指定一個資料欄。
- Google Cloud Storage:輸入檔案路徑。
在「Output bucket or folder」(輸出值區或資料夾) 中,輸入您在步驟 1 建立的資料夾 Cloud Storage 位置。
點選「建立」。
系統會顯示已儲存 infoType 的摘要。字典產生完畢且新的儲存 infoType 可供使用時,infoType 的狀態會顯示為「Ready」(就緒)。
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
- 在 Cloud Storage bucket 中為字典建立新資料夾。Sensitive Data Protection 會在您指定的位置建立包含字典檔案的資料夾。
- 使用
storedInfoTypes.create方法建立字典。create方法會採用下列參數:StoredInfoTypeConfig物件,其中包含已儲存 infoType 的設定。包括:description:字典說明。displayName:您要為字典指定的名稱。LargeCustomDictionaryConfig:包含大型自訂字典的設定。包括:BigQueryField:如果字詞清單儲存在 BigQuery 中,請指定這個值。包含清單儲存位置的資料表參照,以及包含各個字典詞組的欄位。CloudStorageFileSet:如果字詞清單儲存在 Cloud Storage,請指定這個項目。包含 Cloud Storage 中來源位置的網址,格式如下:"gs://[PATH_TO_GS]"。支援萬用字元。outputPath: Cloud Storage bucket 中用於儲存所建立字典的位置路徑。
storedInfoTypeId:已儲存 infoType 的 ID。重建、刪除或在檢查或去識別化工作中使用儲存的 infoType 時,您可以使用這個 ID 參照儲存的 infoType。如果將這個欄位留空,系統會為您產生 ID。
以下是 JSON 範例,傳送至 storedInfoTypes.create 方法時,會建立新的儲存 infoType,具體來說,就是大型自訂字典偵測工具。這個範例會從公開 BigQuery 資料庫 (bigquery-public-data.samples.github_nested) 中儲存的字詞清單,建立儲存的 infoType。該資料庫包含修訂版本中使用的所有 GitHub 使用者名稱。產生的字典輸出路徑會設為名為 dlptesting 的 Cloud Storage bucket,已儲存的 infoType 則命名為 github-usernames。
JSON 輸入
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/storedInfoTypes
{
"config":{
"displayName":"GitHub usernames",
"description":"Dictionary of GitHub usernames used in commits",
"largeCustomDictionary":{
"outputPath":{
"path":"gs://[PATH_TO_GS]"
},
"bigQueryField":{
"table":{
"datasetId":"samples",
"projectId":"bigquery-public-data",
"tableId":"github_nested"
}
}
}
},
"storedInfoTypeId":"github-usernames"
}
重新建立字典
如要更新字典,請先更新來源字詞清單,然後指示 Sensitive Data Protection 重建儲存的 infoType。
更新 Cloud Storage 或 BigQuery 中的現有來源字詞清單。
視需要新增、移除或變更字詞或詞組。
使用 Google Cloud 控制台或
storedInfoTypes.patch方法「重建」已儲存的 infoType,建立新版本。重建作業會建立新版字典,並取代舊版字典。
將儲存的 infoType 重建為新版本時,舊版本會刪除。Sensitive Data Protection 更新儲存的 infoType 時,狀態會顯示為「pending」(待處理)。在此期間,舊版已儲存的 infoType 仍會存在。在儲存的 infoType 處於待處理狀態時執行的任何掃描,都會使用舊版儲存的 infoType 執行。
如要重建已儲存的 infoType,請按照下列步驟操作:
控制台
- 在 Cloud Storage 或 BigQuery 中更新並儲存字詞清單。
在 Google Cloud 控制台,前往已儲存的 infoType 清單。
按一下要更新的儲存 infoType ID。
在「InfoType details」(InfoType 詳細資料) 頁面,按一下「Rebuild data」(重建資料)。
Sensitive Data Protection 會根據您對來源字詞清單所做的變更,重新建立儲存的 infoType。儲存的 infoType 狀態為「就緒」後,即可使用。任何使用已儲存 infoType 的範本或工作觸發條件,都會自動使用重建的版本。
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
更新字詞清單
如果只要更新大型自訂字典中的字詞清單,storedInfoTypes.patch 要求只需包含 name 欄位。提供要重建的儲存 infoType 完整資源名稱。
下列模式代表 name 欄位的有效項目:
organizations/ORGANIZATION_ID/storedInfoTypes/STORED_INFOTYPE_IDprojects/PROJECT_ID/storedInfoTypes/STORED_INFOTYPE_ID
將 STORED_INFOTYPE_ID 替換為要重建的儲存 infoType ID。
如果您不知道已儲存 infoType 的 ID,請呼叫 storedInfoTypes.list 方法,查看目前所有已儲存 infoType 的清單。
範例
PATCH https://dlp.googleapis.com/v2/projects/PROJECT_ID/storedInfoTypes/STORED_INFOTYPE_ID
在這種情況下,不需要要求主體。
切換原文詞彙清單
您可以將已儲存 infoType 的來源字詞清單,從儲存在 BigQuery 的清單變更為儲存在 Cloud Storage 的清單。請使用 storedInfoTypes.patch 方法,但在 LargeCustomDictionaryConfig 中加入 CloudStorageFileSet 物件,而非先前使用的 BigQueryField 物件。接著,將 updateMask 參數設為您重建的儲存 infoType 參數,格式為 FieldMask。舉例來說,下列 JSON 在 updateMask 參數中指出 Cloud Storage 路徑的網址已更新 (large_custom_dictionary.cloud_storage_file_set.url):
範例
PATCH https://dlp.googleapis.com/v2/projects/PROJECT_ID/storedInfoTypes/github-usernames
{
"config":{
"largeCustomDictionary":{
"cloudStorageFileSet":{
"url":"gs://[BUCKET_NAME]/[PATH_TO_FILE]"
}
}
},
"updateMask":"large_custom_dictionary.cloud_storage_file_set.url"
}
同樣地,您可以將字詞清單從儲存在 BigQuery 資料表中的清單,切換為儲存在 Cloud Storage bucket 中的清單。
使用大型自訂字典偵測工具掃描內容
使用大型自訂字典偵測工具掃描內容,與使用其他自訂 infoType 偵測工具掃描內容類似。
這項程序假設您已有儲存的 infoType。詳情請參閱本頁的「建立儲存的 infoType」一節。
控制台
執行下列操作時,可以套用大型自訂字典偵測工具:
在頁面的「Configure detection」(設定偵測) 部分,您可以在「InfoTypes」(infoType) 子節中指定大型自訂字典 infoType。
- 按一下「管理 infoType」。
- 在「InfoTypes」(infoType) 窗格中,按一下「Custom」(自訂) 分頁標籤。
- 按一下「Add custom infoType」(新增自訂 infoType)。
在「Add custom infoType」(新增自訂 infoType) 窗格中,執行下列操作:
- 在「Type」(類型) 部分,選取「Stored infoType」(已儲存的 infoType)。
- 在「InfoType」InfoType部分,輸入自訂 infoType 的名稱。可以使用英文字母、數字和底線。
在「可能性」部分,選取要指派給所有符合這項自訂 infoType 的發現項目的預設可能性等級。您可以使用啟動字詞規則,進一步微調個別發現項目的可能性等級。
如未指定預設值,預設可能性層級會設為
VERY_LIKELY。詳情請參閱「相符可能性」。在「Sensitivity」(機密程度) 部分,選取要指派給所有符合這項自訂 infoType 的發現項目的機密程度。如未指定值,這些發現項目的機密層級會設為
HIGH。資料剖析會使用敏感度分數。剖析資料時,Sensitive Data Protection 會使用 infoType 的機密程度分數計算機密程度。
在「Stored infoType name」(儲存的 infoType 名稱) 部分,選取要用來建立新自訂 infoType 的儲存 infoType。
按一下「Done」(完成),關閉「Add custom infoType」(新增自訂 infoType) 窗格。
選用:在「Built-in」(內建) 分頁中,編輯選取的內建 infoType。
按一下「Done」(完成),關閉「InfoTypes」(infoType) 窗格。
自訂 infoType 會新增至 Sensitive Data Protection 掃描的 infoType 清單。不過,在您儲存工作、工作觸發條件、範本或掃描設定之前,這項選取項目並非最終結果。
設定建立或編輯完成後,請按一下「儲存」。
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
傳送至 content.inspect 方法時,下列範例會使用指定的儲存 infoType 偵測工具掃描指定文字。infoType 參數為必填,因為所有自訂 infoType 都必須有名稱,且不得與內建 infoType 或其他自訂 infoType 衝突。storedType 參數包含已儲存 infoType 的完整資源路徑。
JSON 輸入
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/content:inspect
{
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"GITHUB_LOGINS"
},
"storedType":{
"name":"projects/PROJECT_ID/storedInfoTypes/github-logins"
}
}
]
},
"item":{
"value":"The commit was made by githubuser."
}
}
排解錯誤
如果嘗試從 Cloud Storage 中儲存的字詞清單建立儲存的 infoType 時發生錯誤,可能原因如下:
- 您已達到儲存 infoType 的上限。視問題而定,有幾種解決方法:
- 如果 Cloud Storage 中單一輸入檔案的大小達到上限 (200 MB),請嘗試將檔案分割成多個檔案。您可以使用多個檔案來組合單一自訂字典,只要所有檔案的合併大小不超過 1 GB 即可。
- BigQuery 的限制與 Cloud Storage 不同。建議將字詞移至 BigQuery 資料表。BigQuery 中自訂字典資料欄的大小上限為 1 GB,資料列數量上限為 5,000,000。
- 如果字詞清單檔案超過來源字詞清單的所有適用限制,您必須將字詞清單檔案分割成多個檔案,並為每個檔案建立字典。接著,為每個字典建立個別的掃描工作。
- 一或多個字詞不含任何字母或數字。 Sensitive Data Protection 無法掃描僅由空格或符號組成的字詞。字詞必須至少有一個字母或數字。檢查您的字詞清單,看看是否含有這類的字詞,然後予以修正或刪除。
- 字詞清單中的詞組含有過多「組成部分」。這裡的「成分」是指一連串不間斷的純字母、純數字,或純非字母和非數字字元 (例如空格或符號)。檢查您的字詞清單,看看是否含有這類的字詞,然後予以修正或刪除。
- Sensitive Data Protection 服務代理無法存取字典來源資料,也無法存取用於儲存字典檔案的 Cloud Storage bucket。如要修正這個問題,請將 Storage 管理員 (
roles/storage.admin) 角色,或 BigQuery 資料擁有者 (roles/bigquery.dataOwner) 和 BigQuery 工作使用者 (roles/bigquery.jobUser) 角色,授予 Sensitive Data Protection 服務代理。
API 總覽
如要建立大型自訂字典偵測工具,必須建立儲存的 infoType。
在 Sensitive Data Protection 中,儲存的 infoType 是以 StoredInfoType 物件表示。包含下列相關物件:
StoredInfoTypeVersion包含建立日期和時間,以及建立目前版本時發生的最後五則錯誤訊息。StoredInfoTypeConfig包含儲存的 infoType 設定,包括名稱和說明。如果是大型自訂字典,type必須是LargeCustomDictionaryConfig。LargeCustomDictionaryConfig會指定下列兩項:- 詞組清單儲存在 Cloud Storage 或 BigQuery 的位置。
- Cloud Storage 儲存產生的字典檔案的位置。
StoredInfoTypeState包含已儲存 infoType 的最新版本和任何待處理版本的狀態。狀態資訊包括儲存的 infoType 是否正在重建、可供使用或無效。
字典比對細節
以下說明 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的字元
如要建立、編輯或刪除儲存的 infoType,請使用以下方法:
storedInfoTypes.create:根據您指定的StoredInfoTypeConfig建立新的儲存 infoType。storedInfoTypes.patch:使用您指定的新StoredInfoTypeConfig重建已儲存的 infoType。如未指定,這個方法會使用現有的StoredInfoTypeConfig建立新版儲存的 infoType。storedInfoTypes.get:擷取StoredInfoTypeConfig和指定已儲存 infoType 的任何待處理版本。storedInfoTypes.list:列出目前儲存的所有 infoType。storedInfoTypes.delete:刪除指定的已儲存 infoType。