Google Chat

במאמר הזה מוסבר איך לשלב את Google Chat עם Google SecOps.

הרשאות למוצרים

יצירה של חשבון שירות

  1. במסוף Google Cloud , בוחרים פרויקט קיים ב- Google Cloud או יוצרים פרויקט חדש. חשוב לזכור שהפרויקט שנבחר ב- Google Cloud צריך להיות חלק מהארגון ב- Google Cloud.
  2. לוחצים על ☰ Menu ובוחרים באפשרות APIs & Services > Credentials.
  3. בחלק העליון של הדף, לוחצים על ‎+ CREATE CREDENTIALS > Service Account‎.
  4. נותנים לחשבון השירות שם שיוצג במסוף.
  5. אופציונלי: מזינים תיאור לחשבון השירות.
  6. לוחצים על CREATE, ואז על CONTINUE ועל DONE כדי לסיים את יצירת חשבון השירות.

יצירת פרטי כניסה לחשבון שירות

  1. אחרי שיוצרים את חשבון השירות, המערכת מפנה אתכם לרשימת פרטי הכניסה שאפשר להשתמש בהם בפרויקט ב- Google Cloud . בקטע Service Accounts, לוחצים על חשבון השירות החדש שיצרתם. השם שלו יהיה: service-account-name@project-name-XXXXXX.iam.gserviceaccount.com.
  2. לוחצים על ADD KEY > Create new key.
  3. משאירים את האפשרות JSON מסומנת ולוחצים על CREATE.

הפעולה הזו תתחיל את ההורדה של קובץ פרטי הכניסה שנדרש כדי לגשת ל-API כחשבון השירות הזה.

הגדרת פרויקט חדש ב-Apps Script

  1. עוברים אל Google Apps Script.
  2. יוצרים פרויקט חדש ב-Apps Script.
  3. כדי להפעיל את פונקציונליות השילוב, מוסיפים את הקוד הבא לפרויקט החדש שנוצר:

    var SCOPE = 'https://www.googleapis.com/auth/chat.bot';
    // The values below are copied from the JSON file downloaded upon
    // service account creation.
    // For SERVICE_ACCOUNT_PRIVATE_KEY, remember to include the BEGIN and END lines of the private key
    var SERVICE_ACCOUNT_PRIVATE_KEY = '...';
    var SERVICE_ACCOUNT_EMAIL = 'service-account@project-id.iam.gserviceaccount.com';
    
    // Posts a message into the given space ID via the API, using
    // service account authentication.
    function postMessage(spaceId, message) {
      var service = OAuth2.createService('chat')
          .setTokenUrl('https://accounts.google.com/o/oauth2/token')
          .setPrivateKey(SERVICE_ACCOUNT_PRIVATE_KEY)
          .setClientId(SERVICE_ACCOUNT_EMAIL)
          .setPropertyStore(PropertiesService.getUserProperties())
          .setScope(SCOPE);
      if (!service.hasAccess()) {
        Logger.log('Authentication error: %s', service.getLastError());
        return;
      }
      var url = 'https://chat.googleapis.com/v1/' + spaceId + '/messages';
      UrlFetchApp.fetch(url, {
        method: 'post',
        headers: { 'Authorization': 'Bearer ' + service.getAccessToken() },
        contentType: 'application/json',
        payload: JSON.stringify(message),
      });
    }
    
  4. פותחים את קובץ פרטי כניסה לחשבון השירות שהורדתם ממסוףGoogle Cloud .

  5. מעתיקים את הערך private_key (הערך שמתחיל ב-‎-----BEGIN PRIVATE KEY-----‎) ומדביקים אותו ב-SERVICE_ACCOUNT_PRIVATE_KEY בפרויקט Apps Script.

  6. מעתיקים את הערך client_email מקובץ פרטי הכניסה ומדביקים אותו ב-SERVICE_ACCOUNT_EMAIL בפרויקט ב-Apps Script.

  7. מקשרים את פרויקט Apps Script לפרויקט ב- Google Cloud שיצרתם.

  8. חוזרים למסוף Google Cloud ובוחרים באפשרות ☰ > IAM & Admin > Settings בתפריט.

  9. מעתיקים את מספר הפרויקט שמוגדר בדף הזה.

  10. בפרויקט Apps Script, בוחרים באפשרות Project Settings > Google Cloud Project (הגדרות הפרויקט > פרויקט) בתפריט ומדביקים את מספר הפרויקט בתיבת הדו-שיח Enter Project Number here (הזנת מספר הפרויקט כאן).

  11. לוחצים על Set Project.

הפעלת Google Chat API

  1. לוחצים על ☰ > APIs & Services ובוחרים באפשרות Library.
  2. מחפשים את Google Chat API ולוחצים על התוצאה היחידה.
  3. לוחצים על הפעלה.

הפעולה הזו מפעילה את ה-API בפרויקט.

פריסת בוט

  1. בממשק המשתמש של Apps Script, עוברים אל פריסה > פריסה חדשה.
  2. בוחרים באפשרות תוסף בתור סוג הפריסה החדש.
  3. מזינים שם ותיאור לפריסה ולוחצים על שמירה.
  4. בסיום השמירה, לוחצים על Get ID לצד הפריסה שיצרתם ומעתיקים את ערך מזהה הפריסה.

מגדירים את הצ'אט בוט של Google Chat:

  1. במסוף Google Cloud , לוחצים על ☰ > APIs & Services > Dashboard.
  2. ברשימת ממשקי ה-API שמופעלים, בוחרים באפשרות Google Chat API.
  3. לוחצים על ניהול כדי לפתוח את הדף של Google Chat API.
  4. בדף שנפתח, בוחרים בכרטיסייה Configuration ומגדירים את הבוט:

    • בשדה שם האפליקציה, מזינים את Google Security Operations Chat App.
    • בשדה Avatar URL, מזינים את הכתובת https://developers.google.com/chat/images/chat-product-icon.png.
    • בשדה Description, מזינים את אפליקציית Google SecOps Chat שאפשר להשתמש בה כדי לשלוח הודעות מ-Google SecOps למרחבים משותפים ב-Google Chat.
    • בקטע פונקציונליות, בוחרים באפשרות האפליקציה פועלת במרחבים משותפים עם כמה משתמשים.
    • בקטע Connection settings, בוחרים באפשרות Apps Script project ומדביקים את מזהה הפריסה שקיבלתם בתהליך פריסת בוט.
    • בקטע הרשאות, בוחרים באפשרות אנשים וקבוצות ספציפיים בדומיין שלך ומציינים מי יכול לתקשר עם הבוט.
    • לוחצים על Save. הגדרת האפליקציה הושלמה.

אפליקציית Google Chat לא יכולה ליצור מרחבים (להתחיל שיחות), ולכן צריך להוסיף את אפליקציית Google SecOps Chat למרחבים שאליהם היא צריכה לשלוח הודעות.

אחרי שמגדירים את השילוב, אפשר להשתמש בפעולה "רשימת מרחבים משותפים" כדי לאחזר את המרחבים המשותפים שלאפליקציית Google SecOps יש גישה אליהם (היא יכולה לשלוח אליהם הודעות).

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

הגדרת השילוב של Google Chat ב-Google SecOps

הוראות מפורטות להגדרת שילוב ב-Google SecOps זמינות במאמר הגדרת שילובים.

פרמטרים של שילוב

כדי להגדיר את השילוב, משתמשים בפרמטרים הבאים:

שם הפרמטר לתצוגה סוג ערך ברירת המחדל חובה תיאור
כתובת ה-URL הבסיסית של ה-API String https://chat.googleapis.com/ כן כתובת ה-URL הבסיסית של ה-API שמשמשת את השילוב כדי להתחבר לשירות Google Chat.
חשבון השירות סיסמה לא רלוונטי כן תוכן קובץ ה-JSON של חשבון השירות שבו הצ'אט בוט משתמש כדי לעבוד עם שירות Google Chat.
אימות SSL תיבת סימון סימן אישור כן אם היא מופעלת, צריך לוודא שאישור ה-SSL לחיבור לשירות Google Chat תקף.

פעולות

פינג

תיאור

בודקים את הקישוריות ל-Google Chat באמצעות הפרמטרים שמופיעים בדף הגדרת השילוב בדף Google SecOps Content Hub.

ריצה

הפעולה הזו לא פועלת על ישויות, ואין לה פרמטרים של קלט חובה.

תוצאות הפעולה

תוצאת הסקריפט
שם תוצאת הסקריפט אפשרויות של ערכים דוגמה
is_success נכון/לא נכון is_success:False
קיר נרתיקים
סוג התוצאות ערך/תיאור סוג
הודעת פלט*

הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של הפלייבוק:

אם החיבור הצליח: "Successfully connected to the Google Chat service with the provided connection parameters!‎"

הפעולה אמורה להיכשל ולעצור את ההפעלה של הפלייבוק:

אם מדווחת שגיאה קריטית, כמו פרטי כניסה שגויים או אובדן קישוריות: "החיבור לשירות Google Chat נכשל! השגיאה היא {0}".format(exception.stacktrace)"

כללי

הצגת רשימה של מרחבים משותפים

תיאור

הצגת רשימה של המרחבים המשותפים שהצ'אט בוט של Google Chat שמוגדר כרגע נוסף אליהם.

פרמטרים

שם הפרמטר לתצוגה סוג ערך ברירת המחדל חובה תיאור
מפתח סינון DDL

יש לבחור טווח

ערכים אפשריים:

  • שם
  • שם לתצוגה
  • סוג
לא צריך לציין את המפתח שצריך להשתמש בו כדי לסנן את המרחבים המשותפים ב-Google Chat.
לוגיקת הסינון DDL

לא צוינה

ערכים אפשריים:

  • לא צוינה
  • שווה
  • מכיל
לא מציינים את לוגיקת הסינון שרוצים להחיל. לוגיקת הסינון פועלת על סמך הערך שצוין בפרמטר Filter Key (מפתח סינון).
ערך המסנן String לא רלוונטי לא

מציינים באיזה ערך להשתמש במסנן.

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

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

אם לא מציינים ערך בפרמטר הזה, המסנן לא מופעל. לוגיקת הסינון פועלת על סמך הערך שצוין בפרמטר Filter Key (מפתח סינון).

מספר הרשומות המקסימלי להחזרה מספר שלם 50 לא

מציינים את מספר הרשומות שרוצים להחזיר.

אם לא מציינים ערך, הפעולה מחזירה 50 רשומות.

הכללת חברויות של משתמשים תיבת סימון התיבה לא מסומנת לא אם המדיניות מופעלת, פרטי החברויות של המשתמשים מתווספים לטבלה "קיר הפניות" ולתוצאת ה-JSON של הפעולה.

הפעלה ב-

הפעולה הזו לא פועלת על ישויות.

תוצאות הפעולה

תוצאת הסקריפט
שם תוצאת הסקריפט אפשרויות של ערכים דוגמה
is_success נכון/לא נכון is_success:False
קיר נרתיקים
סוג התוצאות ערך / תיאור סוג
הודעת פלט*

הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של הפלייבוק:

אם יש נתונים (is_success=true): "נמצאו מרחבים משותפים שנוספו ב-Google Chat לפי הקריטריונים שצוינו".

אם הנתונים לא זמינים (is_success=false): "לא נמצאו מרחבים משותפים ב-Google Chat שתואמים לקריטריונים שצוינו"

אם לפרמטר Filter Value אין ערך (is_success=true):

"המסנן לא הוחל כי הפרמטר "ערך המסנן" ריק".

הפעולה אמורה להיכשל ולעצור את ההפעלה של הפלייבוק:

אם הפרמטר Filter Key מוגדר כ-"Select One" והפרמטר Filter Logic מוגדר כ- "Equal" או "Contains":

"שגיאה בהפעלת הפעולה "רשימת המרחבים". הסיבה: צריך לבחור שדה מהפרמטר "מפתח סינון".

אם צוין ערך לא חוקי בפרמטר "מספר הרשומות המקסימלי להחזרה":

"שגיאה בהפעלת הפעולה "רשימת המרחבים". סיבה: "צוין ערך לא חוקי בשדה 'מספר הרשומות המקסימלי להחזרה'. צריך להזין מספר חיובי".

אם מדווחת שגיאה חמורה, כמו פרטי כניסה שגויים, אין חיבור לשרת או שגיאה אחרת:

"שגיאה בהפעלת הפעולה "רשימת המרחבים". הסיבה: {0}''.format(error.Stacktrace)

כללי
שולחן קיר עם ארונית

שם הטבלה: המרחבים המשותפים הזמינים שהבוט נוסף אליהם עמודות בטבלה: {fields}

הערה: אם מסמנים את התיבה "הכללת חברויות של משתמשים", נוספת עמודה עם השם המוצג של חברי המרחב המשותף.

כללי

שליחת הודעה

תיאור

שולחים הודעה למרחב ב-Google Chat שאפליקציית Google SecOps נוספה אליו.

פרמטרים

שם הפרמטר לתצוגה סוג ערך ברירת המחדל חובה תיאור
שם המרחב String לא רלוונטי כן

מציינים את שם המרחב שאליו רוצים לשלוח את ההודעה.

דוגמה לשם של מרחב: AAAAdaTsel0

טקסט ההודעה String לא רלוונטי כן מציינים את הטקסט של ההודעה שרוצים לשלוח.

הפעלה ב-

הפעולה הזו לא פועלת על ישויות.

תוצאות הפעולה

תוצאת הסקריפט
שם תוצאת הסקריפט אפשרויות של ערכים דוגמה
is_success נכון/לא נכון is_success:False
קיר נרתיקים
סוג התוצאות ערך / תיאור סוג
הודעת פלט*

הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של הפלייבוק:

אם ההודעה נשלחה בהצלחה (is_success=true): "ההודעה נשלחה בהצלחה".

הפעולה אמורה להיכשל ולעצור את ההפעלה של הפלייבוק:

אם מדווחת שגיאה קריטית, כמו "אין חיבור" או "פרטי כניסה שגויים": "שגיאה בביצוע הפעולה 'שליחת הודעה'. הסיבה: {0}''.format(error.Stacktrace)

כללי

שליחת הודעה מתקדמת

תיאור

שליחת הודעה מתקדמת למרחב ב-Google Chat על סמך מטען ייעודי (payload) של הודעת JSON שסופק.

פרמטרים

שם הפרמטר לתצוגה סוג ערך ברירת המחדל חובה תיאור
שם המרחב String לא רלוונטי כן

מציינים את שם המרחב שאליו רוצים לשלוח את ההודעה.

דוגמה לשם של מרחב: AAAAdaTsel0

מטען ייעודי (payload) של JSON בהודעה String {"cards":[{"sections":[{"widgets":[{"image":{"imageUrl":"https://..."}},{"buttons":[{"textButton":{"text":"OPEN IN GOOGLE MAPS","onClick":{"openLink":{"url":"https://..."}}}}]}]}]}]} כן

מציינים את המטען הייעודי (payload) של ה-JSON שרוצים לשלוח עם ההודעה.

במאמר הזה יש דוגמאות למטען ייעודי (payload) של הודעות.

הפעלה ב-

הפעולה הזו לא פועלת על ישויות.

תוצאות הפעולה

תוצאת הסקריפט
שם תוצאת הסקריפט אפשרויות של ערכים דוגמה
is_success נכון/לא נכון is_success:False
קיר נרתיקים
סוג התוצאות ערך / תיאור סוג
הודעת פלט*

הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של הפלייבוק:

אם ההודעה נשלחה בהצלחה (is_success=True): "ההודעה נשלחה בהצלחה".

הפעולה אמורה להיכשל ולעצור את ההפעלה של הפלייבוק:

אם המטען הייעודי (payload) של ה-JSON שסופק לא תקין: "שגיאה בביצוע הפעולה 'שליחת הודעה מתקדמת'. הסיבה: המטען הייעודי (payload) של ההודעה בפורמט JSON לא תקין. "‎

אם מדווחת שגיאה קריטית, כמו "אין חיבור" או "פרטי כניסה שגויים": "שגיאה בביצוע הפעולה 'שליחת הודעה מתקדמת'. הסיבה: {0}''.format(error.Stacktrace)

כללי

הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.