ייצוא יומנים למערכת SIEM

כאן מוסבר איך מייצאים יומנים מ-Google Distributed Cloud (GDC)‎ עם air gap למערכת חיצונית לניהול אבטחת מידע ואירועים (SIEM). השילוב הזה מאפשר ניתוח רישום מרכזי ביומן ושיפור של ניטור האבטחה.

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

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

כדי לקבל את ההרשאות שדרושות לניהול משאבים בהתאמה אישית של SIEMOrgForwarder, צריך לבקש מהאדמין של הארגון ב-IAM להקצות לכם את אחד מהתפקידים שמשויכים ל-SIEM Export Org.

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

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

  1. יצירת קישוריות: מוודאים שיש חיבור בין GDC לבין יעד ה-SIEM החיצוני. אם צריך, אפשר לעבוד עם מפעיל התשתית (IO) כדי ליצור חיבור uplink לרשת של הלקוח.

  2. הגדרת משתני סביבה: מגדירים את משתני הסביבה הבאים כדי להריץ את הפקודות מהדף הזה:

    • הנתיב של קובץ ה-kubeconfig:

      export KUBECONFIG=KUBECONFIG_PATH
      

      מחליפים את הערך KUBECONFIG_PATH בנתיב לקובץ kubeconfig של שרת Management API.

    • מרחב השמות של הפרויקט:

      export PROJECT_NAMESPACE=PROJECT_NAMESPACE
      

הגדרת ייצוא של יומנים

ייצוא יומנים למערכת SIEM חיצונית:

  1. צריך לספק אסימון כדי לחבר את מחסנית הרישום למערכת ה-SIEM. כדי לבצע את הפעולה הזו, צריך ליצור סוד במרחב השמות של הפרויקט כדי לאחסן את האסימון במקרה של Splunk ואת הסיסמה במקרה של Elastic SIEM:

    cat <<EOF | kubectl --kubeconfig=${KUBECONFIG} apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: SECRET_NAME
      namespace: ${PROJECT_NAMESPACE}
    type: Opaque
    stringData:
      SECRET_FIELD: FIELD_VALUE
    EOF
    

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

    • ‫SECRET_NAME: שם הסוד.
    • ‫SECRET_FIELD: שם השדה שבו רוצים לאחסן את הסוד. במקרה של Elastic, זהו שם המשתמש.
    • ‫FIELD_VALUE: הערך של FIELD_VALUE הוא אסימון במקרה של Splunk וסיסמה במקרה של Elastic.
    • ‫TOKEN: האסימון שלכם.
  2. פורסים את המשאב בהתאמה אישית SIEMOrgForwarder במרחב השמות של הפרויקט. צריך לציין את סוג היומן ולבחור בין יומני ביקורת לבין יומנים תפעוליים. כדי להגדיר את ייצוא היומנים לשני סוגי היומנים, צריך לפרוס משאב SIEMOrgForwarder לכל סוג.

    בדוגמה הבאה אפשר לראות איך מחילים הגדרה על SIEMOrgForwarder משאב בהתאמה אישית ל-Splunk:

      cat <<EOF | kubectl --kubeconfig=${KUBECONFIG} apply -f -
      apiVersion: logging.gdc.goog/v1
      kind: SIEMOrgForwarder
      metadata:
        name: SIEM_ORG_FORWARDER
        namespace: ${PROJECT_NAMESPACE}
      spec:
        source: LOG_TYPE
        destinations:
          splunkOutputs:
            - host: SIEM_HOST
              token:
                name: SECRET_NAME
                field: SECRET_FIELD
              tls: "TLS"
              netConnectTimeout: NET_CONNECT_TIMEOUT
      EOF
    

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

    • ‫SIEM_ORG_FORWARDER: השם של קובץ ההגדרה של SIEMOrgForwarder.
    • ‫LOG_TYPE: סוג היומן שמייצאים. הערכים הקבילים הם audit ו-operational.
    • ‫SIEM_HOST: השם של מארח ה-SIEM.
    • ‫SECRET_NAME: שם הסוד.
    • ‫SECRET_FIELD: השם של השדה שבו שמרתם את הסוד.
    • ‫TLS: הסטטוס של Transport Layer Security‏ (TLS). הערכים הקבילים הם "On" ו-"Off".
    • ‫NET_CONNECT_TIMEOUT: משך הזמן המקסימלי בשניות להמתנה עד ליצירת חיבור. לדוגמה, אם הערך הוא 180, המערכת תמתין 180 שניות.

    בדוגמה הבאה אפשר לראות איך מחילים הגדרה על משאב בהתאמה אישית של SIEMOrgForwarder ל-Elastic:

      cat <<EOF | kubectl --kubeconfig=${KUBECONFIG} apply -f -
      apiVersion: logging.gdc.goog/v1
      kind: SIEMOrgForwarder
      metadata:
        name: SIEM_ORG_FORWARDER
        namespace: ${PROJECT_NAMESPACE}
      spec:
        source: LOG_TYPE
        destinations:
          elasticOutputs:
            - host: SIEM_HOST
              port: SIEM_PORT
              http_credential:
                http_user: HTTP_USER_NAME
                http_passwd: SECRET_NAME
              tls: "TLS"
              netConnectTimeout: NET_CONNECT_TIMEOUT
              index: INDEX
      EOF
    

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

    • ‫SIEM_ORG_FORWARDER: השם של קובץ ההגדרה של SIEMOrgForwarder.
    • ‫LOG_TYPE: סוג היומן שמייצאים. הערכים הקבילים הם audit ו-operational.
    • ‫SIEM_HOST: השם של מארח ה-SIEM.
    • ‫SIEM_PORT: היציאה של מכונת ה-SIEM.
    • ‫HTTP_USER_NAME: שם המשתמש של מופע ה-SIEM.
    • ‫SECRET_NAME: שם הסוד.
    • ‫TLS: הסטטוס של Transport Layer Security‏ (TLS). הערכים הקבילים הם "On" ו-"Off".
    • ‫NET_CONNECT_TIMEOUT: משך הזמן המקסימלי בשניות להמתנה עד ליצירת חיבור. לדוגמה, אם הערך הוא 180, המערכת תמתין 180 שניות.
    • ‫INDEX: האינדקס של מופע Elastic. אם לא מציינים סוג יומן, המערכת תשתמש בסוג היומן (audit או operational). השדה הזה הוא אופציונלי.
  3. מאמתים את הסטטוס של המשאב המותאם אישית של SIEMOrgForwarder שנפרס:

      kubectl --kubeconfig=${KUBECONFIG} describe siemorgforwarder/SIEM_ORG_FORWARDER \
          -n ${PROJECT_NAMESPACE}
    

    בהתאם לסוג היומן, בודקים את הסטטוס הבא:

    • יומני ביקורת: בודקים את הסטטוס של AuditLoggingReady.
    • יומני פעילות: בדיקת הסטטוס של OperationalLoggingReady.