איסוף יומנים של הקשר משתמש ב-Okta
במאמר הזה מוסבר איך אוספים יומנים של הקשר משתמש ב-Okta על ידי הגדרת פיד של Google Security Operations באמצעות API של צד שלישי.
לפני שמתחילים
חשוב לוודא שמתקיימות דרישות הסף הבאות:
- מופע של Google SecOps
- גישה עם הרשאות ל-Okta tenant או למסוף Admin
- הרשאות ליצירת טוקן API ב-Okta
הגדרת רשימת היתרים של כתובות IP
לפני שיוצרים את הפיד, צריך להוסיף לרשימת ההיתרים את טווחי כתובות ה-IP של Google SecOps בחומת האש או בהגדרות הרשת של Okta.
קבלת טווחי כתובות IP של Google SecOps
- מאחזרים טווחי כתובות IP מקובץ ה-JSON של טווחי כתובות ה-IP של Google.
הוספת טווחי כתובות IP להקשר המשתמש ב-Okta
- נכנסים למסוף Admin של Okta.
- עוברים אל אבטחה > רשתות.
- בקטע הגבלות על כתובות IP, לוחצים על עריכה.
- מוסיפים כל טווח כתובות IP של Google SecOps בסימון CIDR לכתובות ה-IP המהימנות.
- לוחצים על Save.
הגדרת גישה ל-Okta User Context API
כדי לאפשר ל-Google SecOps לשלוף נתוני הקשר של משתמשים, צריך ליצור אסימון API עם הרשאות קריאה.
יצירת טוקן API
- נכנסים למסוף Admin של Okta.
- עוברים אל אבטחה > API.
- לוחצים על הכרטיסייה Tokens (אסימונים).
- לוחצים על יצירת טוקן.
- מספקים את פרטי ההגדרה הבאים:
- שם: מזינים שם תיאורי (לדוגמה,
Google SecOps Integration). - תיאור (אופציונלי): מזינים תיאור.
- שם: מזינים שם תיאורי (לדוגמה,
- לוחצים על יצירת טוקן.
תיעוד פרטי הכניסה ל-API
אחרי שיוצרים את אסימון ה-API, מקבלים את פרטי הכניסה הבאים:
- טוקן API: הערך של טוקן ה-API (לדוגמה,
00QCGr-1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1)
הרשאות ה-API הנדרשות
נדרשות ההרשאות הבאות ב-Okta עבור טוקן ה-API:
| הרשאה/תפקיד | רמת גישה | מטרה |
|---|---|---|
| אדמין עם הרשאת קריאה בלבד | קריאה | גישה לנתונים של פרופיל המשתמש |
| סופר-אדמין | קריאה | גישה מלאה לכל נתוני המשתמשים |
הגדרת פידים
כדי להגדיר פיד:
- עוברים אל SIEM Settings > Feeds (הגדרות SIEM > פידים).
- לוחצים על הוספת פיד חדש.
- בדף הבא, לוחצים על הגדרת פיד יחיד.
- בשדה שם הפיד, מזינים שם לפיד (לדוגמה,
Okta User Context). - בוחרים באפשרות API של צד שלישי בתור סוג המקור.
- בוחרים באפשרות Okta User Context (הקשר של משתמש Okta) בתור סוג היומן.
- לוחצים על הבא.
מציינים ערכים לפרמטרים הבאים של הקלט:
כותרת HTTP של אימות: מזינים את פרטי הכניסה לאימות בפורמט הבא:
Authorization:SSWS your-api-token- לדוגמה:
Authorization:SSWS 00QCGr-1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1
- לדוגמה:
שם המארח של ה-API: שם הדומיין המוגדר במלואו של מופע Okta (למשל example.okta.com, ולא דומיין מותאם אישית שהוגדר).
- לדוגמה:
company.okta.com
- לדוגמה:
שדה הפניה למזהה המנהל: מזהה שנדרש כשמשתמשים במזהה שאינו של Okta כדי להפנות למנהלים (אופציונלי).
מרחב השמות של הנכס: מרחב השמות של הנכס.
תוויות להוספה: התווית שתתווסף לאירועים מהפיד הזה.
לוחצים על הבא.
בודקים את ההגדרות של הפיד החדש במסך סיום ולוחצים על שליחה.
אחרי ההגדרה, הפיד מתחיל לאחזר יומנים מהמופע של Okta User Context בסדר כרונולוגי.
נקודות קצה אזוריות
ב-Okta משתמשים בנקודות קצה שונות ל-API בהתאם לאזור של הארגון:
| אזור | כתובת URL בסיסית / שם מארח |
|---|---|
| ארה"ב (ברירת מחדל) | {org-name}.okta.com |
| האיחוד האירופי (EMEA) | {org-name}.okta-emea.com |
| אסיה-פסיפיק (APAC) | {org-name}.okta.com.au |
| תצוגה מקדימה (בדיקה) | {org-name}.oktapreview.com |
משתמשים בשם המארח שמתאים לאזור של מופע Okta.
מגבלות קצב של API
ל-Okta API יש את מגבלות הקצב הבאות:
- מגבלת קצב ברירת מחדל: 600 בקשות לדקה לרוב נקודות הקצה
- thought System Log API: 60 בקשות לדקה
- נקודות קצה של משתמשים: 600 בקשות לדקה
מערכת Google SecOps מטפלת אוטומטית בהגבלת קצב ליצירת בקשות באמצעות נסיגה אקספוננציאלית. אם נתקלים בבעיות, אפשר לפנות לתמיכה של Okta כדי להגדיל את מכסת בקשות ה-API.
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | היגיון |
|---|---|---|
activated |
event.idm.entity.entity.labels |
אם activated קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח activated. |
created |
event.idm.entity.entity.labels |
אם created קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח "created". |
profile.costCenter |
event.idm.entity.entity.labels |
אם profile.costCenter קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח costCenter. |
profile.Function |
event.idm.entity.entity.labels |
אם profile.Function קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח "Function". |
statusChanged |
event.idm.entity.entity.labels |
אם statusChanged קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח statusChanged. |
type.id |
event.idm.entity.entity.labels |
אם type.id קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח type_id. |
profile.location |
event.idm.entity.entity.location.name |
הערך נלקח מ-profile.location. |
profile.AD_ObjectGUID |
event.idm.entity.entity.user.attribute.labels |
אם profile.AD_ObjectGUID קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח AD_ObjectGUID. |
profile.ADpwdLastSet |
event.idm.entity.entity.user.attribute.labels |
אם profile.ADpwdLastSet קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח ADpwdLastSet. |
profile.AFF_Code |
event.idm.entity.entity.user.attribute.labels |
אם הפרמטר profile.AFF_Code קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח AFF_Code. |
profile.Desk_Location_WD |
event.idm.entity.entity.user.attribute.labels |
אם profile.Desk_Location_WD קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח Desk_Location_WD. |
profile.Mailing_Address_WD |
event.idm.entity.entity.user.attribute.labels |
אם profile.Mailing_Address_WD קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח "Mailing_Address_WD". |
profile.Manager_UPN |
event.idm.entity.entity.user.attribute.labels |
אם profile.Manager_UPN קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח Manager_UPN. |
profile.PRIVATE_CONF_Profile |
event.idm.entity.entity.user.attribute.labels |
אם profile.PRIVATE_CONF_Profile קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח PRIVATE_CONF_Profile. |
profile.Region_WD |
event.idm.entity.entity.user.attribute.labels |
אם profile.Region_WD קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח Region_WD. |
profile.Subsidiary_Company |
event.idm.entity.entity.user.attribute.labels |
אם profile.Subsidiary_Company קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח Subsidiary_Company. |
profile.Telephone_Work |
event.idm.entity.entity.user.attribute.labels |
אם profile.Telephone_Work קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח Telephone_Work. |
profile.Temp_WD_Primary_Email |
event.idm.entity.entity.user.attribute.labels |
אם profile.Temp_WD_Primary_Email קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח Temp_WD_Primary_Email. |
profile.VMware_WS1_Username |
event.idm.entity.entity.user.attribute.labels |
אם profile.VMware_WS1_Username קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח "VMware_WS1_Username". |
profile.Work_Street_Address_WD |
event.idm.entity.entity.user.attribute.labels |
אם profile.Work_Street_Address_WD קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח Work_Street_Address_WD. |
profile.Workato_WD_Primary_Email |
event.idm.entity.entity.user.attribute.labels |
אם profile.Workato_WD_Primary_Email קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח Workato_WD_Primary_Email. |
profile.Workday_ID |
event.idm.entity.entity.user.attribute.labels |
אם profile.Workday_ID קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח Workday_ID. |
profile.Worker_Type_WD |
event.idm.entity.entity.user.attribute.labels |
אם profile.Worker_Type_WD קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח Worker_Type_WD. |
profile.businessUnit |
event.idm.entity.entity.user.attribute.labels |
אם profile.businessUnit קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח businessUnit. |
profile.companyName |
event.idm.entity.entity.user.attribute.labels |
אם profile.companyName קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח "companyName". |
profile.contingentSupplierName |
event.idm.entity.entity.user.attribute.labels |
אם profile.contingentSupplierName קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח "contingentSupplierName". |
profile.conversationId |
event.idm.entity.entity.user.attribute.labels |
אם profile.conversationId קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח conversationId. |
profile.distinguishedName |
event.idm.entity.entity.user.attribute.labels |
אם profile.distinguishedName קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח 'distinguishedName'. |
profile.division |
event.idm.entity.entity.user.attribute.labels |
אם profile.division קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח "division". |
profile.emailPrefix |
event.idm.entity.entity.user.attribute.labels |
אם profile.emailPrefix קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח "emailPrefix". |
profile.employeeType |
event.idm.entity.entity.user.attribute.labels |
אם profile.employeeType קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח employeeType. |
profile.homePostalAddress |
event.idm.entity.entity.user.attribute.labels |
אם profile.homePostalAddress קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח homePostalAddress. |
profile.isManager |
event.idm.entity.entity.user.attribute.labels |
אם profile.isManager קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח isManager. |
lastLogin |
event.idm.entity.entity.user.attribute.labels |
אם lastLogin קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח lastLogin. |
profile.leaveOfAbsence |
event.idm.entity.entity.user.attribute.labels |
אם profile.leaveOfAbsence קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח leaveOfAbsence. |
profile.managerDn |
event.idm.entity.entity.user.attribute.labels |
אם profile.managerDn קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח managerDn. |
profile.payGroup |
event.idm.entity.entity.user.attribute.labels |
אם profile.payGroup קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח "payGroup". |
profile.wdemployeeID |
event.idm.entity.entity.user.attribute.labels |
אם profile.wdemployeeID קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח wdemployeeID. |
profile.zipCode |
event.idm.entity.entity.user.attribute.labels |
אם profile.zipCode קיים, הערך שלו מתווסף כצמד מפתח/ערך עם המפתח zipCode. |
profile.userType |
event.idm.entity.entity.user.attribute.roles |
אם profile.userType קיים, הערך שלו מתווסף למערך של תפקידים. |
profile.organization, profile.company |
event.idm.entity.entity.user.company_name |
הערך נלקח מ-profile.organization, או מ-profile.company אם הערך הראשון לא קיים. |
profile.department |
event.idm.entity.entity.user.department |
הערך נלקח מ-profile.department. |
profile.email, profile.secondEmail, profile.login |
event.idm.entity.entity.user.email_addresses |
הערכים מ-profile.email, מ-profile.secondEmail ומ-profile.login (אם מדובר באימייל ולא בכפילות) מאוחדים בשדה הזה. |
profile.employeeNumber |
event.idm.entity.entity.user.employee_id |
הערך נלקח מ-profile.employeeNumber. |
profile.firstName, profile.Preferred_First_Name |
event.idm.entity.entity.user.first_name |
הערך נלקח מ-profile.firstName, או מ-profile.Preferred_First_Name אם הערך הראשון לא קיים. |
profile.EmployeeWorkGroup |
event.idm.entity.entity.user.group_identifiers |
הערך נלקח מ-profile.EmployeeWorkGroup. |
profile.HireDate, profile.hiredate |
event.idm.entity.entity.user.hire_date |
הערך מנותח מ-profile.HireDate או מ-profile.hiredate אם הראשון לא קיים. |
profile.lastName, profile.preferred_Last_Name |
event.idm.entity.entity.user.last_name |
הערך נלקח מ-profile.lastName אם profile.lastName או profile.preferred_Last_Name קיימים. |
lastLogin |
event.idm.entity.entity.user.last_login_time |
הערך מנותח מ-lastLogin. |
passwordChanged |
event.idm.entity.entity.user.last_password_change_time |
הערך מנותח מ-passwordChanged. |
profile.manager, profile.managerEmail, profile.managerId |
event.idm.entity.entity.user.managers |
מאוכלס באובייקט שמכיל את user_display_name מ-profile.manager, את email_addresses מ-profile.managerEmail ואת employee_id מ-profile.managerId. |
profile.city, profile.firstBaseCity |
event.idm.entity.entity.user.office_address.city |
הערך נלקח מ-profile.city, או מ-profile.firstBaseCity אם הערך הראשון לא קיים. |
profile.countryCode, profile.country |
event.idm.entity.entity.user.office_address.country_or_region |
הערך נלקח מ-profile.countryCode, או מ-profile.country אם הראשון לא קיים. |
profile.streetAddress |
event.idm.entity.entity.user.personal_address.name |
הערך נלקח מ-profile.streetAddress. |
profile.state |
event.idm.entity.entity.user.personal_address.state |
הערך נלקח מ-profile.state. |
profile.primaryPhone, profile.mobilePhone, profile.mobile |
event.idm.entity.entity.user.phone_numbers |
הערכים מהשדות profile.primaryPhone, profile.mobilePhone ו-profile.mobile משולבים בשדה הזה. |
profile.terminationDate, profile.terminationdate |
event.idm.entity.entity.user.termination_date |
הערך מנותח מ-profile.terminationDate או מ-profile.terminationdate אם הראשון לא קיים. |
profile.title |
event.idm.entity.entity.user.title |
הערך נלקח מ-profile.title. |
status |
event.idm.entity.entity.user.user_authentication_status |
ממופה מ-status: ACTIVE/RECOVERY/LOCKED_OUT/PASSWORD_EXPIRED -> ACTIVE; SUSPENDED -> SUSPENDED; DEPROVISIONED -> DELETED; אחרת UNKNOWN_AUTHENTICATION_STATUS. |
profile.displayName |
event.idm.entity.entity.user.user_display_name |
הערך נלקח מ-profile.displayName. |
profile.samAccountName, profile.samaccountname, profile.login, profile.ldapUid |
event.idm.entity.entity.user.userid |
השדות הבאים מאוכלסים לפי סדר העדיפות: profile.samAccountName, profile.samaccountname, profile.login (אם זה לא אימייל), profile.ldapUid (אם profile.login הוא לא אימייל). |
event.idm.entity.metadata.entity_type |
הערך שהוגדר הוא USER. |
|
id |
event.idm.entity.metadata.product_entity_id |
הערך נלקח מ-id. |
event.idm.entity.metadata.product_name |
הערך שהוגדר הוא Identity Cloud. |
|
event.idm.entity.metadata.vendor_name |
הערך שהוגדר הוא Okta. |
|
activated", "created", "statusChanged", and "type.id |
entity.entity.labels |
מופה מיומן השינויים |
profile.AD_ObjectGUID", "profile.ADpwdLastSet", "profile.AFF_Code", "profile.Desk_Location_WD", "profile.Mailing_Address_WD", "profile.Manager_UPN", "profile.PRIVATE_CONF_Profile", "profile.Region_WD", "profile.Subsidiary_Company", "profile.Telephone_Work", "profile.Temp_WD_Primary_Email", "profile.VMware_WS1_Username", "profile.Work_Street_Address_WD", "profile.Workato_WD_Primary_Email", "profile.Workday_ID", "profile.Worker_Type_WD", "profile.businessUnit", "profile.companyName", "profile.contingentSupplierName", "profile.conversationId", "profile.distinguishedName", "profile.division", "profile.emailPrefix", "profile.employeeType", "profile.homePostalAddress", "profile.isManager", "profile.leaveOfAbsence", "profile.managerDn", "profile.payGroup", "profile.wdemployeeID", and "profile.zipCode |
entity.entity.user.attribute.labels |
מופה מיומן השינויים |
profile.country |
entity.user.country |
מופה מיומן השינויים |
profile.firstBaseCity |
entity.user.firstBaseCity |
מופה מיומן השינויים |
profile.preferred_Last_Name |
entity.user.preferred_Last_Name |
מופה מיומן השינויים |
profile.EmployeeWorkGroup |
entity.user.EmployeeWorkGroup |
מופה מיומן השינויים |
profile.manager |
entity.user.managers.user_display_name |
מופה מיומן השינויים |
profile.organization |
entity.user.organization |
מופה מיומן השינויים |
profile.state |
entity.user.state |
מופה מיומן השינויים |
profile.streetAddress |
entity.user.streetAddress |
מופה מיומן השינויים |
profile.mobile |
entity.user.mobile |
מופה מיומן השינויים |
profile.managerEmail |
entity.user.managers.email_addresses |
מופה מיומן השינויים |
profile.managerId |
entity.user.managers.employee_id |
מופה מיומן השינויים |
profile.spotify_username |
entity.entity.labels |
מופה מיומן השינויים |
יומן שינויים
צפייה ביומן השינויים של כלי הניתוח הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.