הפעלת התראות בקשר לצ'אטים בזמן אמת

סקירה כללית

ב-Security Command Center מוצגות התראות בזמן אמת על ממצאים בGoogle Cloud מסוף. במדריך הזה מוסבר איך להשתמש ב Google Cloud שירותים ובממשקי API של צד שלישי כדי להרחיב את הפונקציונליות הזו ולקבל התראות כמעט בזמן אמת ב-Slack. אחרי שתשלימו את המדריך, תקבלו התראות על ממצאים חדשים בשירותים שהוגדרו של צד שלישי, בלי שתצטרכו להיכנס למסוף Google Cloud , וכך תוכלו לתעדף במהירות את הטיפול בפגיעויות ובאיומים. מידע נוסף על סוגים שונים של נקודות חולשה ואיומים ב-Security Command Center

טופולוגיה

במדריך הזה אנחנו יוצרים את ההגדרה שמוצגת בתרשים הבא.

תהליך העבודה של התראות כמעט בזמן אמת (לחצו להגדלה)
תהליך עבודה של התראות כמעט בזמן אמת ב-Security Command Center (לחצו כדי להגדיל)

מטרות

במדריך הזה תלמדו:

  1. מגדירים נושא Pub/Sub.
  2. הגדרת Slack.
  3. כתיבת קוד בפונקציות Cloud Run.
  4. הגדרת פונקציות Pub/Sub ו-Cloud Run לשליחת התראות ל-Slack בכל פעם שממצא חדש ברמת חומרה גבוהה או קריטית נכתב ב-Security Command Center.
  5. פתרון בעיות בהתראות.

עלויות

במדריך הזה נעשה שימוש ברכיבים של Google Cloudשחלים עליהם חיובים, כולל:

  • Pub/Sub
  • פונקציות Cloud Run
  • Cloud Build

כדי ליצור הערכת עלויות בהתאם לשימוש החזוי, אתם יכולים להיעזר במחשבון התמחור.

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

כדי להשלים את המדריך הזה, אתם צריכים את התפקידים הבאים בניהול זהויות והרשאות גישה (IAM):

  • אדמין ארגוני (roles/resourcemanager.organizationAdmin)
  • אדמין של Security Center‏ (roles/securitycenter.admin)
  • Security Admin (roles/iam.securityAdmin)
  • תפקיד עם ההרשאה serviceusage.services.use, כמו בעלים (roles/owner), עריכה (roles/editor) או תפקיד בהתאמה אישית
  • יצירת חשבונות שירות (roles/iam.serviceAccountCreator)
  • Pub/Sub Editor (roles/pubsub.editor)
  • Billing Account Administrator (roles/billing.admin)

אפשר להעניק את תפקידי ה-IAM של Security Command Center ברמת הארגון, התיקייה או הפרויקט. היכולת שלכם להציג, לערוך, ליצור או לעדכן ממצאים, נכסים ומקורות אבטחה תלויה ברמת הגישה שניתנה לכם. מידע נוסף על תפקידים ב-Security Command Center זמין במאמר בקרת גישה.

הגדרת פרויקט

כדי ליצור או לבחור פרויקט:

  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 Build API.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  5. התקינו את ה-CLI של Google Cloud.

  6. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  7. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  8. 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

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

  10. Enable the Cloud Build API.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  11. התקינו את ה-CLI של Google Cloud.

  12. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  13. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init

זמן משוער: הגדרה ובדיקה של התראות לשירות יחיד נמשכות כשעה.

הגדרה של נושא Pub/Sub

‫Pub/Sub הוא שירות להעברת הודעות בזמן אמת שמאפשר לשלוח ולקבל הודעות בין אפליקציות עצמאיות. מידע נוסף על Pub/Sub

בקטע הזה מוסבר איך להגדיר את Security Command Center לפרסום ממצאים בנושא Pub/Sub.

כדי להגדיר נושא ב-Pub/Sub ולהירשם אליו:

  1. מציינים את הפרויקט ב- Google Cloud במשתנה סביבה.

    export PROJECT_ID=PROJECT_ID
    

    מחליפים את PROJECT_ID במזהה הפרויקט.

  2. מציינים את הארגון Google Cloud במשתנה סביבה.

    export ORG_ID=ORG_ID
    

    מחליפים את ORG_ID במזהה הארגון.

  3. מגדירים את מזהה הפרויקט לפקודות gcloud.

    gcloud config set project PROJECT_ID
    
  4. יוצרים את נושא ה-Pub/Sub שבו מתפרסמות ההתראות.

    gcloud pubsub topics create scc-critical-and-high-severity-findings-topic
    
  5. מציינים את הנושא במשתנה סביבה.

    export TOPIC=projects/$PROJECT_ID/topics/scc-critical-and-high-severity-findings-topic
    
  6. יוצרים את המינוי ששולח התראות לפונקציות Cloud Run כדי לשלוח הודעה בצ'אט כשמתפרסמות הודעות בנושא.

    gcloud pubsub subscriptions create scc-critical-and-high-severity-findings-sub \
      --topic scc-critical-and-high-severity-findings-topic
    
  7. מגדירים את Security Command Center לפרסום התראות בנושא. אפשר להשתמש בכל מסנן שתואם ל-ListFindings API.

    המסנן הבא מפרסם התראות על ממצאים פעילים ברמת חומרה גבוהה וקריטית במיקום global. מידע נוסף על סינון הממצאים

     gcloud scc notifications create scc-critical-high-severity \
         --pubsub-topic=$TOPIC \
         --organization=$ORG_ID \
         --location=global \
         --filter '(severity="HIGH" OR severity="CRITICAL") AND state="ACTIVE"'
    

לאחר מכן, יוצרים או מגדירים את אפליקציית הצ'אט לקבלת התראות מ-Pub/Sub.

הגדרה של אפליקציית העברת הודעות

בקטע הזה מוסבר איך להשתמש ב-Pub/Sub ובפונקציות Cloud Run או בפונקציות Cloud Run (דור ראשון) כדי להפעיל התראות כמעט בזמן אמת ב-Slack.

כדי לשלוח התראות לערוץ Slack, מבצעים את הפעולות הבאות:

  • יוצרים אפליקציית Slack חדשה עם הרשאות מספיקות לפרסום הודעות בערוץ ציבורי ב-Slack.
  • יוצרים ופורסים פונקציית Cloud Run שמפרסמת הודעות בצ'אט ב-Slack כשמתקבלות התראות מ-Pub/Sub.

יצירת אפליקציה חדשה ל-Slack

בקטע הזה יוצרים אפליקציית Slack חדשה כדי לקבל התראות.

  1. עוברים אל Slack API apps (אפליקציות של Slack API). הדף ייפתח בכרטיסייה חדשה.
  2. נכנסים לחשבון או יוצרים חשבון.

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

  4. מגדירים את שם האפליקציה כ-SCC Finding Notifier.

  5. בוחרים את סביבת העבודה של Slack לפיתוח שבה רוצים שבוט Slack יפרסם הודעות, ואז לוחצים על יצירת אפליקציה.

  6. בחלונית הניווט, בוחרים באפשרות OAuth & Permissions (הרשאות ו-OAuth).

  7. עוברים לקטע Scopes (היקפים). ההיקפים מחולקים לשתי קטגוריות:

    • היקפי טוקן של בוט
    • היקפי ההרשאות של אסימון משתמש
  8. לתרגיל הזה, לא צריך להוסיף היקף של טוקן משתמש. בקטע Bot Token Scopes (היקפי הרשאות של טוקן לבוט), לוחצים על Add an OAuth Scope (הוספת היקף הרשאות של OAuth) ומזינים:

    • chat:write
    • chat:write.public
  9. עוברים לחלק העליון של הדף OAuth & Permissions (הרשאות ו-OAuth) ולוחצים על Install App to Workspace (התקנת האפליקציה ב-Workspace).

  10. בתיבת הדו-שיח לאישור, לוחצים על אישור.

  11. מעתיפים את טוקן הגישה ל-OAuth של משתמש הבוט לשימוש בפונקציה של Cloud Functions.

בשלב הבא, פורסים פונקציה של Cloud Run כדי לשלוח התראות לקבוצה ב-Slack.

יצירת פונקציית Cloud Run של Slack

בקטע הזה פורסים פונקציה לשליחת התראות לחשבון Slack. דוגמת הקוד בקטע הזה כתובה ב-Python, אבל אפשר להשתמש בכל שפה שנתמכת על ידי פונקציות Cloud Run.

  1. במסוף Google Cloud , נכנסים לדף Services של Cloud Run functions.

    כניסה לדף Services

  2. בוחרים את מזהה הפרויקט שמכיל את נושא ה-Pub/Sub.

  3. לוחצים על כתיבת פונקציה וממלאים את השדות:

    1. בשדה Service name (שם השירות), מזינים slack-chat-high-and-critical-findings.
    2. בשדה Region, בוחרים את האזור שבו רוצים לאחסן את השירות.
    3. בשדה Runtime, בוחרים את גרסת Python שבה רוצים להשתמש כדי להריץ את הפונקציה.
  4. לוחצים על Add trigger ובוחרים באפשרות Pub/Sub trigger.

  5. מזינים את הפרטים של נושא Pub/Sub שיצרתם בקטע הגדרה של נושא Pub/Sub ולוחצים על שמירת הטריגר.

  6. לוחצים על יצירה. פרטי השירות מוצגים.

  7. בחלונית מקור שבכרטיסייה מקור, לוחצים על requirements.txt.

  8. בעורך הקוד, מוסיפים את התגים requests ו-functions-framework==3.*:

    requests
    functions-framework==3.*
    
  9. בחלונית Source, לוחצים על main.py.

  10. בעורך הקוד, מחליפים את הקוד בקוד הבא:

    import base64
    import json
    import requests
    import functions_framework
    
    TOKEN = "BOT_ACCESS_TOKEN"
    
    @functions_framework.cloud_event
    def send_slack_chat_notification(cloud_event):
    
        pubsub_message = base64.b64decode(cloud_event.data["message"]["data"]).decode('utf-8').strip()
        message_json = json.loads(pubsub_message)
    
        finding = message_json['finding']
    
        requests.post("https://slack.com/api/chat.postMessage", data={
            "token": TOKEN,
            "channel": "#SLACK_CHANNEL_NAME",
            "text": f"A high severity finding {finding['category']} was detected."
        })
    

    מחליפים את מה שכתוב בשדות הבאים:

    • BOT_ACCESS_TOKEN: טוקן הגישה ל-OAuth של משתמש הבוט שיצרתם באמצעות אפליקציית Slack.
    • SLACK_CHANNEL_NAME: ערוץ Slack שאליו רוצים לשלוח את ההתראות.
  11. בשדה Function entry point (נקודת הכניסה של הפונקציה), מזינים את שם הפונקציה בדוגמת הקוד: send_slack_chat_notification.

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

אם השלבים הקודמים הושלמו ללא שגיאות, ההגדרה הושלמה ותתחילו לקבל התראות. חשוב לזכור:

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

כדי לשנות את תהליך העבודה של ההתראות, אפשר לבצע את הפעולות הבאות:

  • כדי לשנות את הנמענים, צריך לעדכן את פונקציית Cloud Run.
  • כדי לשנות את הממצאים שמפעילים התראות, צריך לעדכן את המסנן של נושא Pub/Sub.

בדיקת ההתראות

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

  1. עוברים אל הדף Findings ב-Security Command Center.
    כניסה לדף Findings
  2. אם מתבקשים, בוחרים את הארגון.
  3. בחלונית Quick filters, גוללים למטה לקטע Severity ובוחרים באפשרות High או Critical. החלונית Findings query results מתעדכנת ומציגה רק את הממצאים ברמת החומרה שנבחרה.
  4. בחלונית תוצאות השאילתה של הממצאים, מסמנים את התיבה שליד השם של הממצא כדי לבחור אותו.
  5. בתפריט שינוי המצב הפעיל בסרגל הפעולות תוצאות השאילתה של הממצאים, בוחרים באפשרות לא פעיל. אם השאילתה הנוכחית של הממצאים מציגה רק ממצאים פעילים, הממצא יוסר מתוצאות השאילתה.
  6. בחלונית מסננים מהירים, עוברים לקטע מצב ומשנים את הבחירות כך שרק לא פעיל יהיה מסומן. החלונית Findings query results מתעדכנת כך שיוצגו בה רק ממצאים לא פעילים.
  7. בחלונית Findings query results, בוחרים את הממצא שסימנתם כלא פעיל.
  8. בתפריט Change active state בסרגל הפעולות Findings query results, בוחרים באפשרות Active.
  9. בודקים את ההודעות ב-Slack. מוצגת הודעה שדומה לזו שבתמונה הבאה:

התראה ב-Slack

פתרון בעיות

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

  1. כדי לבדוק אם הפונקציה מופעלת, מעיינים ביומני Stackdriver של פונקציית Cloud Run. אם הוא לא מופעל, צריך לוודא שההתראות מוגדרות בצורה נכונה.

  2. אם הפונקציה של Cloud Run מופעלת, יכול להיות שהיא קורסת. בודקים אם יש שגיאות בפונקציות של Cloud Run באמצעות Google Cloud Error Reporting במסוף.

סידור וארגון

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

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

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

    כניסה לדף Manage resources

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

מחיקה של משאבים בודדים

  1. מחיקת הגדרת ההתראות:

    gcloud scc notifications delete scc-critical-high-severity \
        --organization=ORG_ID \
        --location=global
    

    מחליפים את ORG_ID במזהה הארגון.

    כדי לשמור על ההגדרה ולהשהות זמנית את ההתראות, מוסיפים הערה לקריאות send או post בפונקציית Cloud Run.

  2. מחיקת פונקציית Cloud Run:

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

    1. עוברים לדף Service accounts.
      כניסה לדף Service accounts
    2. בוחרים פרויקט.
    3. בוחרים את חשבון השירות שרוצים למחוק ולוחצים על Delete .

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