本頁面說明如何使用 Cloud Data Loss Prevention API 檢查 Cloud Storage 資源,並建立資料的去識別化副本。
這項作業可確保您在業務程序中使用的檔案不含個人識別資訊 (PII) 等機密資料。Sensitive Data Protection 可檢查 Cloud Storage 值區中的檔案是否含有私密資料,並在另一個值區中建立這些檔案的去識別化副本。接著,您可以在業務流程中使用去識別化副本。
如要進一步瞭解這項功能,請參閱「將 Cloud Storage 中的私密資料去識別化」。
事前準備
本頁面假設您已具備以下條件:
您已啟用計費功能。
您已啟用 Sensitive Data Protection。
您有一個 Cloud Storage bucket,其中含有要進行去識別化的資料。
您知道如何向 DLP API 傳送 HTTP 要求。詳情請參閱「使用 DLP API 檢查機密文字」一節。
瞭解這項作業的限制和注意事項。
儲存空間檢查需要下列 OAuth 範圍:
https://www.googleapis.com/auth/cloud-platform
。詳情請參閱「通過 DLP API 驗證」。
必要 IAM 角色
如果這項作業的所有資源都位於同一專案中,則服務代理人的 DLP API 服務代理人角色 (roles/dlp.serviceAgent
) 就已足夠。取得這個角色後,您就能:
- 建立檢查工作
- 讀取輸入目錄中的檔案
- 將去識別化檔案寫入輸出目錄
- 將轉換作業詳細資料寫入 BigQuery 資料表
相關資源包括檢查工作、去識別化範本、輸入值區、輸出值區和轉換詳細資料表。
如果必須將資源放在不同專案中,請確保專案的服務代理也具備下列角色:
- 輸入值 bucket 或包含該 bucket 的專案,必須具備 Storage 物件檢視者角色 (
roles/storage.objectViewer
)。 - 輸出內容所在值區或專案的「Storage 物件建立者」角色 (
roles/storage.objectCreator
)。 - 轉換詳細資料表或所屬專案的 BigQuery 資料編輯者角色 (
roles/bigquery.dataEditor
)。
如要將角色授予服務代理程式,請參閱授予單一角色。您也可以在下列層級控管存取權:
API 總覽
如要建立儲存在 Cloud Storage 中的內容去識別化副本,請設定檢查工作,根據您指定的條件尋找私密資料。接著,在檢查工作中,以 Deidentify
動作的形式提供去識別化指示。
如要只掃描值區中的部分檔案,可以限制工作掃描的檔案。對於去識別化作業,系統支援的選項包括依類型 (FileType
) 和規則運算式 (FileSet
) 篩選檔案。
啟用 Deidentify
動作後,Sensitive Data Protection 預設會為掃描範圍內的所有支援檔案類型建立去識別化 (轉換) 副本。不過,您可以設定工作,只轉換部分支援的檔案類型。
選用:建立去識別化範本
如要控管發現項目的轉換方式,請建立下列範本。這些範本會提供相關指示,說明如何轉換結構化檔案、非結構化檔案和圖片中的發現項目。
去識別化範本:用於非結構化檔案 (例如任意形式的文字檔) 的預設
DeidentifyTemplate
。這類DeidentifyTemplate
無法包含RecordTransformations
物件,因為只有結構化內容支援這類物件。如果沒有這個範本,Sensitive Data Protection 會使用ReplaceWithInfoTypeConfig
方法轉換非結構化檔案。結構化去識別化範本:適用於結構化檔案 (例如 CSV 檔案) 的
DeidentifyTemplate
。這類內容DeidentifyTemplate
可能包含RecordTransformations
。如果沒有這個範本,Sensitive Data Protection 會使用您建立的預設去識別化範本。如果也不存在,Sensitive Data Protection 會使用ReplaceWithInfoTypeConfig
方法轉換結構化檔案。圖片遮蓋範本:用於圖片的
DeidentifyTemplate
。這個範本必須包含ImageTransformations
物件。如果沒有這個範本,機密資料保護功能會使用黑框遮蓋圖片中的所有發現項目。
進一步瞭解如何建立去識別化範本。
建立含有去識別化動作的檢查工作
DlpJob
物件會提供檢查內容、將哪些類型的資料標示為機密,以及如何處理檢查結果的相關指示。如要將 Cloud Storage 目錄中的私密資料去識別化,DlpJob
至少必須定義下列項目:
StorageConfig
物件,用於指定要檢查的 Cloud Storage 目錄。InspectConfig
物件,其中包含要尋找的資料類型,以及如何尋找私密資料的其他檢查指示。包含下列項目的
Deidentify
動作:TransformationConfig
物件,用於指定您為結構化和非結構化檔案中的資料去識別化而建立的任何範本。您也可以加入設定,遮蓋圖片中的機密資料。如果未加入
TransformationConfig
物件,Sensitive Data Protection 會將文字中的機密資料替換為 infoType。在圖片中,這項功能會以黑色方塊遮蓋機密資料。TransformationDetailsStorageConfig
物件,指定 Sensitive Data Protection 必須儲存每個轉換作業詳細資料的 BigQuery 資料表。每項轉換作業的詳細資料包括說明、成功或錯誤代碼、任何錯誤詳細資料、轉換的位元組數、轉換內容的位置,以及 Sensitive Data Protection 執行轉換作業的檢查工作名稱。這個資料表不會儲存實際的去識別化內容。
將資料寫入 BigQuery 資料表時,費用與配額用量會計入目的地資料表所屬專案。
複製的內容去識別化後,去識別化作業就會完成。這項工作包含指定轉換的套用次數摘要,您可以使用 DlpJob
上的 projects.dlpJobs.get
方法擷取這項摘要。傳回的 DlpJob
同時包含 DeidentifyDataSourceDetails
物件和 InspectDataSourceDetails
物件。這些物件分別包含 Deidentify
動作的結果和檢查工作。
如果您在 DlpJob
中加入 TransformationDetailsStorageConfig
物件,系統會建立 BigQuery 資料表,其中包含轉換詳細資料的中繼資料。每發生一次轉換,Sensitive Data Protection 就會在資料表中寫入一列中繼資料。如要進一步瞭解表格內容,請參閱「轉換詳細資料參考資料」。
程式碼範例
以下範例示範如何使用 DLP API 建立 Cloud Storage 檔案的去識別化副本。
HTTP 方法和網址
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/dlpJobs
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 輸入{
"inspect_job": {
"storage_config": {
"cloud_storage_options": {
"file_set": {
"url": "INPUT_DIRECTORY"
}
}
},
"inspect_config": {
"info_types": [
{
"name": "PERSON_NAME"
}
]
},
"actions": {
"deidentify": {
"cloud_storage_output": "OUTPUT_DIRECTORY",
"transformation_config": {
"deidentify_template": "DEIDENTIFY_TEMPLATE_NAME",
"structured_deidentify_template": "STRUCTURED_DEIDENTIFY_TEMPLATE_NAME",
"image_redact_template": "IMAGE_REDACTION_TEMPLATE_NAME"
},
"transformation_details_storage_config": {
"table": {
"project_id": "TRANSFORMATION_DETAILS_PROJECT_ID",
"dataset_id": "TRANSFORMATION_DETAILS_DATASET_ID",
"table_id": "TRANSFORMATION_DETAILS_TABLE_ID"
}
},
"fileTypesToTransform": ["IMAGE","CSV", "TEXT_FILE"]
}
}
}
}
更改下列內容:
PROJECT_ID
:您要儲存檢查作業的專案 ID。INPUT_DIRECTORY
:要檢查的 Cloud Storage 目錄,例如gs://input-bucket/folder1/folder1a
。如果網址以斜線結尾,系統就不會掃描INPUT_DIRECTORY
內的任何子目錄。OUTPUT_DIRECTORY
:您要儲存去識別化檔案的 Cloud Storage 目錄。這個目錄不得與INPUT_DIRECTORY
位於同一個 Cloud Storage 值區。DEIDENTIFY_TEMPLATE_NAME
:預設去識別化範本的完整資源名稱 (適用於非結構化和結構化檔案),前提是您已建立範本。 這個值必須採用projects/projectName/(locations/locationId)/deidentifyTemplates/templateName
格式。STRUCTURED_DEIDENTIFY_TEMPLATE_NAME
:如果您已建立結構化檔案的去識別化範本,請輸入該範本的完整資源名稱。這個值必須採用projects/projectName/(locations/locationId)/deidentifyTemplates/templateName
格式。IMAGE_REDACTION_TEMPLATE_NAME
:如果您已建立圖片的圖片遮蓋範本,請提供該範本的完整資源名稱。這個值必須採用projects/projectName/(locations/locationId)/deidentifyTemplates/templateName
格式。TRANSFORMATION_DETAILS_PROJECT_ID
:您要儲存轉換詳細資料的專案 ID。TRANSFORMATION_DETAILS_DATASET_ID
:您要儲存轉換詳細資料的 BigQuery 資料集 ID。如未提供資料表 ID,系統會自動建立。TRANSFORMATION_DETAILS_TABLE_ID
:要儲存轉換詳細資料的 BigQuery 資料表 ID。
請注意下列物件:
inspectJob
:這項工作的設定物件 (DlpJob
)。這個物件包含檢查和去識別化階段的設定。storageConfig
:要檢查的內容位置 (StorageConfig
)。這個範例指定了 Cloud Storage bucketCloudStorageOptions
。inspectConfig
:您要檢查的機密資料相關資訊 (InspectConfig
)。這個範例會檢查是否含有符合內建 infoTypePERSON_NAME
的內容。actions
:工作檢查部分完成後要採取的動作 (Action
)。deidentify
:指定這項動作會告知 Sensitive Data Protection 根據 (Deidentify
) 內指定的設定,對相符的私密資料去識別化。cloud_storage_output
:指定要檢查的 Cloud Storage 目錄網址。transformation_config
:指定 Sensitive Data Protection 必須如何對結構化檔案、非結構化檔案和圖片中的私密資料去識別化 (TransformationConfig
)。如果未加入
TransformationConfig
物件,Sensitive Data Protection 會將文字中的機密資料替換為 infoType。在圖片中,這項功能會以黑色方塊遮蓋機密資料。transformation_details_storage_config
:指定 Sensitive Data Protection 必須儲存這項作業執行的每項轉換相關中繼資料。此外,這個欄位會指定 Sensitive Data Protection 必須儲存中繼資料的資料表位置和名稱 (TransformationDetailsStorageConfig
)。fileTypesToTransform
:將去識別化作業限制為僅處理您列出的檔案類型。如未設定這個欄位,檢查作業中包含的所有支援檔案類型,也會納入去識別化作業。在本例中,即使您設定DlpJob
檢查所有支援的檔案類型,資訊保護服務也只會去識別化圖片、CSV 和文字檔案。
透過 REST API 建立檢查工作
如要建立檢查工作 (DlpJob
),請傳送 projects.dlpJobs.create
要求。如要使用 cURL 傳送要求,請將先前的 REST 範例儲存為 JSON 檔案,然後執行下列指令:
curl -s \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://dlp.googleapis.com/v2/projects/PROJECT_ID/dlpJobs \
-d @PATH_TO_JSON_FILE
更改下列內容:
PROJECT_ID
:儲存DlpJob
的專案 ID。PATH_TO_JSON_FILE
:包含要求主體的 JSON 檔案路徑。
Sensitive Data Protection 會傳回新建立的 DlpJob
ID、狀態,以及您設定的檢查設定快照。
{ "name": "projects/PROJECT_ID/dlpJobs/JOB_ID", "type": "INSPECT_JOB", "state": "PENDING", ... }
擷取檢查工作的結果
如要擷取 DlpJob
的結果,請傳送 projects.dlpJobs.get
要求:
curl -s \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://dlp.googleapis.com/v2/projects/PROJECT_ID/dlpJobs/JOB_ID
更改下列內容:
PROJECT_ID
:儲存DlpJob
的專案 ID。JOB_ID
:建立DlpJob
時傳回的工作 ID。
如果作業完成,您會收到類似以下的回應:
{ "name": "projects/PROJECT_ID/dlpJobs/JOB_ID", "type": "INSPECT_JOB", "state": "DONE", "inspectDetails": { "requestedOptions": { "snapshotInspectTemplate": {}, "jobConfig": { "storageConfig": { "cloudStorageOptions": { "fileSet": { "url": "INPUT_DIRECTORY" } } }, "inspectConfig": { "infoTypes": [ { "name": "PERSON_NAME" } ], "limits": {} }, "actions": [ { "deidentify": { "transformationDetailsStorageConfig": { "table": { "projectId": "TRANSFORMATION_DETAILS_PROJECT_ID", "datasetId": "TRANSFORMATION_DETAILS_DATASET_ID", "tableId": "TRANSFORMATION_DETAILS_TABLE_ID" } }, "transformationConfig": { "deidentifyTemplate": "DEIDENTIFY_TEMPLATE_NAME", "structuredDeidentifyTemplate": "STRUCTURED_DEIDENTIFY_TEMPLATE_NAME", "imageRedactTemplate": "IMAGE_REDACTION_TEMPLATE_NAME" }, "fileTypesToTransform": [ "IMAGE", "CSV", "TEXT_FILE" ], "cloudStorageOutput": "OUTPUT_DIRECTORY" } } ] } }, "result": { "processedBytes": "25242", "totalEstimatedBytes": "25242", "infoTypeStats": [ { "infoType": { "name": "PERSON_NAME" }, "count": "114" } ] } }, "createTime": "2022-06-09T23:00:53.380Z", "startTime": "2022-06-09T23:01:27.986383Z", "endTime": "2022-06-09T23:02:00.443536Z", "actionDetails": [ { "deidentifyDetails": { "requestedOptions": { "snapshotDeidentifyTemplate": { "name": "DEIDENTIFY_TEMPLATE_NAME", "createTime": "2022-06-09T17:46:34.208923Z", "updateTime": "2022-06-09T17:46:34.208923Z", "deidentifyConfig": { "infoTypeTransformations": { "transformations": [ { "primitiveTransformation": { "characterMaskConfig": { "maskingCharacter": "*", "numberToMask": 25 } } } ] } }, "locationId": "global" }, "snapshotStructuredDeidentifyTemplate": { "name": "STRUCTURED_DEIDENTIFY_TEMPLATE_NAME", "createTime": "2022-06-09T20:51:12.411456Z", "updateTime": "2022-06-09T21:07:53.633149Z", "deidentifyConfig": { "recordTransformations": { "fieldTransformations": [ { "fields": [ { "name": "Name" } ], "primitiveTransformation": { "replaceConfig": { "newValue": { "stringValue": "[redacted]" } } } } ] } }, "locationId": "global" }, "snapshotImageRedactTemplate": { "name": "IMAGE_REDACTION_TEMPLATE_NAME", "createTime": "2022-06-09T20:52:25.453564Z", "updateTime": "2022-06-09T20:52:25.453564Z", "deidentifyConfig": {}, "locationId": "global" } }, "deidentifyStats": { "transformedBytes": "3972", "transformationCount": "110" } } } ], "locationId": "global" }
後續步驟
- 進一步瞭解儲存空間中的資料去識別化程序。
- 瞭解如何使用 Google Cloud 控制台將儲存空間中的資料去識別化。
- 逐步演練「在 Cloud Storage 中建立去識別化的資料副本」程式碼研究室。
- 進一步瞭解去識別化轉換。
- 瞭解如何檢查儲存空間是否有機密資料。