אוטומציה של סיווג נתונים שהועלו ל-Cloud Storage

במדריך הזה נסביר איך להטמיע מערכת אוטומטית להסגר ולסיווג נתונים באמצעות 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

אפשר להשתמש במחשבון עלויות כדי ליצור הערכת עלות על סמך השימוש החזוי.

לפני שמתחילים

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

מתן הרשאות לחשבונות שירות

השלב הראשון הוא לתת הרשאות לשני חשבונות שירות: חשבון השירות של פונקציות Cloud Run וסוכן השירות של מניעת אובדן נתונים בענן.

מתן הרשאות לחשבון השירות של App Engine שמוגדר כברירת מחדל

  1. במסוף Google Cloud , פותחים את הדף IAM & Admin ובוחרים את הפרויקט שיצרתם:

    כניסה לדף IAM

  2. מאתרים את חשבון השירות של App Engine. הפורמט של החשבון הזה הוא [PROJECT_ID]@appspot.gserviceaccount.com. מחליפים את [PROJECT_ID] במזהה הפרויקט.

  3. לוחצים על סמל העריכה לצד חשבון השירות.

  4. מוסיפים את התפקידים הבאים:

    • אדמין של DLP
    • סוכן שירות של DLP API
  5. לוחצים על Save.

מתן הרשאות לסוכן השירות של מניעת אובדן נתונים בענן

סוכן השירות של מניעת אובדן נתונים בענן נוצר בפעם הראשונה שנדרש.

  1. ב-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 במזהה הפרויקט.

  2. במסוף Google Cloud , פותחים את הדף IAM & Admin ובוחרים את הפרויקט שיצרתם:

    כניסה לדף IAM

  3. מסמנים את תיבת הסימון 'כולל תפקידים שניתנו על ידי Google'.

  4. מאתרים את סוכן השירות של מניעת אובדן נתונים בענן. הפורמט של החשבון הזה הוא service-[PROJECT_NUMBER]@dlp-api.iam.gserviceaccount.com. מחליפים את [PROJECT_NUMBER] במספר הפרויקט.

  5. לוחצים על סמל העריכה לצד חשבון השירות.

  6. מוסיפים את התפקיד Project > Viewer ולוחצים על Save.

פיתוח צינור עיבוד הנתונים של ההסגר והסיווג

בקטע הזה, בונים את פייפליין ההסגר והסיווג שמוצג בדיאגרמה הבאה.

תהליך העבודה של סגר וסיווג

המספרים בצינור הזה תואמים לשלבים הבאים:

  1. אתם מעלים קבצים ל-Cloud Storage.
  2. מפעילים פונקציה של Cloud Functions.
  3. השירות Sensitive Data Protection בודק ומסווג את הנתונים.
  4. הקובץ מועבר לקטגוריה המתאימה.

יצירת קטגוריות ב-Cloud Storage

פועלים לפי ההנחיות שמפורטות בהנחיות למתן שמות לקטגוריות ויוצרים שלוש קטגוריות עם שמות ייחודיים, שבהן תשתמשו לאורך המדריך הזה:

  • Bucket 1: מחליפים את [YOUR_QUARANTINE_BUCKET] בשם ייחודי.
  • קטגוריה 2: מחליפים את [YOUR_SENSITIVE_DATA_BUCKET] בשם ייחודי.
  • Bucket 3: מחליפים את [YOUR_NON_SENSITIVE_DATA_BUCKET] בשם ייחודי.

console

  1. במסוף Google Cloud , פותחים את Cloud Storage browser:

    כניסה ל-Cloud Storage

  2. לוחצים על Create bucket.

  3. בתיבת הטקסט Bucket name, מזינים את השם שבחרתם עבור [YOUR_QUARANTINE_BUCKET] ולוחצים על Create.

  4. חוזרים על הפעולה עבור הדליים [YOUR_SENSITIVE_DATA_BUCKET] ו-[YOUR_NON_SENSITIVE_DATA_BUCKET].

gcloud

  1. פותחים את Cloud Shell:

    כניסה ל-Cloud Shell

  2. יוצרים שלוש קטגוריות באמצעות הפקודות הבאות:

    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

  1. פותחים את הדף Pub/Sub Topics (נושאים ב-Pub/Sub):

    מעבר לנושאים ב-Pub/Sub

  2. לוחצים על יצירת נושא.

  3. מזינים את שם הנושא בתיבת הטקסט.

  4. מסמנים את תיבת הסימון הוספת מינוי שמוגדר כברירת מחדל.

  5. לוחצים על יצירת נושא.

gcloud

  1. פותחים את Cloud Shell:

    כניסה ל-Cloud Shell

  2. יוצרים נושא ומחליפים את [PUB/SUB_TOPIC] בשם לבחירתכם:

    gcloud pubsub topics create [PUB/SUB_TOPIC]
  3. יוצרים מינוי, ומחליפים את [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

  1. פותחים את הדף Cloud Run functions Overview:

    כניסה לדף Cloud Run functions

  2. בוחרים את הפרויקט שבו הפעלתם פונקציות Cloud Run.

  3. לוחצים על יצירת פונקציה.

  4. בתיבה שם הפונקציה, מחליפים את שם ברירת המחדל ב-create_DLP_job.

  5. בשדה Trigger (טריגר), בוחרים באפשרות Cloud Storage.

  6. בשדה סוג האירוע, בוחרים באפשרות סיום/יצירה.

  7. בשדה Bucket, לוחצים על browse, בוחרים את קטגוריית ההסגר על ידי סימון שלה ברשימה הנפתחת ואז לוחצים על Select.

  8. לוחצים על שמירה

  9. לחצו על Next.

  10. בקטע Runtime (זמן ריצה), בוחרים באפשרות Python 3.7.

  11. בקטע קוד מקור, מסמנים את התיבה עורך בתוך השורה.

  12. מחליפים את הטקסט בתיבה 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 שיצרתם קודם.
  13. בתיבת הטקסט נקודת כניסה, מחליפים את טקסט ברירת המחדל בטקסט הבא: create_DLP_job.

  14. מחליפים את הטקסט בתיבת הטקסט requirements.txt בתוכן של הקובץ הבא:https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/requirements.txt.

  15. לוחצים על פריסה.

    סימן וי ירוק לצד הפונקציה מציין שהפריסה הצליחה.

    פריסה מוצלחת

gcloud

  1. פותחים סשן של Cloud Shell ומשכפלים את מאגר GitHub שמכיל את הקוד וכמה קבצים של נתונים לדוגמה:

    פתיחה ב-Cloud Shell

  2. מעבירים את הספרייה לתיקייה שאליה בוצע שיבוט של המאגר:

    cd ~dlp-cloud-functions-tutorials/gcs-dlp-classification-python/
  3. מבצעים את ההחלפות הבאות בקובץ 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 שיצרתם קודם.
  4. פורסים את הפונקציה ומחליפים את [YOUR_QUARANTINE_BUCKET] בשם הקטגוריה שלכם:

    gcloud functions deploy create_DLP_job --runtime python37 \
        --trigger-resource [YOUR_QUARANTINE_BUCKET] \
        --trigger-event google.storage.object.finalize
    
  5. מוודאים שהפונקציה נפרסה בהצלחה:

    gcloud functions describe create_DLP_job

    פריסה מוצלחת מסומנת בסטטוס 'מוכן' שדומה לזה:

    status:  READY
    timeout:  60s
    

אחרי שהפונקציה של Cloud Functions נפרסת בהצלחה, ממשיכים לקטע הבא כדי ליצור את הפונקציה השנייה של Cloud Functions.

יצירת הפונקציה השנייה

console

  1. פותחים את הדף Cloud Run functions Overview:

    כניסה לדף הסקירה הכללית של Cloud Run functions

  2. בוחרים את הפרויקט שבו הפעלתם פונקציות Cloud Run.

  3. לוחצים על יצירת פונקציה.

  4. בתיבה שם הפונקציה, מחליפים את שם ברירת המחדל ב-resolve_DLP.

  5. בשדה Trigger, בוחרים באפשרות Pub/Sub.

  6. בשדה Select a Cloud Pub/Sub Topic, מחפשים את נושא ה-Pub/Sub שיצרתם קודם.

  7. לוחצים על שמירה.

  8. לוחצים על הבא.

  9. בקטע Runtime (זמן ריצה), בוחרים באפשרות Python 3.7.

  10. בקטע קוד מקור, בוחרים באפשרות עורך מוטבע.

  11. בתיבת הטקסט Entry point (נקודת כניסה), מחליפים את טקסט ברירת המחדל ב-resolve_DLP.

  12. מחליפים את הטקסט בתיבה 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 שיצרתם קודם.
  13. לוחצים על פריסה.

    סימן וי ירוק לצד הפונקציה מציין שהפריסה הצליחה.

    פריסה מוצלחת

gcloud

  1. פותחים (או פותחים מחדש) סשן של Cloud Shell ומשכפלים את מאגר GitHub שמכיל את הקוד וכמה קבצים של נתוני דוגמה:

    פתיחה ב-Cloud Shell

  2. עוברים לספרייה עם קוד Python:

    cd gcs-dlp-classification-python/

  3. מבצעים את ההחלפות הבאות בקובץ 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 שיצרתם קודם.
  4. פורסים את הפונקציה ומחליפים את [PUB/SUB_TOPIC] בנושא Pub/Sub שלכם:

    gcloud functions deploy resolve_DLP --runtime python37 --trigger-topic [PUB/SUB_TOPIC]
  5. מוודאים שהפונקציה נפרסה בהצלחה:

    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'.

  1. אם עדיין לא שיכפלתם את המאגר, פותחים את Cloud Shell ומשכפלים את מאגר GitHub שמכיל את הקוד וכמה קובצי נתונים לדוגמה:

    פתיחה ב-Cloud Shell

  2. משנים את התיקיות לקבצי הנתונים לדוגמה:

    cd ~/dlp-cloud-functions-tutorials/sample_data/
  3. מעתיקים את קובצי הנתונים לדוגמה לקטגוריית ההסגר באמצעות הפקודה cp, ומחליפים את [YOUR_QUARANTINE_BUCKET] בשם של קטגוריית ההסגר:

    gcloud storage cp * gs://[YOUR_QUARANTINE_BUCKET]/

    Sensitive Data Protection בודק ומסווג כל קובץ שמועלה לקטגוריית ההסגר, ומעביר אותו לקטגוריית היעד המתאימה על סמך הסיווג שלו.

  4. במסוף Cloud Storage, פותחים את הדף Storage Browser:

    כניסה לדף Cloud Storage browser

  5. בוחרים אחת מקטגוריות היעד שיצרתם קודם לכן ובודקים את הקבצים שהועלו. כדאי גם לבדוק את הקטגוריות האחרות שיצרתם.

הסרת המשאבים

אחרי שמסיימים את המדריך, אפשר למחוק את המשאבים שנוצרו, כדי שהם יפסיקו להשתמש במכסה ולצבור חיובים. בסעיפים הבאים מוסבר איך למחוק או להשבית את המשאבים האלו.

מחיקת הפרויקט

  1. במסוף Google Cloud , נכנסים לדף Manage resources.

    כניסה לדף Manage resources

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.

המאמרים הבאים