שילוב של Cloud Identity עם Google SecOps

במאמר הזה מוסבר איך לשלב את Cloud Identity עם Google Security Operations.

תרחישים לדוגמה

השילוב של Cloud Identity משתמש ביכולות של Google SecOps כדי לתמוך בתרחישים הבאים:

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

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

לפני שמגדירים את השילוב של Cloud Identity בפלטפורמת Google SecOps, צריך לוודא שהגדרתם את הסביבה באמצעות השלבים הבאים:

  1. יוצרים חשבון שירות.
  2. הענקת הרשאה ברמת הדומיין לחשבון השירות
  3. מפעילים את ממשקי ה-API הנדרשים בפרויקט.
  4. בוחרים ומגדירים אחת משיטות האימות הבאות:
    • אפשרות 1: מפתח JSON: השיטה הזו מסתמכת על קובץ מפתח סודי סטטי לטווח ארוך. משתמשים בשיטה הזו רק אם Workload Identity לא זמין בסביבה שלכם.
    • אפשרות 2: Workload Identity (מומלץ): בשיטה הזו נעשה שימוש באסימוני גישה זמניים לטווח קצר באמצעות התחזות לחשבון שירות, כך שאין צורך לאחסן סודות.

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

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

  1. במסוף Google Cloud , נכנסים אל IAM & Admin > Service Accounts ובוחרים את הפרויקט.

    לדף Service accounts

  2. לוחצים על יצירת חשבון שירות.

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

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

  1. במסוף Google Admin של הדומיין, נכנסים אל תפריט ראשי > אבטחה > שליטה בגישה ובנתונים > אמצעי בקרה לממשקי API.
  2. בחלונית Domain wide delegation (הענקת גישה ברמת הדומיין), בוחרים באפשרות Manage Domain Wide Delegation (ניהול של הענקת גישה ברמת הדומיין).
  3. לוחצים על הוספת חדש.
  4. בשדה Client ID (מזהה הלקוח), מזינים את מזהה הלקוח שמופיע בקטע יצירת חשבון שירות.
  5. בשדה OAuth Scopes (היקפי הרשאות OAuth), מזינים את הרשימה הבאה של היקפי ההרשאות שנדרשים לאפליקציה, כשהם מופרדים בפסיקים:

    https://www.googleapis.com/auth/cloud-platform,
    https://www.googleapis.com/auth/cloud-identity.policies,
    https://www.googleapis.com/auth/admin.directory.orgunit
    
  6. לוחצים על Authorize.

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

מפעילים את ממשקי ה-API הנדרשים בפרויקט

  1. במסוף Google Cloud , נכנסים אל APIs & Services.

    כניסה אל APIs & Services

  2. לוחצים על Enable APIs and Services.

  3. מחפשים את ממשקי ה-API הבאים ומפעילים אותם בפרויקט:

    • Admin SDK API (admin.googleapis.com)
    • Cloud Identity API ‏ (cloudidentity.googleapis.com)

הגדרת מפתח JSON

אפשר לבצע אימות של השילוב באמצעות קובץ מפתח JSON סטטי או באמצעות איחוד שירותי אימות הזהות של עומסי עבודה. כדי למקסם את אבטחת הסביבה, מומלץ להשתמש בשיטה Workload Identity. מומלץ להשתמש בשיטת מפתח JSON רק אם Workload Identity לא נתמך בתשתית שלכם, כי מפתחות סטטיים מחייבים רוטציה ידנית ומגבירים את הסיכונים לחשיפת פרטי הכניסה.

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

  1. במסוף Google Cloud , נכנסים אל IAM & Admin > Service Accounts ובוחרים את חשבון השירות שיצרתם.

    לדף Service accounts

  2. עוברים לכרטיסייה Keys.

  3. לוחצים על הוספת מפתח.

  4. בוחרים באפשרות יצירת מפתח חדש.

  5. בקטע Key type (סוג מפתח), בוחרים באפשרות JSON ולוחצים על Create (יצירה). קובץ ה-JSON יורד למחשב.

  6. מעתיקים את כל התוכן של הקובץ הזה ומדביקים אותו בקובץ User's Service Account JSON במהלך הגדרת השילוב.

הגדרת הרשאות ב-Cloud Identity

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

  1. במסוף Google Admin, נכנסים אל חשבון > תפקידי אדמין.
  2. לוחצים על תפקיד חדש.
  3. נותנים שם לתפקיד החדש בהתאמה אישית ולוחצים על המשך.
  4. בדף Select Privileges (בחירת הרשאות), עוברים לקטע Admin API (הרשאות של Admin API).
  5. בקטע Admin API privileges (הרשאות ל-Admin API), בוחרים את ההרשאות הבאות:
    • Organization Units
    • Users
    • Groups
  6. לוחצים על Continue.
  7. כדי ליצור תפקיד חדש בהתאמה אישית, לוחצים על יצירת תפקיד.
הקצאת התפקיד המותאם אישית למשתמש

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

  1. כדי ליצור משתמש חדש, עוברים לדף ספרייה > משתמשים.
  2. מוסיפים משתמש חדש שמשויך לחשבון השירות.
  3. פותחים את ההגדרות של המשתמש החדש שנוצר. תיפתח הכרטיסייה של חשבון המשתמש.
  4. לוחצים על תפקידים והרשאות של אדמין.
  5. לוחצים על עריכה עריכה.
  6. בוחרים את התפקיד המותאם אישית שיצרתם.
  7. בתפקיד שנבחר, מעבירים את המתג למצב Assigned (הוקצה).

הגדרת פרטי כניסה של Workload Identity

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

זיהוי הזהות הייחודית של המופע

כדי להשתמש ב-Workload Identity, צריך לתת למופע של Google SecOps הרשאה להתחזות לחשבון השירות. השלב הזה מאפשר למופע לגשת למשאבים של Google Cloud בצורה מאובטחת.

  1. ב-Google SecOps, עוברים אל Content Hub > Response Integrations.
  2. בוחרים את השילוב שרוצים להגדיר ומזינים את כתובת האימייל של חשבון השירות בשדה Workload Identity Email.
  3. בשדה Delegated Email מזינים את כתובת האימייל שרוצים שהשילוב יתחזה לה.
  4. לוחצים על שמירה > בדיקה. הבדיקה צפויה להיכשל.
  5. לוחצים על close_small משמאל ל-Test ומחפשים בהודעת השגיאה את כתובת האימייל של הזהות שמתחילה ב-gke-init-python@... או ב-soar-python@....

    מעתיקים את כתובת האימייל הייחודית הזו ומדביקים אותה ב-Workload Identity Email במהלך הגדרת השילוב.

איך נותנים הרשאה לזהות המופע ב-Google Cloud

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

  1. במסוף Google Cloud , נכנסים אל IAM & Admin > Service Accounts.
  2. בוחרים את חשבון השירות של היעד ועוברים אל הרשאות > הענקת גישה.
  3. מדביקים את כתובת האימייל הייחודית בשדה New principals.
  4. מקצים את התפקיד יצירת אסימונים בחשבון שירות (roles/iam.serviceAccountTokenCreator).

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

השילוב של Cloud Identity דורש את הפרמטרים הבאים:

פרמטר תיאור
Service Account JSON File Content

זה שינוי אופציונלי.

התוכן של קובץ ה-JSON של מפתח חשבון השירות.

אפשר להגדיר את הפרמטר הזה או את הפרמטר Workload Identity Email. כדי להשתמש בשיטה הזו, מדביקים את כל מחרוזת ה-JSON מקובץ המפתח שהורד במהלך יצירת חשבון השירות.

Workload Identity Email

זה שינוי אופציונלי.

כתובת האימייל של הלקוח בחשבון השירות.

אפשר להגדיר את הפרמטר הזה או את הפרמטר Service Account JSON File Content.

כדי להשתמש בשיטה הזו להתחזות לחשבון שירות, צריך להעניק את התפקיד Service Account Token Creator לחשבון השירות של Google SecOps.

Delegated Email

חובה.

כתובת האימייל שמשמשת את השילוב לביצוע פעולות.

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

Verify SSL

זה שינוי אופציונלי.

אם האפשרות הזו נבחרה, האינטגרציה מאמתת את אישור ה-SSL כשמתחברים לשרת Cloud Identity.

מופעל כברירת מחדל.

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

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

פעולות

מידע נוסף על פעולות זמין במאמרים איך מגיבים לפעולות שממתינות לאישור ב-Your Workdesk ואיך מבצעים פעולה ידנית.

פינג

משתמשים בפעולה Ping כדי לבדוק את הקישוריות ל-Cloud Identity.

הפעולה הזו לא מופעלת על ישויות ב-Google SecOps.

הוספת נתונים לפעולה

לא נדרשים פרמטרים של קלט לפעולה הזו.

פלט של פעולות

הפעולה Ping מספקת את הפלטים הבאים:

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

הפעולה Ping יכולה להחזיר את הודעות הפלט הבאות:

הודעת פלט תיאור ההודעה

Successfully connected to the Cloud Identity server with the provided connection parameters!

הפעולה הסתיימה בהצלחה.
Failed to connect to the Cloud Identity server! Error is ERROR_REASON

הפעולה נכשלה.

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

תוצאת סקריפט

בטבלה הבאה מפורט הערך של פלט תוצאת הסקריפט כשמשתמשים בפעולה Ping:

שם התוצאה של הסקריפט ערך
is_success true או false

הוספת ישות לרשימת כתובות ה-URL של מזהה

משתמשים בפעולה Add Entity To Detector URL List (הוספת ישות לרשימת כתובות ה-URL של הכלי לזיהוי מדיניות) כדי להוסיף ישויות לרשימת זיהוי המדיניות של Cloud Identity.

הפעולה הזו מופעלת בישויות הבאות של Google SecOps:

  • כתובת URL
  • דומיין

הוספת נתונים לפעולה

הפעולה Add Entity To Detector URL List (הוספת ישות לרשימת כתובות ה-URL של הכלי לזיהוי) דורשת את הפרמטרים הבאים:

פרמטר תיאור
Detector Policy ID

חובה.

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

URL

זה שינוי אופציונלי.

רשימה מופרדת בפסיקים של כתובות URL להוספה לרשימת הגלאים.

Domain

זה שינוי אופציונלי.

רשימה מופרדת בפסיקים של דומיינים שרוצים להוסיף לרשימת הגלאים.

פלט של פעולות

הפעולה Add Entity To Detector URL List מספקת את התוצאות הבאות:

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

בדוגמה הבאה מוצג פלט תוצאת ה-JSON שמתקבל כשמשתמשים בפעולה Add Entity To Detector URL List (הוספת ישות לרשימת כתובות ה-URL של הכלי לזיהוי):

{
 "type": "ADMIN",
 "customer": "customers/<CUSTOMER_ID>",
 "policyQuery": {
   "query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('<ORG_UNIT_ID>'))",
   "orgUnit": "orgUnits/<ORG_UNIT_ID>"
 },
 "setting": {
   "type": "settings/detector.url_list",
   "value": {
     "displayName": "test_url_list_detector",
     "description": "test_url_list_detector desc",
     "urlList": {
       "urls": [
         "[http://example.com](http://example.com)",
         "example.org",
         "bad_entity.com"
       ]
     }
   }
 }
}
הודעות פלט

הפעולה Add Entity To Detector URL List יכולה להחזיר את הודעות הפלט הבאות:

הודעת פלט תיאור ההודעה

Successfully blocked the following URLs using Cloud Identity: ENTITY_IDENTIFIER

הפעולה הסתיימה בהצלחה.
Error executing action "Add Entity To Detector URL List". Reason: ERROR_REASON

הפעולה נכשלה.

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

תוצאת סקריפט

בטבלה הבאה מפורט הערך של פלט תוצאת הסקריפט כשמשתמשים בפעולה Add Entity To Detector URL List:

שם התוצאה של הסקריפט ערך
is_success true או false

קביעת מדיניות

משתמשים בפעולה Create Policy (יצירת מדיניות) כדי ליצור רשומה חדשה של מדיניות ב-Cloud Identity.

הפעולה הזו לא מופעלת על ישויות ב-Google SecOps.

הוספת נתונים לפעולה

הפעולה Create Policy (יצירת מדיניות) דורשת את הפרמטרים הבאים:

פרמטר תיאור
Policy Entry

חובה.

אובייקט JSON שמייצג את ההגדרה של רשומת המדיניות שרוצים להוסיף.

הגדרות מדיניות לדוגמה

בדוגמאות הבאות להגדרות אפשר לראות איך בנוי הפרמטר Policy Entry:

דוגמה 1: כלי לזיהוי רשימת כתובות URL

{
  "type": "ADMIN",
  "customer": "customers/<CUSTOMER_ID>",
  "policyQuery": {
    "orgUnit": "orgUnits/<ORG_UNIT_ID>",
    "sortOrder": 1
  },
  "setting": {
    "type": "settings/detector.url_list",
    "value": {
      "displayName": "BlockUrlDetector",
      "description": "Blocked urls for security reasons",
      "urlList": {
        "urls": [
          "www.medium.com",
          "medium.com",
          "wikipedia.org"
        ]
      }
    }
  }
}

דוגמה 2: כלל DLP

{
  "type": "ADMIN",
  "customer": "customers/<CUSTOMER_ID>",
  "policyQuery": {
    "query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('<ORG_UNIT_ID>'))",
    "orgUnit": "orgUnits/<ORG_UNIT_ID>",
    "sortOrder": 1
  },
  "setting": {
    "type": "settings/rule.dlp",
    "value": {
      "display_name": "TestRule",
      "description": "GoogleSecOps URL Blocklist Rule. Keeps state of blocked URLs. Manual modification is not advised",
      "triggers": [
        "google.workspace.chrome.url.v1.navigation"
      ],
      "condition": {
        "contentCondition": "url.matches_url_list('policies/<DETECTOR_POLICY_ID>')"
      },
      "action": {
        "chromeAction": {
          "blockContent": {
            "actionParams": {
              "customEndUserMessage": {
                "unsafeHtmlMessageBody": "(EQ)🚫 BlockedAccess denied."
              }
            }
          }
        }
      },
      "state": "ACTIVE"
    }
  }
}

פלט של פעולות

הפעולה Create Policy מספקת את הפלט הבא:

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

בדוגמה הבאה מוצג פלט תוצאת ה-JSON שמתקבל כשמשתמשים בפעולה Create Policy:

{
  "type": "ADMIN",
  "customer": "customers/<CUSTOMER_ID>",
  "policyQuery": {
    "query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('<ORG_UNIT_ID>'))",
    "orgUnit": "orgUnits/<ORG_UNIT_ID>"
  },
  "setting": {
    "type": "settings/rule.dlp",
    "value": {
      "display_name": "test_create_rule",
      "triggers": [
        "google.workspace.chrome.file.v1.download"
      ],
      "state": "ACTIVE",
      "action": {
        "chromeAction": {
          "warnUser": {}
        }
      }
    }
  }
}
הודעות פלט

הפעולה Create Policy יכולה להחזיר את הודעות הפלט הבאות:

הודעת פלט תיאור ההודעה

Successfully added a new policy in Cloud Identity.

הפעולה הסתיימה בהצלחה.
Error executing action "Create Policy". Reason: ERROR_REASON

הפעולה נכשלה.

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

תוצאת סקריפט

בטבלה הבאה מפורט הערך של פלט התוצאה של הסקריפט כשמשתמשים בפעולה Create Policy:

שם התוצאה של הסקריפט ערך
is_success true או false

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

משתמשים בפעולה List Policies כדי לאחזר רשימה של מדיניות קיימת מ-Cloud Identity.

הפעולה הזו לא מופעלת על ישויות ב-Google SecOps.

הוספת נתונים לפעולה

הפעולה List Policies (הצגת רשימת כללי המדיניות) דורשת את הפרמטרים הבאים:

פרמטר תיאור
Organization Unit Name

חובה.

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

Policy Type Filter

זה שינוי אופציונלי.

סוג המדיניות שמשמש לסינון הרשימה. ערכים אפשריים: Admin,‏ System או Both.

ערך ברירת המחדל הוא Both.

Settings Type Filter

זה שינוי אופציונלי.

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

Settings Display Name Filter

זה שינוי אופציונלי.

רשימה מופרדת בפסיקים של שמות לתצוגה שמשמשת לסינון הגדרות המדיניות.

Max Results To Return

זה שינוי אופציונלי.

המספר המקסימלי של תוצאות שיוחזרו להרצת הפעולה. ערך ברירת המחדל הוא 50. הערך המקסימלי הוא 100.

פלט של פעולות

הפעולה List Policies מספקת את הפלט הבא:

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

בדוגמה הבאה מוצג פלט תוצאת ה-JSON שמתקבל כשמשתמשים בפעולה List Policies:

[
  {
    "name": "policies/123",
    "customer": "customers/123",
    "type": "ADMIN",
    "policy_query": {
      "query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('12345'))",
      "orgUnit": "orgUnits/12345",
      "sortOrder": 1
    },
    "setting": {
      "type": "settings/rule.dlp",
      "value": {
        "display_name": "Test DLP Rule"
      }
    }
  }
]
הודעות פלט

הפעולה List Policies יכולה להחזיר את הודעות הפלט הבאות:

הודעת פלט תיאור ההודעה

Successfully listed policies based on the provided criteria in Cloud Identity.

No policies found based on the provided criteria in Cloud Identity.

הפעולה הסתיימה בהצלחה.
Error executing action "List Policies". Reason: ERROR_REASON

הפעולה נכשלה.

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

תוצאת סקריפט

בטבלה הבאה מפורט הערך של פלט תוצאת הסקריפט כשמשתמשים בפעולה List Policies:

שם התוצאה של הסקריפט ערך
is_success true או false

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