本主題說明如何建立及重建大型自訂字典。此外,也涵蓋多種錯誤情況。
何時該選擇大型自訂字典而非一般自訂字典
如果掃描內容所用的機密字詞或詞組清單不大時,很適合使用一般的自訂字典偵測工具。如果字詞數量較多,或是字詞清單經常變動,建議建立大型自訂字典,最多可支援數千萬個字詞。
大型自訂字典與其他自訂 infoType 的差異
大型自訂字典與其他自訂 infoType 不同,因為每個大型自訂字典都有兩個元件:
- 建立及定義的詞組清單。這個清單會存成 Cloud Storage 中的文字檔或存成 BigQuery 表格中的資料欄。
- 字典檔案,由 Sensitive Data Protection 產生並儲存在 Cloud Storage。字典檔案由詞彙清單副本加上 Bloom 篩選器所組成,用於輔助搜尋和比對。
建立大型自訂字典
本節說明如何建立、編輯及重建大型自訂字典。
建立字詞清單
建立清單,內含您希望新的 infoType 偵測工具搜尋的所有字詞和詞組。執行下列其中一個步驟:
- 將文字檔 (每個字詞或詞組為一行) 置於 Cloud Storage 值區中。
- 將 BigQuery 表格的一個資料欄指定為字詞和詞組的容器,讓每個項目在資料欄中有自己的資料列。您可以使用現有的 BigQuery 表格,但所有的字典字詞和詞組都必須放在同一個資料欄中。
建立的字詞清單有可能會大到 Sensitive Data Protection 無法處理。如果出現錯誤訊息,請參閱本主題後面的「排解相關錯誤」一節。
建立已儲存的 infoType
建立字詞清單後,請使用 Sensitive Data Protection 建立字典:
控制台
在 Cloud Storage bucket 中,建立新資料夾,Sensitive Data Protection 會將產生的字典儲存在該資料夾中。
Sensitive Data Protection 會在您指定的位置中建立含有字典檔案的資料夾。
前往 Google Cloud 控制台的「建立 infoType」頁面。
在「Type」(類型) 部分,選取「Large custom dictionary」(大型自訂字典)。
在「InfoType ID」(InfoType ID) 部分輸入已儲存 infoType 的 ID。
設定檢查和去識別化工作時,您會使用這個 ID。名稱可使用英文字母、數字、連字號和底線。
針對「InfoType display name」(InfoType 顯示名稱),請輸入儲存的 infoType 名稱。
名稱可以使用空格和標點符號。
在「說明」中,輸入儲存 infoType 偵測到的內容說明。
在「儲存空間類型」中,選取字詞清單的位置:
- BigQuery:輸入專案 ID、資料集 ID 和資料表 ID。 在「欄位名稱」欄位中,輸入資料欄 ID。最多只能指定表格中的一個資料欄。
- Google Cloud Storage:輸入檔案路徑。
在「輸出 bucket 或資料夾」中,輸入您在步驟 1 中建立的資料夾 Cloud Storage 位置。
點選「建立」。
系統會顯示儲存的 infoType 摘要。字典產生完畢且新的儲存 infoType 可供使用時,infoType 的狀態會顯示「就緒」。
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
- 在 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 值區中儲存所建立字典的位置路徑。
storedInfoTypeId
:已儲存 infoType 的識別碼。您在重建、刪除儲存的 infoType,或將其用於檢查或去識別化工作時,會使用這個 ID 參照該 infoType。如果您將這個欄位留白,系統會替您產生識別碼。
以下範例 JSON 在傳送到 storedInfoTypes.create
方法後,會建立新的儲存 infoType,也就是大型自訂字典偵測工具。這個範例會根據儲存在公開 BigQuery 資料庫 (bigquery-public-data.samples.github_nested
) 中的字詞清單,建立儲存的 infoType。這個資料庫包含在修訂版本中使用的所有 GitHub 使用者名稱。所產生字典的輸出路徑則設定為名為 dlptesting
的 Cloud Storage 值區,而儲存的 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 時,狀態會是「待處理」。在此期間,舊版儲存的 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,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
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
更新字詞清單
如果只更新大型自訂字典中的字詞清單,storedInfoTypes.patch
要求只需要 name
欄位。請提供要重建的儲存 infoType 的完整資源名稱。
以下是 name
欄位的有效輸入格式:
organizations/ORGANIZATION_ID/storedInfoTypes/STORED_INFOTYPE_ID
projects/PROJECT_ID/storedInfoTypes/STORED_INFOTYPE_ID
將 STORED_INFOTYPE_ID 替換為要重建的已儲存 infoType 的 ID。
如果您不知道儲存的 infoType 識別碼,請呼叫 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
物件。然後,以 FieldMask
格式,將 updateMask
參數設為您重建的儲存 infoType 參數。舉例來說,下列 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 值區的清單。
使用大型自訂字典偵測工具掃描內容
使用大型自訂字典偵測工具掃描內容,與使用任何其他自訂 infoType 偵測工具掃描內容類似。
此程序假設您已有儲存的 infoType。詳情請參閱本頁面的「建立已儲存的 infoType」一節。
控制台
執行下列操作時,您可以套用大型自訂字典偵測工具:
在頁面的「Configure detection」(設定偵測) 專區中,於「InfoTypes」(infoType) 子專區指定大型自訂字典 infoType。
- 按一下「管理 infoType」。
- 在「InfoTypes」(infoType) 窗格中,按一下「Custom」(自訂) 分頁。
- 按一下「新增自訂 InfoType」。
在「新增自訂 InfoType」窗格中,執行下列操作:
- 在「Type」(類型) 部分選取「Stored infoType」(已儲存的 infoType)。
- 如果是 InfoType,請輸入自訂 infoType 的名稱。可以使用英文字母、數字和底線。
在「可能性」中,選取要指派給所有與這個自訂 infoType 相符發現項目的預設可能性等級。您可以使用啟動字詞規則,進一步微調個別發現項目的可能性等級。
如未指定預設值,預設可能性等級會設為
VERY_LIKELY
。詳情請參閱「比對可能性」。在「敏感度」部分,選取要指派給所有與這個自訂 infoType 相符發現項目的敏感度等級。如未指定值,這些發現項目的敏感度等級會設為
HIGH
。敏感度分數會用於資料剖析檔。在分析資料時,Sensitive Data Protection 會使用 infoType 的私密程度分數計算私密程度。
在「儲存的 infoType 名稱」中,選取要用來建立新自訂 infoType 的儲存 infoType。
按一下「完成」,關閉「新增自訂 infoType」窗格。
選用:在「內建」分頁中,編輯內建 infoType 的選取項目。
按一下「完成」,關閉「InfoTypes」窗格。
自訂 infoType 會新增至 Sensitive Data Protection 掃描的 infoType 清單。不過,在您儲存工作、工作觸發條件、範本或掃描設定之前,這項選取項目並非最終結果。
建立或編輯設定完成後,請按一下「儲存」。
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
以下範例在傳送到 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 值區來儲存字典檔案。如要修正這個問題,請將 Storage 管理員 (
roles/storage.admin
) 角色或 BigQuery 資料擁有者 (roles/bigquery.dataOwner
) 和 BigQuery 工作使用者 (roles/bigquery.jobUser
) 角色授予 Sensitive Data Protection 服務代理程式。
API 總覽
如要建立大型自訂字典偵測工具,必須先建立儲存的 infoType。
儲存的 infoType 會在 Sensitive Data Protection 中以 StoredInfoType
物件來表示,當中包含下列相關物件:
StoredInfoTypeVersion
包括建立日期和時間,以及建立目前版本時發生的最近五則錯誤訊息。StoredInfoTypeConfig
包含儲存的 infoType 設定,包括名稱和描述。如果是大型自訂字典,type
必須是LargeCustomDictionaryConfig
。LargeCustomDictionaryConfig
指定以下兩者:- 詞組清單儲存在 Cloud Storage 或 BigQuery 的位置。
- Cloud Storage 儲存產生的字典檔案的位置。
StoredInfoTypeState
包含儲存的 infoType 最新版本及任何待處理版本的狀態。狀態資訊包括儲存的 infoType 重建中、可供使用,還是無效。
字典比對細節
以下指引描述 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
的字元
如要建立、編輯或刪除儲存的 infoType,請使用以下方法:
storedInfoTypes.create
:根據您指定的StoredInfoTypeConfig
建立新的儲存 infoType。storedInfoTypes.patch
:使用您指定的新StoredInfoTypeConfig
重建儲存的 infoType。如果未指定任何項目,這個方法會使用現有的StoredInfoTypeConfig
建立儲存的 infoType 新版本。storedInfoTypes.get
:擷取StoredInfoTypeConfig
和指定儲存 infoType 的任何待處理版本。storedInfoTypes.list
:列出所有目前儲存的 infoType。storedInfoTypes.delete
:刪除指定的儲存 infoType。