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

נתמך ב:

במאמר הזה מוסבר איך ליצור שילובים בהתאמה אישית ב-Google SecOps. השיטה המומלצת כרגע היא לפתח שילובים באופן מקומי באמצעות ה-IDE המועדף עליכם, ולנהל אותם דרך GitHub באמצעות תהליכי עבודה מודרניים של GitOps. בסביבות מדור קודם או באבות טיפוס מהירים, אפשר גם ליצור שילובים ישירות בתוך ה-IDE המובנה של SOAR.

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

סקירה כללית על מושגים של תהליכי עבודה

כדי לפתח שילובים בהתאמה אישית באופן מקומי, מומלץ לפעול לפי מחזור החיים הזה של GitOps. כדי לראות את התחביר המדויק והעדכני של הפקודות האלה, עיינו במסמכי התיעוד הרשמיים של MP CLI ב-GitHub.

  1. פיצול ושכפול: משכפלים את המאגר הרשמי של content-hub למחשב הפיתוח המקומי.
  2. התקנת כלים: מתקינים את כלי ה-CLI של mp ואת מנהל החבילות של Python ב-uv.
  3. אימות: נכנסים לסביבת Google SecOps דרך MP CLI באמצעות כתובת ה-URL של המכונה ומפתחות ה-API.
  4. פיתוח מקומי: אתם יכולים להשתמש בסביבת הפיתוח המשולבת (IDE) המועדפת עליכם (כמו VS Code או PyCharm) כדי לכתוב את קוד השילוב, ולהיעזר בכלים מקומיים לניפוי באגים ולבדיקה.
  5. ניהול יחסי תלות: משתמשים ב-uv כדי להצהיר על יחסי תלות (כמו TIPCommon) ולנהל אותם בקובץ pyproject.toml המקומי.
  6. סנכרון: משתמשים בפקודות mp pull ו-mp push כדי לסנכרן את הקוד המקומי עם המכונה של Google SecOps לצורך בדיקה ופריסה.

אפשרות חלופית: יצירת שילוב בהתאמה אישית ב-IDE המובנה

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

תרחיש לדוגמה: יצירת שילוב מותאם אישית של Armis

כדי ליצור את השילוב בהתאמה אישית ב-IDE, פועלים לפי השלבים הבאים:

  1. בתפריט הראשי, עוברים אל Response > IDE.
  2. לוחצים על Create New Item (יצירת פריט חדש) ובוחרים באפשרות Integration (שילוב).
  3. מזינים שם ולוחצים על יצירה.

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

לוחצים על הגדרות settings כדי להציג את הגדרות האינטגרציה, שבהן אפשר להגדיר את הסמל, התיאור, יחסי התלות של Python והפרמטרים של האינטגרציה.

יצירת מנהל בהתאמה אישית

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

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

  1. ב-IDE, לוחצים על Create New Item ובוחרים באפשרות Manager.
  2. בוחרים את השילוב של Armis ומזינים את שם המנהל.
  3. עורכים ומריצים את הסקריפט הבא:
import requests


class ArmisManager:
   def init(self, api_root, api_token):
       self.api_root = api_root
       self.api_token = api_token
       self.session = requests.session()
       self.session.headers = {"Accept": "application/json"}


   def auth(self):
       endpoint = "{}/api/vi/access_token/*"
       params = {"secret_key" : self.api_token}
       response = self.session.post(endpoint.format(self.api_root), params=params)
       self.validate_response(response)
       access_token = response.json()["data"]["access_token"]
       self.session.headers.update({"Authorization": access_token})
       return True


   def get_device_by_ip(self, device_ip):
       endpoint = "{}/api/vi/devices/"
       params = {"ip": device_ip}
       response = self.session.get(endpoint.format(self.api_root), params=params)
       self.validate_response(response)
       return response.json()["data"]["data"]


   @staticmethod
   def validate_response(res, error_msg="An error occurred"):
       """Validate a response


 :param res: (requests. Response) The response to validate
 :param error_msg: (str) The error message to display
       """
       try:
           res.raise_for_status()
       except requests.HTTPError as error:
           raise Exception("(error_msg): (error) (text)".format(
               error_msg=error_msg,
               error=error,
               text=error.response.content
           ))

פרמטרים, הגדרת Google SecOps Content Hub והפעולה Ping

הפרמטרים שמוגדרים בהגדרות השילוב מופיעים בהגדרות של Google SecOps Content Hub. הפרמטרים כוללים:

  • שורש ה-API: כתובת ה-URL הבסיסית של השירות שאליו אתם מתחברים.
  • ‫API Secret: מפתח סודי שמשמש לאימות האפליקציה מול השירות.
  • תיבת הסימון אימות SSL: אם היא מסומנת, המערכת מאמתת שאישור ה-SSL של החיבור לשרת Armis תקין.
  • תיבת הסימון Run Remotely: הגדרה שקובעת אם הקוד או המשימה יופעלו בשרת מרוחק במקום באופן מקומי. כשהאפשרות הזו מופעלת, המערכת שולחת את ההוראות והנתונים הנדרשים לשרת ייעודי לצורך עיבוד.

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

  1. מזינים את פרטי הכניסה הנכונים.
  2. לוחצים על שמירה > בדיקה.

אם הפעולה Ping חסרה, הלחצן Test נכשל ומוצג X אדום.

הטמעת פעולת פינג

הלוגיקה של הפעולה Ping פועלת כמו אימות מוצלח.

כדי להטמיע פעולת פינג:

  1. ב-IDE, יוצרים פעולה חדשה בשילוב של Armis בשם Ping.
  2. משתמשים ב-method‏ ArmisManager auth כדי לאמת את האימות.

הפעלת השילוב

כדי להפעיל את השילוב:

  1. בקטע Response > IDE, לוחצים על המתג Enable/Disable כדי להעביר אותו למצב ON.
  2. לוחצים על Save. מתג ירוק מאשר שהפעולה בוצעה בהצלחה. פרטי הכניסה מ-Content Hub מועברים אל ArmisManager. אם auth מסתיים בלי שגיאות, בלחצן Test מופיע סימן וי ירוק.

משתמשים ב-method‏ extract_configuration_param כדי לייבא פרמטרים מהגדרת השילוב. לחלופין, אפשר להשתמש ב-extract_action_param כדי להגדיר פרמטרים בתוך הפעולה עצמה. עם זאת, הפעולה Ping צריכה תמיד להשתמש בפרמטרים של הגדרה, כי הם נבדקים על ידי Content Hub.

הצגת שילובים בהתאמה אישית

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

ייצוא וייבוא ב-IDE

מבצעים אחת מהפעולות הבאות:

  • כדי לייבא שילובים:
    1. מעלים קובץ ZIP עם מבנה התיקיות הנכון. השילוב מופיע ב-IDE וב-Content Hub.
    2. לוחצים על Import. השילוב מופיע גם ב-IDE וגם ב-Content Hub.
    3. המערכת יוצרת קובץ ZIP שמכיל את ההגדרה, הסקריפטים וההגדרות האישיות. התיקייה מנהלים לא נכללת באופן אוטומטי.
  • כדי לייצא אינטגרציות:
    • לוחצים על ייצוא כדי להוריד את החבילה.

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