ניטור ומעקב אחר Microsoft Teams עם Azure Sentinel
איסוף הנתונים והמידע של Azure Sentinel נעשה באמצעות מקורות מידע שונים ומכיל קונקטורים אשר מבוססים לפי קטגוריות שונות, כמו: Service-2-Service, מקור מידע חיצוני מבוסס API, קוקנטור מבוסס Agent.
שירות Microsoft 365 נמנה על קונקטור מסוג Service to service כאשר מקורות המידע מבוססים על Solution ייעודי של Office 365 וזה כולל אינטגרציה לרכיבים השונים והקיימים של Microsoft 365, למשל:
Exchange Online
SharePoint Online
OneDrive for Business
לאחרונה (אוגוסט 2020) נכנס רכיב נוסף לאיסוף המידע כחלק מתוך אותו Solution של Office 365 והוא Microsoft Teams.
איסוף המידע של חבילת Office 365 שייך לקטגורית Security ואוסף לוגים השייכים אל Solutions ספצייפים של Office 365 ושל Security Insights כולל Record Types ייעודיים, המרכזיים שבהם:
Office 365 Activity logs
SigninLogs
AuditLogs
OfficeActivity
Microsoft Teams נכנס לאותו Solution, לאותם קטגוריות ולאותו סכימה קיימת של בסיס הנתונים המנטרים ואוספים מידע של Office 365, וכאשר מוסיפים Microsoft Teams כחלק מאותו Solution אנו למעשה אוספים מידע לפי כל אותם לוגים ולפי OfficeWorkload ייעודי.
הפעלה וניטור המידע
הפעלה, ניטור ואיסוף המידע של Microsoft Teams היא פשוטה ולאחר הפעלה קצרה והמתנה של פרק זמן מסוים ניתן להתחיל בניתוח המידע באמצעות KQL או באמצעות דוחות מבוססים Workbooks מובנים או מוקסטמים.
הפעלת Microsoft Teams בממשק Azure Sentinel היא פשוטה מאוד ובמידה והופעל קודם לכן איסוף מידע באמצעות Office 365 אז מדובר על פעולה קצרה עוד יותר.
במידה והופעל איסוף מידע של Office 365 קודם לכן כל מה שצריך לבצע סימון Microsoft Teams
לאחר הפעלה מומלץ להמתין עד 45 דקות בכדי לקבל מידע ראשוני ובכדי לבצע תשאול אמצעות KQL.
לשחק עם KQL
תשאול נתונים באמצעות KQL אינו מוגבל וישנם אינספור דרכים לבצע תשאול Record Types או כל טבלה שהיא אשר קיימת בבסיס הנתונים, וניתן להתחיל מפקודות בסיסיות ועד פקודות מתקדמות. כמה דוגמאות לתשאול מול Microsoft Teams.
בדוגמה הבאה נוכל לתשאל בצורה פשוטה OfficeWorkload של MicrosoftTeams ולפי מספר ימים, או תשאול המבוסס על RecordType.
לחלופין נוכל לתשאל את כמות האובייקטים הקיימים לפי count
OfficeActivity
| where OfficeWorkload == “MicrosoftTeams”
| where TimeGenerated > ago(10d)OfficeActivity
| where RecordType == “MicrosoftTeams”
search in (OfficeActivity)”MicrosoftTeams” | count

בנוסף, נוכל לבצע תשאול מתקדם יותר לפי הפקודות הבאות ודרכו נוכל לקבל מידע ספציפי יותר לגבי כמות הלוגים לפי זמנים, לפי התאריך שבהם נוצרו הפעילויות ולפי OfficeWorkload של MicrosoftTeams
let Now = now();
(range TimeGenerated from ago(10d) to Now-1d step 1d
| extend Count = 0
| union isfuzzy=true (OfficeActivity
| where OfficeWorkload == “MicrosoftTeams”
| summarize Count = count() by bin_at(TimeGenerated, 1d, Now))
| summarize Count=max(Count) by bin_at(TimeGenerated, 1d, Now)
| project Value = iff(isnull(Count), 0, Count), Time = TimeGenerated, Legend = “MicrosoftTeams”, Legend1 = “OfficeWorkload”)
לאחר שישנם נתונים קיימים אפשר להמשיך בתשאולים נוספים או ביצירת חוקי Analytics או יצירת Hunting וכן הלאה, כלומר ברגע שהמידע קיים ברמת Log Analytics אנו יכולים לשבצע אינספור פעולות של Azure Sentinel.
דוגמה נוספת והיא תשאול משתמשים שהתווספו לקבוצות בעשרת הימים האחרונים
OfficeActivity
| where TimeGenerated > ago(10d)
| where Operation =~ “MemberAdded”
| project TimeGenerated, Operation, UserType, UserId, Members, TeamName
דוגמה נוספת והיא תשאול של כל הפעולות אשר נעשות מול Microsoft Teams
OfficeActivity
| where TimeGenerated > ago(10d)
| where RecordType == “MicrosoftTeams”
| distinct Operation
טיפ: נוכל להוריד את השורה של distinct Operation ולהוסיף במקומה סיכום של הפעולות אשר קיימות עם כמות לצד כל פעולה באמצעות השורה הבאה summarize count() by Operation
דוגמה נוספת שניתן להריץ ולקבל מידע לגבי שינויים ברמת Roles
OfficeActivity
| where TimeGenerated > ago(1m)
| where Operation =~ “MemberRoleChanged”
| where Members contains “Role” and Members contains “1”
לאחר שיש לנו את המידע אנו יכולים לתשאל את כל אותן פעולות מול Microsoft Teams ועל סמך הפעולות הנ”ל נוכל ליצור חוקים ודוחות מבוססים Analytics + Workbooks + Hunting. (במאמר הבא).