בדף הזה מוסבר איך לבדוק משאב של Cloud Storage וליצור עותקים של הנתונים שעברו הסרת פרטים מזהים באמצעות Cloud Data Loss Prevention API.
הפעולה הזו עוזרת לוודא שהקבצים שבהם אתם משתמשים בתהליכים העסקיים שלכם לא מכילים מידע אישי רגיש, כמו פרטים אישיים מזהים (PII). השירות Sensitive Data Protection יכול לבדוק קבצים בקטגוריה של Cloud Storage כדי לזהות מידע אישי רגיש, וליצור עותקים של הקבצים האלה שעברו הסרת פרטים מזהים בקטגוריה נפרדת. אחר כך תוכלו להשתמש בעותקים שעברו דה-אינדנטיפיקציה בתהליכים העסקיים שלכם.
מידע נוסף על התכונה הזו מפורט במאמר הסרת פרטי הזיהוי ממידע אישי רגיש ב-Cloud Storage.
לפני שמתחילים
בדף הזה אנחנו יוצאים מנקודת הנחה ש:
הפעלתם את החיוב.
הפעלתם את Sensitive Data Protection.
יש לכם קטגוריה של Cloud Storage עם נתונים שאתם רוצים להסיר מהם את הפרטים המזהים.
אתם יודעים איך לשלוח בקשת HTTP ל-DLP API. מידע נוסף זמין במאמר בדיקת טקסט רגיש באמצעות DLP API.
מידע נוסף על המגבלות והנקודות למחשבה לגבי הפעולה הזו
כדי לבדוק את האחסון, צריך את היקף ההרשאות הבא של OAuth:
https://www.googleapis.com/auth/cloud-platform. מידע נוסף זמין במאמר בנושא אימות ל-DLP API.
התפקידים שצריך ב-IAM
אם כל המשאבים של הפעולה נמצאים באותו פרויקט, התפקיד של סוכן השירות של DLP API (roles/dlp.serviceAgent) בסוכן השירות מספיק. בעזרת ההרשאה הזו, אפשר:
- יצירת עבודת הבדיקה
- קריאת הקבצים בספריית הקלט
- כתיבת הקבצים שעברו הסרת פרטים מזהים בספריית הפלט
- כתיבת פרטי הטרנספורמציה בטבלה ב-BigQuery
המשאבים הרלוונטיים כוללים את משימת הבדיקה, תבניות לביטול הזיהוי, קטגוריית קלט, קטגוריית פלט וטבלה עם פרטי הטרנספורמציה.
אם אתם חייבים שהמשאבים יהיו בפרויקטים נפרדים, ודאו שלסוכן השירות של הפרויקט יש גם את התפקידים הבאים:
- התפקיד 'צפייה באובייקט אחסון' (
roles/storage.objectViewer) בקטגוריית הקלט או בפרויקט שמכיל אותה. - התפקיד 'יצירת אובייקטים של אחסון' (
roles/storage.objectCreator) בקטגוריית הפלט או בפרויקט שמכיל אותה. - תפקיד 'עריכת נתונים' ב-BigQuery (
roles/bigquery.dataEditor) בטבלה עם פרטי ההמרה או בפרויקט שמכיל אותה.
במאמר הקצאת תפקיד יחיד מוסבר איך מקצים תפקיד לסוכן השירות. אפשר גם לשלוט בגישה ברמות הבאות:
סקירה כללית על ממשקי API
כדי ליצור עותקים של תוכן שמאוחסן ב-Cloud Storage ללא פרטים מזהים, מגדירים עבודת בדיקה שמחפשת מידע אישי רגיש לפי הקריטריונים שאתם מציינים. לאחר מכן, במסגרת עבודת הבדיקה, צריך לספק הוראות להסרת פרטים מזהים באמצעות פעולת Deidentify.
אם רוצים לסרוק רק קבוצת משנה של הקבצים בדלי, אפשר להגביל את הקבצים שהעבודה סורקת. האפשרויות הנתמכות לעיבוד משרות עם הסרת פרטים מזהים הן סינון קבצים לפי סוג (FileType) וביטוי רגולרי (FileSet).
כשמפעילים את הפעולה Deidentify, כברירת מחדל, Sensitive Data Protection יוצרת עותקים שעברו הסרת פרטים מזהים (טרנספורמציה) של כל סוגי הקבצים הנתמכים שכלולים בסריקה. עם זאת, אפשר להגדיר את העבודה כך שתתבצע המרה רק על קבוצת משנה של סוגי הקבצים הנתמכים.
אופציונלי: יצירת תבניות לביטול הזיהוי
אם רוצים לשלוט באופן השינוי של הממצאים, צריך ליצור את התבניות הבאות. התבניות האלה מספקות הוראות לגבי טרנספורמציה של ממצאים בקבצים מובנים, בקבצים לא מובנים ובתמונות.
תבנית להסרת פרטים מזהים:
DeidentifyTemplateשמוגדרת כברירת מחדל ומשמשת לקבצים לא מובְנים, כמו קובצי טקסט חופשי. סוגDeidentifyTemplateהזה לא יכול להכיל אובייקטRecordTransformations, שנתמך רק בתוכן מובנה. אם התבנית הזו לא קיימת, Sensitive Data Protection משתמש בשיטהReplaceWithInfoTypeConfigכדי לשנות קבצים לא מובנים.תבנית מובנית להסרת פרטים מזהים:
DeidentifyTemplateשמשמשת לקבצים מובנים, כמו קובצי CSV. התוכן הזהDeidentifyTemplateיכול לכלולRecordTransformations. אם התבנית הזו לא קיימת, Sensitive Data Protection משתמשת בתבנית ברירת המחדל לביטול הזיהוי שיצרתם. אם גם זה לא קיים, Sensitive Data Protection משתמשת בשיטהReplaceWithInfoTypeConfigכדי לשנות קבצים מובְנים.תבנית להסתרת חלקים בתמונה:
DeidentifyTemplateלשימוש בתמונות. התבנית הזו צריכה להכיל אובייקטImageTransformations. אם התבנית הזו לא קיימת, Sensitive Data Protection מצנזר את כל הממצאים בתמונות באמצעות תיבה שחורה.
מידע נוסף על יצירת תבנית להסרת פרטים מזהים
יצירת משימת בדיקה עם פעולת הסרת פרטים מזהים
אובייקט DlpJob מספק הוראות לגבי מה לבדוק, אילו סוגי נתונים לסמן כרגישים ומה לעשות עם הממצאים.
כדי להסיר את הפרטים המזהים ממידע רגיש בספרייה ב-Cloud Storage, צריך להגדיר לפחות את הפרטים הבאים ב-DlpJob:
- אובייקט
StorageConfigשמציין את ספריית Cloud Storage לבדיקה. - אובייקט
InspectConfig, שמכיל את סוגי הנתונים שצריך לחפש והוראות נוספות לבדיקה לגבי אופן החיפוש של המידע האישי הרגיש. פעולה של
Deidentifyשמכילה את הפרטים הבאים:אובייקט
TransformationConfigשמציין תבניות שיצרתם להסרת פרטים מזהים מנתונים בקבצים מובנים ולא מובנים. אפשר גם לכלול הגדרה להשמטת מידע אישי רגיש מתמונות.אם לא כוללים אובייקט
TransformationConfig, Sensitive Data Protection מחליף את המידע האישי הרגיש בטקסט ב-infoType שלהם. בתמונות, המידע הרגיש מוסתר בתיבה שחורה.אובייקט
TransformationDetailsStorageConfig, שמציין טבלת BigQuery שבה Sensitive Data Protection צריך לאחסן פרטים על כל טרנספורמציה. בכל טרנספורמציה, הפרטים כוללים תיאור, קוד הצלחה או קוד שגיאה, פרטי שגיאה, מספר הבייטים שעברו טרנספורמציה, המיקום של התוכן שעבר טרנספורמציה ושם עבודת הבדיקה שבה בוצעה הטרנספורמציה על ידי Sensitive Data Protection. הטבלה הזו לא שומרת את התוכן עצמו אחרי הסרת הפרטים המזהים.
כשנתונים נכתבים לטבלה ב-BigQuery, החיוב והשימוש במכסת נפח האחסון חלים על הפרויקט שמכיל את טבלת היעד.
אחרי שהתוכן שהועתק עובר הסרת פרטים מזהים, מסתיים תהליך הסרת הפרטים המזהים. העבודה מכילה סיכום של מספר הפעמים שהוחלו ההמרות שצוינו, שאפשר לאחזר באמצעות השיטה projects.dlpJobs.get ב-DlpJob. האובייקט DlpJob שמוחזר כולל גם אובייקט DeidentifyDataSourceDetails וגם אובייקט InspectDataSourceDetails. האובייקטים האלה מכילים את התוצאות של פעולת Deidentify ואת משימת הבדיקה, בהתאמה.
אם כללתם אובייקט TransformationDetailsStorageConfig ב-DlpJob, תיווצר טבלה ב-BigQuery שמכילה מטא-נתונים על פרטי ההמרה. לכל טרנספורמציה שמתרחשת, Sensitive Data Protection כותב שורה אחת של מטא-נתונים לטבלה. מידע נוסף על תוכן הטבלה זמין במאמר הפניה לפרטי הטרנספורמציה.
דוגמאות לקוד
בדוגמאות הבאות נראה איך משתמשים ב-DLP API כדי ליצור עותקים של קבצים ב-Cloud Storage שבוצע בהם הסרת פרטים מזהים.
ה-method של ה-HTTP וכתובת ה-URL
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/dlpJobs
C#
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Go
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Java
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Node.js
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
PHP
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
מידע על התקנת ספריית הלקוח של Sensitive Data Protection והשימוש בה מופיע במאמר ספריות הלקוח של Sensitive Data Protection.
כדי לבצע אימות ב-Sensitive Data Protection, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
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: מזהה הפרויקט שבו רוצים לאחסן את עבודת הבדיקה. -
INPUT_DIRECTORY: ספריית Cloud Storage שרוצים לבדוק, לדוגמהgs://input-bucket/folder1/folder1a. אם כתובת ה-URL מסתיימת בלוכסן, לא מתבצע סריקה של ספריות משנה בתוךINPUT_DIRECTORY. -
OUTPUT_DIRECTORY: ספריית Cloud Storage שבה רוצים לאחסן את הקבצים שעברו הסרת פרטים מזהים. הספרייה הזו לא יכולה להיות באותה קטגוריה של Cloud Storage כמוINPUT_DIRECTORY. -
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: המזהה של הפרויקט שבו רוצים לאחסן את פרטי ההמרה. -
TRANSFORMATION_DETAILS_DATASET_ID: המזהה של מערך הנתונים ב-BigQuery שבו רוצים לאחסן את פרטי ההמרה. אם לא תציינו מזהה טבלה, המערכת תיצור מזהה באופן אוטומטי. -
TRANSFORMATION_DETAILS_TABLE_ID: המזהה של הטבלה ב-BigQuery שבה רוצים לאחסן את פרטי ההמרה.
שימו לב לאובייקטים הבאים:
-
inspectJob: אובייקט ההגדרה של המשימה (DlpJob). האובייקט הזה מכיל את ההגדרה של שלבי הבדיקה והסרת הפרטים המזהים. -
storageConfig: המיקום של התוכן לבדיקה (StorageConfig). בדוגמה הזו מצוינת קטגוריה של Cloud StorageCloudStorageOptions. -
inspectConfig: מידע על הנתונים הרגישים שרוצים לבדוק (InspectConfig). בדוגמה הזו מתבצעת בדיקה של תוכן שתואם ל-infoTypePERSON_NAMEהמובנה. -
actions: הפעולות שיש לבצע אחרי החלק של הבדיקה בעבודה (Action). -
deidentify: ציון הפעולה הזו אומר ל-Sensitive Data Protection להסיר פרטי זיהוי מהמידע האישי הרגיש התואם בהתאם להגדרה שצוינה בתוך (Deidentify). -
cloud_storage_output: מציינת את כתובת ה-URL של ספריית 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: מגביל את פעולת הסרת הפרטים המזהים רק לסוגי הקבצים שצוינו. אם לא מגדירים את השדה הזה, כל סוגי הקבצים הנתמכים שנכללים בפעולת הבדיקה נכללים גם בפעולת הסרת הפרטים המזהים. בדוגמה הזו, Sensitive Data Protection מסירה את הפרטים המזהים רק מקובצי תמונה, CSV וטקסט, גם אם הגדרתם אתDlpJobלבדיקה של כל סוגי הקבצים הנתמכים.
יצירת משימת בדיקה באמצעות API בארכיטקטורת REST
כדי ליצור את משימת הבדיקה (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. -
PATH_TO_JSON_FILE: הנתיב לקובץ ה-JSON שמכיל את תוכן הבקשה.
Sensitive Data Protection מחזירה את המזהה של DlpJobשנוצר לאחרונה, את הסטטוס שלו ותמונת מצב של הגדרת הבדיקה שהגדרתם.
{
"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. -
JOB_ID: המזהה של המשימה שהוחזר כשיוצרים אתDlpJob.
אם הפעולה הושלמה, תקבלו תגובה שדומה לזו:
{
"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.
- מידע נוסף על טרנספורמציות להסרת פרטי הזיהוי
- איך בודקים אם יש באחסון מידע אישי ורגיש