שילוב של Cloud Identity עם Google SecOps
במאמר הזה מוסבר איך לשלב את Cloud Identity עם Google Security Operations.
תרחישים לדוגמה
השילוב של Cloud Identity משתמש ביכולות של Google SecOps כדי לתמוך בתרחישים הבאים:
- ניהול אמצעי בקרת גישה: יצירה ועדכון של הגדרות IAM ישירות מתוך פלייבוק חקירה.
- הגדרות של מדיניות ביקורת: הצגת מידע על כללי מדיניות זמינים למעקב אחרי שינויים בגישה.
- ניהול מאפיינים של רשימת גלאים: הוספת ישויות ואינדיקטורים לרשימות ספציפיות של כתובות URL של גלאים לצורך מעקב.
לפני שמתחילים
לפני שמגדירים את השילוב של Cloud Identity בפלטפורמת Google SecOps, צריך לוודא שהסביבה מוגדרת לפי השלבים הבאים:
- יוצרים חשבון שירות.
- הענקת גישה ברמת הדומיין לחשבון השירות
- מפעילים את ממשקי ה-API הנדרשים בפרויקט.
- בוחרים אחת משיטות האימות הבאות ומגדירים אותה:
- אפשרות 1: מפתח JSON: השיטה הזו מסתמכת על קובץ מפתח סודי סטטי לטווח ארוך. השתמשו בשיטה הזו רק אם Workload Identity לא זמין בסביבה שלכם.
- אפשרות 2: Workload Identity (מומלץ): בשיטה הזו משתמשים בטוקני גישה זמניים לטווח קצר באמצעות התחזות לחשבון שירות, כך שאין צורך לאחסן סודות.
יצירה של חשבון שירות
כדי ליצור חשבון שירות לשילוב, מבצעים את השלבים הבאים:
במסוף Google Cloud , נכנסים לדף IAM & Admin > Service Accounts ובוחרים את הפרויקט.
לוחצים על Create service account.
מזינים שם ותיאור ולוחצים על סיום כדי ליצור את החשבון.
הענקת גישה ברמת הדומיין לחשבון השירות
- במסוף Google Admin של הדומיין, נכנסים אל תפריט ראשי > אבטחה > אפשרויות לניהול השימוש בנתונים > אמצעי בקרה לממשקי API.
- בחלונית Domain wide delegation, לוחצים על Manage Domain Wide Delegation.
- לוחצים על הוספה.
- בשדה Client ID, מזינים את מזהה הלקוח שקיבלתם בקטע יצירת חשבון שירות.
בשדה OAuth Scopes, מזינים את הרשימה הבאה של היקפי ההרשאות שנדרשים לאפליקציה, כשהם מופרדים בפסיקים:
https://www.googleapis.com/auth/cloud-platform, https://www.googleapis.com/auth/cloud-identity.policies, https://www.googleapis.com/auth/admin.directory.orgunitלוחצים על Authorize.
עכשיו לחשבון השירות יש הרשאה לגשת לנתונים בדומיין באמצעות ההיקפים שצוינו.
הפעלת ממשקי ה-API הנדרשים בפרויקט
במסוף Google Cloud , נכנסים לדף APIs & Services.
לוחצים על Enable APIs and Services.
מחפשים את ממשקי ה-API הבאים ומפעילים אותם בפרויקט:
- Admin SDK API (
admin.googleapis.com) - Cloud Identity API (
cloudidentity.googleapis.com)
- Admin SDK API (
הגדרת מפתח JSON
אתם יכולים לאמת את השילוב באמצעות קובץ מפתח JSON סטטי או באמצעות איחוד שירותי אימות הזהות של עומסי עבודה. כדי למקסם את אבטחת הסביבה, השתמשו בשיטה Workload Identity. השתמשו בשיטת מפתח ה-JSON רק אם התשתית שלכם לא תומכת ב-Workload Identity, כי מפתחות סטטיים דורשים רוטציה ידנית ומגבירים את הסיכון לחשיפת פרטי הכניסה.
כדי ליצור את קובץ מפתח ה-JSON שנדרש לאימות השילוב, מבצעים את השלבים הבאים:
במסוף Google Cloud , נכנסים לדף IAM & Admin > Service Accounts ובוחרים את חשבון השירות שיצרתם.
עוברים לכרטיסייה Keys.
לוחצים על Add key.
לוחצים על Create new key.
בוחרים באפשרות JSON בתור סוג המפתח ולוחצים על Create. קובץ ה-JSON יורד למחשב.
מעתיקים את כל התוכן של הקובץ הזה ומדביקים אותו ב-
User's Service Account JSONבמהלך הגדרת השילוב.
הגדרת הרשאות ב-Cloud Identity
כדי להגדיר את הרשאות האדמין שהשילוב דורש כדי לנהל את המשאבים הארגוניים:
- במסוף Google Admin, נכנסים אל חשבון > תפקידי אדמין.
- לוחצים על תפקיד חדש.
- נותנים שם לתפקיד החדש בהתאמה אישית ולוחצים על המשך.
- בדף בחירת הרשאות, עוברים לקטע ההרשאות של Admin API.
- בקטע הרשאות ל-Admin API, בוחרים את ההרשאות הבאות:
Organization UnitsUsersGroups
- לוחצים על Continue.
- כדי ליצור תפקיד חדש בהתאמה אישית, לוחצים על Create Role.
הקצאת התפקיד בהתאמה אישית למשתמש
כדי להקצות את התפקיד לחשבון משתמש, ולתת הרשאה לשילוב לבצע פעולות בשמכם:
- כדי ליצור משתמש חדש, עוברים לדף ספרייה > משתמשים.
- מוסיפים משתמש חדש שמשויך לחשבון השירות.
- פותחים את ההגדרות של המשתמש החדש שנוצר. הכרטיסייה של חשבון המשתמש נפתחת.
- לוחצים על תפקידים והרשאות של אדמין.
- לוחצים על סמל העריכה עריכה.
- בוחרים את התפקיד בהתאמה אישית שיצרתם.
- בתפקיד שנבחר, מעבירים את המתג למצב Assigned (הוקצה).
הגדרת פרטי הכניסה של Workload Identity
כדי לאמת את השילוב, אפשר לבחור בשיטה הזו או בשיטת מפתח ה-JSON. השימוש ב-Workload Identity הוא הגישה המומלצת והמאובטחת יותר, כי הוא משתמש בטוקני גישה זמניים לטווח קצר באמצעות התחזות לחשבון שירות, וכך ממזער את הסיכונים לחשיפת פרטי כניסה סודיים לטווח ארוך.
זיהוי המופע הייחודי של הזהות
כדי להשתמש ב-Workload Identity, אתם צריכים לתת למכונה של Google SecOps הרשאה להתחזות לחשבון השירות שלכם. בשלב הזה המכונה מקבלת גישה מאובטחת למשאבים של Google Cloud.
- ב-Google SecOps, עוברים אל Content Hub > Response Integrations.
- בוחרים את השילוב שרוצים להגדיר ומזינים את כתובת האימייל של חשבון השירות בשדה
Workload Identity Email. - בשדה
Delegated Email, מזינים את כתובת האימייל שהשילוב יתחזה אליה. - לוחצים על שמירה > בדיקה. הבדיקה צפויה להיכשל.
לוחצים על close_small משמאל ל-Test ומחפשים בהודעת השגיאה את כתובת האימייל של הזהות שמתחילה ב-
gke-init-python@...או ב-soar-python@....מעתיקים את כתובת האימייל הייחודית הזו.
אישור זהות המכונה ב- Google Cloud
אחרי שמאחזרים את הזהות הייחודית של המכונה של Google SecOps, צריך לתת לה הרשאה לגשת למשאבים של Google Cloud . השלב הזה מאפשר התחזות לחשבון שירות, כך שהפלטפורמה יכולה ליצור אסימונים לטווח קצר ולפעול בשמכם בלי צורך במפתחות סטטיים.
במסוף Google Cloud , נכנסים לדף IAM & Admin > Service Accounts.
בוחרים את חשבון השירות הרצוי ועוברים אל Permissions > Grant Access.
מדביקים את כתובת האימייל הייחודית בשדה New principals ומקצים את התפקיד Service Account Token Creator (
roles/iam.serviceAccountTokenCreator).
פרמטרים של שילוב
כדי לשלב את Cloud Identity, צריך להגדיר את הפרמטרים הבאים:
| פרמטר | תיאור |
|---|---|
Service Account JSON File Content |
זה שינוי אופציונלי. התוכן של קובץ ה-JSON של מפתח חשבון השירות. אפשר להגדיר את הפרמטר הזה או את Workload Identity Email. כדי להשתמש בשיטה הזו, מדביקים את כל מחרוזת ה-JSON מקובץ המפתח שהורדתם כשיצרתם את חשבון השירות. |
Workload Identity Email |
זה שינוי אופציונלי. כתובת האימייל של הלקוח בחשבון השירות. אפשר להגדיר את הפרמטר הזה או את תוכן קובץ ה-JSON של חשבון השירות. כדי להשתמש בשיטה הזו להתחזות לחשבון שירות, צריך להקצות את התפקיד "יצירת אסימונים בחשבון שירות" לזהות של המכונה של Google SecOps בחשבון השירות. |
Delegated Email |
חובה. כתובת האימייל שבה השילוב משתמש כדי לבצע פעולות. חשוב לוודא שלחשבון הזה יש את ההרשאות המתאימות שהוקצו לו בסביבה שלכם כדי לבצע את משימות השילוב הנדרשות. |
Verify SSL |
זה שינוי אופציונלי. אם האפשרות הזו נבחרת, השילוב מאמת את אישור ה-SSL בזמן ההתחברות לשרת Cloud Identity. מופעלת כברירת מחדל. |
איך מגדירים שילובים ב-Google SecOps
אם צריך, אפשר לבצע שינויים בשלב מאוחר יותר. אחרי שמגדירים מופע של אינטגרציה, אפשר להשתמש בו בפלייבוקים. במאמר תמיכה במספר מופעים מוסבר איך להגדיר מספר מופעים ולתמוך בהם.
פעולות
מידע נוסף על פעולות זמין במאמרים מענה לפעולות בהמתנה משולחן העבודה והפעלה ידנית של פעולה בבקשת התמיכה.
פינג
משתמשים בפעולה Ping כדי לבדוק את הקישוריות ל-Cloud Identity.
הפעולה הזו לא פועלת על ישויות של Google SecOps.
קלט של הפעולה
לא נדרשים פרמטרים של קלט לפעולה הזו.
ערכי פלט של פעולות
הפעולה פינג מספקת את הפלטים הבאים:
| סוג הפלט של הפעולה | זמינות |
|---|---|
| חיבור לקיר של המארז | לא זמין |
| קישור ללוח הפניות | לא זמין |
| שולחן קונסולה צמוד לקיר | לא זמין |
| טבלת העשרה | לא זמין |
| תוצאת JSON | לא זמין |
| הודעות פלט | יש גישה |
| תוצאת הסקריפט | יש גישה |
הודעות פלט
הפעולה Ping יכולה להחזיר את הודעות הפלט הבאות:
| הודעת פלט | תיאור ההודעה |
|---|---|
|
הפעולה בוצעה בהצלחה. |
Failed to connect to the Cloud Identity server! Error is ERROR_REASON |
הפעולה נכשלה. בודקים את החיבור לשרת, את הפרמטרים של הקלט או את פרטי הכניסה. |
תוצאת הסקריפט
בטבלה הבאה מפורטים הערכים של פלט הסקריפט כשמשתמשים בפעולה פינג:
| שם תוצאת הסקריפט | ערך |
|---|---|
is_success |
true או false |
הוספת ישות לרשימת כתובות ה-URL של הגלאי
כדי להוסיף ישויות לרשימת הזיהוי של מדיניות Cloud Identity, משתמשים בפעולה Add Entity To Detector URL List.
הפעולה הזו פועלת בישויות הבאות של Google SecOps:
- כתובת URL
- דומיין
קלט של הפעולה
כדי להשתמש בפעולה Add Entity To Detector URL List, צריך להגדיר את הפרמטרים הבאים:
| פרמטר | תיאור |
|---|---|
Detector Policy ID |
חובה. המזהה הייחודי של מדיניות הגלאי שרוצים לעדכן. |
URL |
זה שינוי אופציונלי. רשימה מופרדת בפסיקים של כתובות URL שרוצים להוסיף לרשימת הגלאים. |
Domain |
זה שינוי אופציונלי. רשימה מופרדת בפסיקים של דומיינים שצריך להוסיף לרשימת הגלאים. |
ערכי פלט של פעולות
הפעולה Add Entity To Detector URL List מספקת את הפלט הבא:
| סוג הפלט של הפעולה | זמינות |
|---|---|
| חיבור לקיר של המארז | לא זמין |
| קישור ללוח הפניות | לא זמין |
| שולחן קונסולה צמוד לקיר | לא זמין |
| טבלת העשרה | לא זמין |
| תוצאת JSON | יש גישה |
| הודעות פלט | יש גישה |
| תוצאת הסקריפט | יש גישה |
תוצאת JSON
הדוגמה הבאה מראה את פלט התוצאה בפורמט JSON שמתקבל כשמשתמשים בפעולה Add Entity To Detector URL List:
{
"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 יכולה להחזיר את הודעות הפלט הבאות:
| הודעת פלט | תיאור ההודעה |
|---|---|
|
הפעולה בוצעה בהצלחה. |
Error executing action "Add Entity To Detector URL List". Reason: ERROR_REASON |
הפעולה נכשלה. בודקים את החיבור לשרת, את הפרמטרים של הקלט או את פרטי הכניסה. |
תוצאת הסקריפט
בטבלה הבאה מפורטים הערכים של פלט התוצאה של הסקריפט כשמשתמשים בפעולה Add Entity To Detector URL List:
| שם תוצאת הסקריפט | ערך |
|---|---|
is_success |
true או false |
קביעת מדיניות
משתמשים בפעולה יצירת מדיניות כדי ליצור רשומת מדיניות חדשה ב-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 יכולה להחזיר את הודעות הפלט הבאות:
| הודעת פלט | תיאור ההודעה |
|---|---|
|
הפעולה בוצעה בהצלחה. |
Error executing action "Create Policy". Reason: ERROR_REASON |
הפעולה נכשלה. בודקים את החיבור לשרת, את הפרמטרים של הקלט או את פרטי הכניסה. |
תוצאת הסקריפט
בטבלה הבאה מפורטים הערכים של פלט תוצאת הסקריפט כשמשתמשים בפעולה Create Policy:
| שם תוצאת הסקריפט | ערך |
|---|---|
is_success |
true או false |
רשימת כללי המדיניות
משתמשים בפעולה הצגת רשימת כללי מדיניות כדי לאחזר רשימה של כללי מדיניות קיימים מ-Cloud Identity.
הפעולה הזו לא פועלת על ישויות של Google SecOps.
קלט של הפעולה
הפעולה List Policies דורשת את הפרמטרים הבאים:
| פרמטר | תיאור |
|---|---|
Organization Unit Name |
חובה. שם היחידה הארגונית שרוצים להציג את כללי המדיניות שלה. |
Policy Type Filter |
זה שינוי אופציונלי. סוג המדיניות שמשמשת לסינון הרשימה. ערכים אפשריים: ערך ברירת המחדל הוא |
Settings Type Filter |
זה שינוי אופציונלי. תבנית הביטוי הרגולרי שמשמשת לסינון כללי מדיניות לפי סוג ההגדרות שלהם. המסנן הזה מוחל ישירות על בקשת ה-API. |
Settings Display Name Filter |
זה שינוי אופציונלי. רשימה מופרדת בפסיקים של שמות לתצוגה שמשמשים לסינון הגדרות המדיניות. |
Max Results To Return |
זה שינוי אופציונלי. מספר התוצאות המקסימלי שיוחזרו להרצת הפעולה. ערך ברירת המחדל הוא |
ערכי פלט של פעולות
הפעולה 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 יכולה להחזיר את הודעות הפלט הבאות:
| הודעת פלט | תיאור ההודעה |
|---|---|
|
|
הפעולה בוצעה בהצלחה. |
Error executing action "List Policies". Reason: ERROR_REASON |
הפעולה נכשלה. בודקים את החיבור לשרת, את הפרמטרים של הקלט או את פרטי הכניסה. |
תוצאת הסקריפט
בטבלה הבאה מפורטים הערכים של פלט תוצאות הסקריפט כשמשתמשים בפעולה List Policies:
| שם תוצאת הסקריפט | ערך |
|---|---|
is_success |
true או false |
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.