במדריך הזה נסביר איך להטמיע מערכת אוטומטית להסגר ולסיווג נתונים באמצעות Cloud Storage ומוצרים אחרים של Google Cloud. ההנחה במדריך היא שאתם מכירים אתGoogle Cloud ואת התכנות הבסיסי של מעטפת הפקודות.
בכל ארגון, האחראים להגנה על מידע כמוך מתמודדים עם כמות הולכת וגדלה של נתונים, שצריך להגן עליהם ולטפל בהם בצורה מתאימה. הסגר והסיווג של הנתונים האלה יכולים להיות מורכבים ולגזול זמן רב, במיוחד אם מדובר במאות או אלפי קבצים ביום.
מה אם הייתם יכולים לקחת כל קובץ, להעלות אותו למיקום בהסגר, ולסווג אותו באופן אוטומטי ולהעביר אותו למיקום המתאים על סמך תוצאת הסיווג? במדריך הזה נסביר איך להטמיע מערכת כזו באמצעות פונקציות Cloud Run, Cloud Storage ו-Sensitive Data Protection.
מטרות
- יוצרים קטגוריות ב-Cloud Storage לשימוש כחלק מצינור ההסגר והסיווג.
- יוצרים נושא ומינוי ב-Pub/Sub כדי לקבל התראה כשהעיבוד של הקובץ מסתיים.
- יוצרים פונקציה פשוטה ב-Cloud Functions שמפעילה את DLP API כשמעלים קבצים.
- מעלים כמה קבצים לדוגמה לקטגוריית ההסגר כדי להפעיל את Cloud Function. הפונקציה משתמשת ב-DLP API כדי לבדוק ולסווג את הקבצים ולהעביר אותם לקטגוריית האחסון המתאימה.
עלויות
במדריך הזה נעשה שימוש ברכיבים Google Cloud שכרוך בהם תשלום, כולל:
- Cloud Storage
- פונקציות Cloud Run
- Sensitive Data Protection
אפשר להשתמש במחשבון עלויות כדי ליצור הערכת עלות על סמך השימוש החזוי.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Run functions, Cloud Storage,Cloud Build Cloud Build, and Cloud Data Loss Prevention APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Run functions, Cloud Storage,Cloud Build Cloud Build, and Cloud Data Loss Prevention APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
מתן הרשאות לחשבונות שירות
השלב הראשון הוא לתת הרשאות לשני חשבונות שירות: חשבון השירות של פונקציות Cloud Run וסוכן השירות של מניעת אובדן נתונים בענן.
מתן הרשאות לחשבון השירות של App Engine שמוגדר כברירת מחדל
במסוף Google Cloud , פותחים את הדף IAM & Admin ובוחרים את הפרויקט שיצרתם:
מאתרים את חשבון השירות של App Engine. הפורמט של החשבון הזה הוא
[PROJECT_ID]@appspot.gserviceaccount.com. מחליפים את[PROJECT_ID]במזהה הפרויקט.לוחצים על סמל העריכה edit לצד חשבון השירות.
מוסיפים את התפקידים הבאים:
- אדמין של DLP
- סוכן שירות של DLP API
לוחצים על Save.
מתן הרשאות לסוכן השירות של מניעת אובדן נתונים בענן
סוכן השירות של מניעת אובדן נתונים בענן נוצר בפעם הראשונה שנדרש.
ב-Cloud Shell, יוצרים את סוכן השירות של מניעת אובדן נתונים בענן על ידי ביצוע קריאה אל
InspectContent:curl --request POST
"https://dlp.googleapis.com/v2/projects/PROJECT_ID/locations/us-central1/content:inspect"
--header "X-Goog-User-Project: PROJECT_ID"
--header "Authorization: Bearer $(gcloud auth print-access-token)"
--header 'Accept: application/json'
--header 'Content-Type: application/json'
--data '{"item":{"value":"google@google.com"}}'
--compressedמחליפים את
PROJECT_IDבמזהה הפרויקט.במסוף Google Cloud , פותחים את הדף IAM & Admin ובוחרים את הפרויקט שיצרתם:
מסמנים את תיבת הסימון 'כולל תפקידים שניתנו על ידי Google'.
מאתרים את סוכן השירות של מניעת אובדן נתונים בענן. הפורמט של החשבון הזה הוא
service-[PROJECT_NUMBER]@dlp-api.iam.gserviceaccount.com. מחליפים את[PROJECT_NUMBER]במספר הפרויקט.לוחצים על סמל העריכה edit לצד חשבון השירות.
מוסיפים את התפקיד Project > Viewer ולוחצים על Save.
פיתוח צינור עיבוד הנתונים של ההסגר והסיווג
בקטע הזה, בונים את פייפליין ההסגר והסיווג שמוצג בדיאגרמה הבאה.
המספרים בצינור הזה תואמים לשלבים הבאים:
- אתם מעלים קבצים ל-Cloud Storage.
- מפעילים פונקציה של Cloud Functions.
- השירות Sensitive Data Protection בודק ומסווג את הנתונים.
- הקובץ מועבר לקטגוריה המתאימה.
יצירת קטגוריות ב-Cloud Storage
פועלים לפי ההנחיות שמפורטות בהנחיות למתן שמות לקטגוריות ויוצרים שלוש קטגוריות עם שמות ייחודיים, שבהן תשתמשו לאורך המדריך הזה:
- Bucket 1: מחליפים את
[YOUR_QUARANTINE_BUCKET]בשם ייחודי. - קטגוריה 2: מחליפים את
[YOUR_SENSITIVE_DATA_BUCKET]בשם ייחודי. - Bucket 3: מחליפים את
[YOUR_NON_SENSITIVE_DATA_BUCKET]בשם ייחודי.
console
במסוף Google Cloud , פותחים את Cloud Storage browser:
לוחצים על Create bucket.
בתיבת הטקסט Bucket name, מזינים את השם שבחרתם עבור
[YOUR_QUARANTINE_BUCKET]ולוחצים על Create.חוזרים על הפעולה עבור הדליים
[YOUR_SENSITIVE_DATA_BUCKET]ו-[YOUR_NON_SENSITIVE_DATA_BUCKET].
gcloud
פותחים את Cloud Shell:
יוצרים שלוש קטגוריות באמצעות הפקודות הבאות:
gcloud storage buckets create gs://[YOUR_QUARANTINE_BUCKET] gcloud storage buckets create gs://[YOUR_SENSITIVE_DATA_BUCKET] gcloud storage buckets create gs://[YOUR_NON_SENSITIVE_DATA_BUCKET]
יצירת נושא ומינוי ב-Pub/Sub
console
פותחים את הדף Pub/Sub Topics (נושאים ב-Pub/Sub):
לוחצים על יצירת נושא.
מזינים את שם הנושא בתיבת הטקסט.
מסמנים את תיבת הסימון הוספת מינוי שמוגדר כברירת מחדל.
לוחצים על יצירת נושא.
gcloud
פותחים את Cloud Shell:
יוצרים נושא ומחליפים את
[PUB/SUB_TOPIC]בשם לבחירתכם:gcloud pubsub topics create [PUB/SUB_TOPIC]
יוצרים מינוי, ומחליפים את
[PUB/SUB_SUBSCRIPTION]בשם לבחירתכם:gcloud pubsub subscriptions create [PUB/SUB_SUBSCRIPTION] --topic [PUB/SUB_TOPIC]
יצירת פונקציות Cloud Run
בקטע הזה מוסבר איך לפרוס את סקריפט Python שמכיל את שתי פונקציות Cloud Run הבאות:
- פונקציה שמופעלת כשמעלים אובייקט ל-Cloud Storage.
- פונקציה שמופעלת כשמתקבלת הודעה בתור של Pub/Sub.
סקריפט ה-Python שבו משתמשים כדי להשלים את המדריך הזה נמצא במאגר GitHub. כדי ליצור את הפונקציה הראשונה ב-Cloud Functions, צריך להפעיל את ממשקי ה-API הנכונים.
כדי להפעיל את ממשקי ה-API:
- אם אתם עובדים במסוף, כשלוחצים על Create function (יצירת פונקציה), מוצג מדריך להפעלת ממשקי ה-API שצריך להשתמש בהם ב-Cloud Functions.
- אם אתם עובדים ב-CLI של gcloud, אתם צריכים להפעיל באופן ידני את ממשקי ה-API הבאים:
- Artifact Registry API
- Eventarc API
- Cloud Run Admin API
יצירת הפונקציה הראשונה
console
פותחים את הדף Cloud Run functions Overview:
בוחרים את הפרויקט שבו הפעלתם פונקציות Cloud Run.
לוחצים על יצירת פונקציה.
בתיבה שם הפונקציה, מחליפים את שם ברירת המחדל ב-
create_DLP_job.בשדה Trigger (טריגר), בוחרים באפשרות Cloud Storage.
בשדה סוג האירוע, בוחרים באפשרות סיום/יצירה.
בשדה Bucket, לוחצים על browse, בוחרים את קטגוריית ההסגר על ידי סימון שלה ברשימה הנפתחת ואז לוחצים על Select.
לוחצים על שמירה
לחצו על Next.
בקטע Runtime (זמן ריצה), בוחרים באפשרות Python 3.7.
בקטע קוד מקור, מסמנים את התיבה עורך בתוך השורה.
מחליפים את הטקסט בתיבה main.py בתוכן של הקובץ הבא
https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/main.py.מחליפים את מה שכתוב בשדות הבאים:
-
[PROJECT_ID_DLP_JOB & TOPIC]: מזהה הפרויקט שמארח את פונקציית Cloud Run ואת נושא ה-Pub/Sub. -
[YOUR_QUARANTINE_BUCKET]השם של הקטגוריה שאליה תעלו את הקבצים לעיבוד . -
[YOUR_SENSITIVE_DATA_BUCKET]: שם הקטגוריה שאליה תעבירו את הקבצים הרגישים. -
[YOUR_NON_SENSITIVE_DATA_BUCKET]: השם של הקטגוריה שאליה תעלו את הקבצים לעיבוד. -
[PUB/SUB_TOPIC]: השם של נושא ה-Pub/Sub שיצרתם קודם.
-
בתיבת הטקסט נקודת כניסה, מחליפים את טקסט ברירת המחדל בטקסט הבא:
create_DLP_job.מחליפים את הטקסט בתיבת הטקסט requirements.txt בתוכן של הקובץ הבא:
https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/requirements.txt.לוחצים על פריסה.
סימן וי ירוק לצד הפונקציה מציין שהפריסה הצליחה.
gcloud
פותחים סשן של Cloud Shell ומשכפלים את מאגר GitHub שמכיל את הקוד וכמה קבצים של נתונים לדוגמה:
מעבירים את הספרייה לתיקייה שאליה בוצע שיבוט של המאגר:
cd ~dlp-cloud-functions-tutorials/gcs-dlp-classification-python/
מבצעים את ההחלפות הבאות בקובץ main.py
-
[PROJECT_ID_DLP_JOB & TOPIC]: מזהה הפרויקט שמארח את פונקציית Cloud Run ואת נושא ה-Pub/Sub. -
[YOUR_QUARANTINE_BUCKET]: השם של הקטגוריה שאליה תעלו את הקבצים לעיבוד . -
[YOUR_SENSITIVE_DATA_BUCKET]: שם הקטגוריה שאליה תעבירו את הקבצים הרגישים. -
[YOUR_NON_SENSITIVE_DATA_BUCKET]: השם של הקטגוריה שאליה תעלו את הקבצים לעיבוד. -
[PUB/SUB_TOPIC: השם של נושא ה-Pub/Sub שיצרתם קודם.
-
פורסים את הפונקציה ומחליפים את
[YOUR_QUARANTINE_BUCKET]בשם הקטגוריה שלכם:gcloud functions deploy create_DLP_job --runtime python37 \ --trigger-resource [YOUR_QUARANTINE_BUCKET] \ --trigger-event google.storage.object.finalizeמוודאים שהפונקציה נפרסה בהצלחה:
gcloud functions describe create_DLP_job
פריסה מוצלחת מסומנת בסטטוס 'מוכן' שדומה לזה:
status: READY timeout: 60s
אחרי שהפונקציה של Cloud Functions נפרסת בהצלחה, ממשיכים לקטע הבא כדי ליצור את הפונקציה השנייה של Cloud Functions.
יצירת הפונקציה השנייה
console
פותחים את הדף Cloud Run functions Overview:
בוחרים את הפרויקט שבו הפעלתם פונקציות Cloud Run.
לוחצים על יצירת פונקציה.
בתיבה שם הפונקציה, מחליפים את שם ברירת המחדל ב-
resolve_DLP.בשדה Trigger, בוחרים באפשרות Pub/Sub.
בשדה Select a Cloud Pub/Sub Topic, מחפשים את נושא ה-Pub/Sub שיצרתם קודם.
לוחצים על שמירה.
לוחצים על הבא.
בקטע Runtime (זמן ריצה), בוחרים באפשרות Python 3.7.
בקטע קוד מקור, בוחרים באפשרות עורך מוטבע.
בתיבת הטקסט Entry point (נקודת כניסה), מחליפים את טקסט ברירת המחדל ב-
resolve_DLP.מחליפים את הטקסט בתיבה main.py בתוכן של הקובץ הבא: https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/main.py. מחליפים את הפרטים הבאים
-
[PROJECT_ID_DLP_JOB & TOPIC]: מזהה הפרויקט שמארח את פונקציית Cloud Run ואת נושא ה-Pub/Sub. -
[YOUR_QUARANTINE_BUCKET]: השם של הקטגוריה שאליה תעלו את הקבצים לעיבוד . -
[YOUR_SENSITIVE_DATA_BUCKET]: שם הקטגוריה שאליה תעבירו את הקבצים הרגישים. -
[YOUR_NON_SENSITIVE_DATA_BUCKET]: השם של הקטגוריה שאליה תעלו את הקבצים לעיבוד. -
[PUB/SUB_TOPIC: השם של נושא ה-Pub/Sub שיצרתם קודם.
-
לוחצים על פריסה.
סימן וי ירוק לצד הפונקציה מציין שהפריסה הצליחה.
gcloud
פותחים (או פותחים מחדש) סשן של Cloud Shell ומשכפלים את מאגר GitHub שמכיל את הקוד וכמה קבצים של נתוני דוגמה:
עוברים לספרייה עם קוד Python:
cd gcs-dlp-classification-python/
מבצעים את ההחלפות הבאות בקובץ
main.py:-
[PROJECT_ID_DLP_JOB & TOPIC]: מזהה הפרויקט שמארח את פונקציית Cloud Run ואת נושא ה-Pub/Sub. -
[YOUR_QUARANTINE_BUCKET]: השם של הקטגוריה שאליה תעלו את הקבצים לעיבוד. -
[YOUR_SENSITIVE_DATA_BUCKET]: שם הקטגוריה שאליה תעבירו את הקבצים הרגישים. -
[YOUR_NON_SENSITIVE_DATA_BUCKET]: השם של הקטגוריה שאליה תעלו את הקבצים לעיבוד. -
[PUB/SUB_TOPIC: השם של נושא ה-Pub/Sub שיצרתם קודם.
-
פורסים את הפונקציה ומחליפים את
[PUB/SUB_TOPIC]בנושא Pub/Sub שלכם:gcloud functions deploy resolve_DLP --runtime python37 --trigger-topic [PUB/SUB_TOPIC]
מוודאים שהפונקציה נפרסה בהצלחה:
gcloud functions describe resolve_DLP
פריסה מוצלחת מסומנת בסטטוס 'מוכן' שדומה לזה:
status: READY timeout: 60s
אחרי שהפונקציה של Cloud Functions נפרסת בהצלחה, ממשיכים לקטע הבא.
העלאת קבצים לדוגמה לקטגוריית ההסגר
מאגר GitHub שמשויך למאמר הזה כולל קבצים עם נתונים לדוגמה. התיקייה מכילה קבצים עם מידע אישי רגיש וקבצים עם מידע לא רגיש. מידע אישי רגיש מסווג כנתונים שמכילים ערך אחד או יותר מהערכים הבאים: INFO_TYPES
US_SOCIAL_SECURITY_NUMBER EMAIL_ADDRESS PERSON_NAME LOCATION PHONE_NUMBER
סוגי הנתונים שמשמשים לסיווג קובצי הדגימה מוגדרים בקבוע INFO_TYPES בקובץ main.py, שמוגדר בהתחלה כ-'FIRST_NAME,PHONE_NUMBER,EMAIL_ADDRESS,US_SOCIAL_SECURITY_NUMBER'.
אם עדיין לא שיכפלתם את המאגר, פותחים את Cloud Shell ומשכפלים את מאגר GitHub שמכיל את הקוד וכמה קובצי נתונים לדוגמה:
משנים את התיקיות לקבצי הנתונים לדוגמה:
cd ~/dlp-cloud-functions-tutorials/sample_data/
מעתיקים את קובצי הנתונים לדוגמה לקטגוריית ההסגר באמצעות הפקודה
cp, ומחליפים את[YOUR_QUARANTINE_BUCKET]בשם של קטגוריית ההסגר:gcloud storage cp * gs://[YOUR_QUARANTINE_BUCKET]/
Sensitive Data Protection בודק ומסווג כל קובץ שמועלה לקטגוריית ההסגר, ומעביר אותו לקטגוריית היעד המתאימה על סמך הסיווג שלו.
במסוף Cloud Storage, פותחים את הדף Storage Browser:
בוחרים אחת מקטגוריות היעד שיצרתם קודם לכן ובודקים את הקבצים שהועלו. כדאי גם לבדוק את הקטגוריות האחרות שיצרתם.
הסרת המשאבים
אחרי שמסיימים את המדריך, אפשר למחוק את המשאבים שנוצרו, כדי שהם יפסיקו להשתמש במכסה ולצבור חיובים. בסעיפים הבאים מוסבר איך למחוק או להשבית את המשאבים האלו.
מחיקת הפרויקט
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
המאמרים הבאים
- כדאי לנסות להגדיר ערכים שונים של סוגי נתונים תקינים עבור
INFO_TYPES. - מידע נוסף על בדיקת אחסון ומסדי נתונים לזיהוי מידע אישי רגיש באמצעות Sensitive Data Protection
- מידע נוסף על פונקציות Cloud Run
- כדאי להעמיק את הקריאה ולהכיר דוגמאות לארכיטקטורות, תרשימים ושיטות מומלצות בנושאי Google Cloud. כל אלה זמינים במרכז הארכיטקטורה של Cloud.