
Office 365 और Azure लॉग संग्रह के लिए PowerShell मॉड्यूल

DFIR-O365RC को SSTIC 2021 (Symposium sur la sécurité des technologies de l'information et des communications) में प्रस्तुत किया गया था। प्रस्तुति की स्लाइड्स और रिकॉर्डिंग, फ्रेंच में, यहाँ उपलब्ध हैं।
⚠️ 31 मार्च, 2024 को, Microsoft ने प्रमाणीकरण विधि को अप्रचलित कर दिया जिसका उपयोग हम DFIR-O365RC के लिए करते थे। इसके कारण अगस्त 2024 में संस्करण 2.0.0 जारी किया गया, जिसमें प्रमाणीकरण में ब्रेकिंग चेंजेस और कोड का एक वैश्विक रिफैक्टरिंग शामिल है। ⚠️
DFIR-O365RC PowerShell मॉड्यूल फ़ंक्शनों का एक सेट है जो एक फोरेंसिक विश्लेषक को Microsoft 365 समझौतों के लिए प्रासंगिक लॉग एकत्र करने और Entra ID जाँच करने की अनुमति देता है।
लॉग JSON प्रारूप में उत्पन्न होते हैं और दो मुख्य डेटा स्रोतों से प्राप्त किए जाते हैं:
इन दो डेटा स्रोतों को विभिन्न एंडपॉइंट्स से क्वेरी किया जा सकता है:
* Office 365 Management API SIEM के साथ वास्तविक समय में डेटा का विश्लेषण करने के लिए है। DFIR-O365RC एक फोरेंसिक उपकरण है, इसका उद्देश्य Microsoft 365 वातावरण की वास्तविक समय में निगरानी करना नहीं है।
DFIR-O365RC निम्नलिखित से डेटा प्राप्त करेगा:
यदि आप Microsoft 365 दुर्भावनापूर्ण गतिविधि की जाँच कर रहे हैं, तो Search-O365 ( Exchange Online PowerShell से) Mailbox Audit Log भी प्राप्त करेगा, हालाँकि Search-MailboxAuditLog cmdlet अप्रचलित हो रहा है।
यदि आप DFIR-O365RC के साथ अन्य Azure संसाधनों की जाँच कर रहे हैं:
यह DFIR-O365RC का उपयोग करने का अनुशंसित तरीका है
बस टाइप करें :```bash sudo docker pull anssi/dfir-o365rc:latest sudo docker run --rm -v .:/mnt/host -it anssi/dfir-o365rc:latest
DFIR-O365RC उपयोग के लिए तैयार है:```bash
PowerShell 7.4.2
DFIR-O365RC: PowerShell module for Microsoft 365 and Entra ID log collection
https://github.com/ANSSI-FR/DFIR-O365RC
PS /mnt/host/output>
यदि आप अपनी Docker छवि मैन्युअल रूप से बनाना चाहते हैं, तो रिपॉजिटरी को क्लोन करें और छवि बनाने, कंटेनर चलाने और output/ फ़ोल्डर में एक वॉल्यूम माउंट करने के लिए docker compose (या पुराने docker-compose) का उपयोग करें:```bash
sudo docker compose build dfir-o365rc
sudo docker compose run dfir-o365rc
sudo docker-compose run dfir-o365rc
### PowerShell का उपयोग करना
आप मॉड्यूल को *PowerShell Desktop* और *PowerShell Core* पर स्थापित कर सकते हैं।
कृपया ध्यान दें कि `Connect-ExchangeOnline` cmdlet को [Microsoft .NET Framework 4.7.2 या उसके बाद के संस्करण की आवश्यकता है](https://learn.microsoft.com/en-us/powershell/exchange/exchange-online-powershell-v2?view=exchange-ps#windows)।
PowerShell गैलरी से मॉड्यूल स्थापित करने के लिए:```powershell
Install-Module -Name DFIR-O365RC
आप DFIR-O365RC रिपॉजिटरी को क्लोन करके, आवश्यक निर्भरताओं को स्थापित करके (DFIR-O365RC.psd1 देखें) और DFIR-O365RC निर्देशिका को अपने PowerShell मॉड्यूल पथों में से एक में जोड़कर मैन्युअल रूप से मॉड्यूल स्थापित कर सकते हैं।
एक बार मॉड्यूल आयात हो जाने के बाद, आपको एक Entra एप्लिकेशन बनाने की आवश्यकता होगी, जो आपके लिए लॉग संग्रह प्रक्रिया को संभालेगा।
ऐसा करने के लिए:
एक स्व-हस्ताक्षरित प्रमाणपत्र बनाएं और base64-एन्कोडेड सार्वजनिक भाग प्राप्त करें:
Linux पर, PowerShell Core या Docker कंटेनर का उपयोग करके: ```bash openssl req -new -x509 -newkey rsa:2048 -sha256 -days 365 -nodes -out exampleDFIRO365RC.crt -keyout exampleDFIRO365RC.key -batch openssl pkcs12 -inkey exampleDFIRO365RC.key -in exampleDFIRO365RC.crt -export -out exampleDFIRO365RC.pfx # Enter a password for the certificate openssl x509 -in exampleDFIRO365RC.crt -outform DER -out - | base64 | tr -d "\n"
विंडोज़ पर, PowerShell का उपयोग करते हुए: ```powershell $certificate = New-SelfSignedCertificate -Subject "CN=exampleDFIRO365RC" -KeySpec KeyExchange -NotBefore (Get-Date) -NotAfter (Get-Date).AddDays(365) $certificatePassword = Read-Host -MaskInput "Please enter a password for the certificate" $certificateSecurePassword = ConvertTo-SecureString -String $certificatePassword -AsPlainText -Force Export-PfxCertificate -Cert $certificate -FilePath exampleDFIRO365RC.pfx -Password $certificateSecurePassword Write-Host ([System.Convert]::ToBase64String($certificate.GetRawCertData()))
2) DFIR-O365RC मॉड्यूल से `New-Application` cmdlet का उपयोग करें: ```powershell
$certificateb64="<base64-encoded public part from step 1>"
New-Application -certificateb64 $certificateb64
वैकल्पिक रूप से, यदि आप किरायेदार की सदस्यताओं में लॉग एकत्र करने में सक्षम होना चाहते हैं (यदि आप Get-AzRMActivityLogs का उपयोग करने की योजना नहीं बनाते हैं तो इसकी आवश्यकता नहीं है): ```powershell
New-Application -certificateb64 $certificateb64 -subscriptions
वैकल्पिक रूप से, यदि आप टेनेंट के Azure DevOps संगठनों में लॉग एकत्र करने में सक्षम होना चाहते हैं (इसमें बहुत समय लग सकता है और यदि आप `Get-AzDevOpsActivityLogs` का उपयोग करने की योजना नहीं बनाते हैं तो इसकी आवश्यकता नहीं है): ```powershell
New-Application -certificateb64 $certificateb64 -organizations
एप्लिकेशन बनाने के लिए, आपको Azure में कई बार लॉग इन करना होगा, अत्यधिक विशेषाधिकार प्राप्त खाते का उपयोग करके।
एक बार एप्लिकेशन बन जाने पर, आपको लगभग इसी प्रकार का आउटपुट मिलेगा: ```powershell Done creating the application with the required permissions Please use the following identifiers: WARNING: AppID: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx WARNING: Tenant: example.onmicrosoft.com
### एप्लिकेशन को अपडेट करना
एप्लिकेशन बनाने के बाद, आप मॉड्यूल के `Update-Application` cmdlet का उपयोग करके इसके क्रेडेंशियल्स और अनुमतियों को अपडेट कर सकते हैं:
- आप एप्लिकेशन में एक नया प्रमाणपत्र जोड़ सकते हैं:
`Update-Application -certificateb64 <base64-एन्कोडेड सार्वजनिक भाग>`
- आप नई सब्सक्रिप्शन निर्दिष्ट कर सकते हैं जिनमें आप लॉग एकत्र करने में सक्षम होना चाहते हैं:
`Update-Application -subscriptions`
- आप नए Azure DevOps संगठन निर्दिष्ट कर सकते हैं जिनमें आप लॉग एकत्र करने में सक्षम होना चाहते हैं:
`Update-Application -organizations`
- आप एप्लिकेशन की अनुमतियों को अपडेट कर सकते हैं, जो विशेष रूप से उपयोगी है यदि आपके पास कोई पुराना एप्लिकेशन है और इसे बनाने के बाद से अनुमतियाँ अपडेट की गई हैं:
`Update-Application -permissions`
### एप्लिकेशन को हटाना
एक बार जब आप लॉग संग्रहण के साथ समाप्त हो जाते हैं, तो आप मॉड्यूल के `Remove-Application` cmdlet का उपयोग करके एप्लिकेशन को हटा सकते हैं।
एप्लिकेशन को हटाने के लिए, आपको **अत्यधिक विशेषाधिकार प्राप्त** खाते का उपयोग करके कई बार Azure में लॉग इन करना होगा।
यदि एप्लिकेशन सब्सक्रिप्शन या Azure DevOps संगठनों के लॉग एकत्र करने में सक्षम था, तो आपको `-organizations` और/या `-subscriptions` स्विच जोड़ने की आवश्यकता होगी।
## अनुमतियाँ और लाइसेंस आवश्यकताएँ
⚠️
संस्करण 2.0.0 से शुरू करते हुए, उपकरण अब [ऐप-केवल पहुँच / एप्लिकेशन अनुमतियों](https://learn.microsoft.com/en-us/entra/identity-platform/permissions-consent-overview#app-only-access-access-without-a-user) के साथ एक सर्विस प्रिंसिपल के संदर्भ में चल रहा है।
संस्करण 2.0.0 और उससे ऊपर का उपयोग करने के लिए, आपको [एक एप्लिकेशन बनाना](#creating-the-application) होगा।
एक बार एप्लिकेशन बन जाने के बाद, स्क्रिप्ट एप्लिकेशन के क्रेडेंशियल्स और अनुमतियों का उपयोग करके चलेगी।
⚠️
एप्लिकेशन को न्यूनतम आवश्यक अनुमति सेट के साथ बनाया जाएगा:
- `Office 365 Exchange Online` API के लिए `Exchange.ManageAsApp` (Exchange Online PowerShell cmdlets चलाने में सक्षम होने के लिए आवश्यक)
- `Microsoft Graph` API के लिए `AuditLog.Read.All` (Microsoft Entra लॉग संग्रहण के लिए आवश्यक)
- `Microsoft Graph` API के लिए `AuditLogsQuery.Read.All` (Purview का उपयोग करके यूनिफाइड ऑडिट लॉग संग्रहण के लिए आवश्यक)
- `Microsoft Graph` API के लिए `Application.Read.All` और `DelegatedPermissionGrant.Read.All` (एप्लिकेशन और सर्विस प्रिंसिपल से संबंधित Microsoft Entra लॉग के समृद्धिकरण के लिए आवश्यक)
- `Microsoft Graph` API के लिए `Device.Read.All` (डिवाइस से संबंधित Microsoft Entra लॉग के समृद्धिकरण के लिए आवश्यक)
- `Microsoft Graph` API के लिए `User.Read.All` (उपयोगकर्ताओं पर जानकारी प्राप्त करने के लिए आवश्यक)
- `Microsoft Graph` API के लिए `UserAuthenticationMethod.Read.All` (उपयोगकर्ताओं के प्रमाणीकरण विधियों पर जानकारी प्राप्त करने के लिए आवश्यक)
- `Microsoft Graph` API के लिए `Organization.Read.All` (टेनेंट पर सामान्य जानकारी प्राप्त करने के लिए आवश्यक)
- `Exchange Online` में `View-only audit logs` (`Search-UnifiedAuditLog` cmdlet का उपयोग करने के लिए आवश्यक)
वैकल्पिक रूप से (यदि `-subscriptions` स्विच का उपयोग कर रहे हैं):
- चयनित सब्सक्रिप्शन के उपसमूह के लिए: `Microsoft.Insights/eventtypes/*` पर `Reader` भूमिका (Azure Monitor गतिविधि लॉग प्राप्त करने के लिए आवश्यक)
वैकल्पिक रूप से (यदि `-organizations` स्विच का उपयोग कर रहे हैं):
- चयनित Azure DevOps सब्सक्रिप्शन के उपसमूह के लिए: `View audit log` (Azure DevOps ऑडिट लॉग प्राप्त करने के लिए आवश्यक)
Microsoft Graph API के साथ Microsoft Entra लॉग प्राप्त करने के लिए, आपको कम से कम एक उपयोगकर्ता की आवश्यकता है जिसके पास [Microsoft Entra ID P1](https://www.microsoft.com/en-us/security/business/microsoft-entra-pricing) लाइसेंस हो। यह लाइसेंस एकल उपयोगकर्ता के लिए खरीदा जा सकता है या कुछ लाइसेंस योजनाओं जैसे *Microsoft 365 Business Premium* योजना में शामिल हो सकता है।
## मॉड्यूल में शामिल फ़ंक्शन
मॉड्यूल में 10 फ़ंक्शन हैं:
| **फ़ंक्शन** | **डेटा स्रोत** | अवधारण | **प्रदर्शन** | **पूर्णता** | **विवरण** |
|---|---|---|---|---|---|
| `Get-O365Full` | यूनिफाइड ऑडिट लॉग | 90 दिन / 180 दिन* | खराब | सभी यूनिफाइड ऑडिट लॉग | डिफ़ॉल्ट रूप से, संपूर्ण यूनिफाइड ऑडिट लॉग प्राप्त करें। इसका उपयोग केवल छोटे टेनेंट या कम समय अवधि पर ही किया जाना चाहिए।<br />आप कुछ विशिष्ट [रिकॉर्ड प्रकारों](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32) के लिए ईवेंट एकत्र करने के लिए इस cmdlet का भी उपयोग कर सकते हैं। |
| `Get-O365Light` | यूनिफाइड ऑडिट लॉग | 90 दिन / 180 दिन* | अच्छा | केवल यूनिफाइड ऑडिट लॉग का एक उपसमूह | केवल *संचालन* का एक उपसमूह, जो रुचि के माने जाते हैं, प्राप्त किया जाता है। |
| `Get-O365Defender` | यूनिफाइड ऑडिट लॉग | 90 दिन / 180 दिन* | अच्छा | केवल यूनिफाइड ऑडिट लॉग का एक उपसमूह | Microsoft Defender for Microsoft 365 से संबंधित ईवेंट प्राप्त करता है। कम से कम एक [Office 365 E5](https://www.microsoft.com/en-us/microsoft-365/enterprise/office-365-e5?activetab=pivot:overviewtab) लाइसेंस या एक लाइसेंस योजना की आवश्यकता है जो Microsoft Defender for Office 365 शामिल करती है। |
| `Get-AADLogs` | Microsoft Entra लॉग | 30 दिन | अच्छा | सभी Microsoft Entra लॉग | टेनेंट जानकारी और सभी Microsoft Entra लॉग प्राप्त करें: साइन-इन लॉग और ऑडिट लॉग। |
| `Get-AADApps` | N/A | N/A | अच्छा | पूर्ण | Microsoft Entra ID सर्विस प्रिंसिपल और उनके एप्लिकेशन, oauth2PermissionGrants और appRoleAssignments |
| `Get-AADDevices` | N/A | N/A | अच्छा | पूर्ण | Microsoft Entra ID डिवाइस और उनके मालिक/उपयोगकर्ता |
| `Get-AADUsers` | N/A | N/A | अच्छा | पूर्ण | Microsoft Entra ID उपयोगकर्ता और उनके प्रमाणीकरण विधियाँ |
| `Search-O365` | यूनिफाइड ऑडिट लॉग / मेलबॉक्स ऑडिट लॉग** | 90 दिन / 180 दिन* | खराब | केवल यूनिफाइड ऑडिट लॉग का एक उपसमूह | विशिष्ट उपयोगकर्ताओं, आईपी पतों या मुक्त पाठों से संबंधित गतिविधि खोजें। |
| `Get-AzRMActivityLogs` | Azure Monitor गतिविधि लॉग | 90 दिन | अच्छा | सभी Azure Monitor गतिविधि लॉग | चयनित सब्सक्रिप्शन के उपसमूह के लिए सभी Azure Monitor गतिविधि लॉग प्राप्त करें। |
| `Get-AzDevOpsActivityLogs` | Azure DevOps ऑडिट लॉग | 90 दिन | अच्छा | सभी Azure DevOps ऑडिट लॉग | चयनित Azure DevOps संगठनों के उपसमूह के लिए सभी Azure DevOps ऑडिट लॉग प्राप्त करें। |
\* आप Purview का उपयोग करके 180 दिनों की अवधारण प्राप्त कर सकते हैं, Exchange Online का उपयोग करके डिफ़ॉल्ट 90 दिनों की अवधारण की तुलना में।
** उपयोगकर्ताओं की खोज करते समय, `Search-O365` cmdlet मेलबॉक्स ऑडिट लॉग में भी खोज करेगा।
प्रत्येक फ़ंक्शन में एक टिप्पणी-आधारित सहायता होती है जिसे आप *Get-Help* cmdlet के साथ लागू कर सकते हैं।```powershell
# Display comment-based help
PS> Get-Help Get-O365Full
# Display comment-based help with examples
PS> Get-Help Get-O365Full -Examples
प्रत्येक फ़ंक्शन एक पैरामीटर के रूप में लेता है:
-startDate) ;-endDate) ;-appId), जो एप्लिकेशन बनाने पर प्राप्त होता है ;-tenant) ;-certificatePath), जो एप्लिकेशन बनाने पर प्राप्त होता है।उदाहरण:
पढ़ने में आसानी के लिए, हम मान लेंगे कि:```powershell $appId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" $tenant = "example.onmicrosoft.com" $certificatePath = "./example.pfx"
एक वास्तविक मामले में, वे पैरामीटर [एप्लिकेशन बनाते समय](#creating-the-application) एकत्र किए जाते हैं।
पिछले 30 दिनों के Microsoft Entra Logs के साथ-साथ टेनेंट के बारे में सामान्य जानकारी प्राप्त करने के लिए:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-AADLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
Microsoft Entra सेवा प्रिंसिपल और उनके एप्लीकेशन, oauth2PermissionGrant और appRoleAssignment प्राप्त करें:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-30) Get-AADApps --appId $appId -tenant $tenant -certificatePath $certificatePath
Microsoft Entra उपकरणों और उनके मालिकों और उपयोगकर्ताओं को प्राप्त करें:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-AADDevices -appId $appId -tenant $tenant -certificatePath $certificatePath
Microsoft Entra उपयोगकर्ताओं और उनकी प्रमाणीकरण विधि सेटिंग्स प्राप्त करें:```powershell Get-AADUsers -appId $appId -tenant $tenant -certificatePath $certificatePath -authenticationMethods
पिछले 30 दिनों से रुचिकर मानी जाने वाली यूनिफाइड ऑडिट लॉग घटनाओं को प्राप्त करें, उन घटनाओं को छोड़कर जो Entra ID से संबंधित हैं, जो पहले कमांड द्वारा पहले ही प्राप्त की जा चुकी थीं:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-O365Light -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -operationsSet "allButAzureAD"
अब से -90 दिन और -30 दिन के बीच के समय विंडो में रुचि के मानी जाने वाली Unified Audit log घटनाओं को पुनः प्राप्त करें:```powershell $endDate = (Get-Date).AddDays(-30) $startDate = (Get-Date).AddDays(-90) Get-O365Light -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
यदि मेलबॉक्स ऑडिट सक्षम है, तो आप समर्पित स्विच का उपयोग करके `MailboxLogin` संचालन भी प्राप्त कर सकते हैं: _प्रति खोज में 50.000 ईवेंट की वैश्विक सीमा से सावधान रहें_```powershell
Get-O365Light -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -mailboxLogin
यदि उपयोगकर्ताओं के पास Office 365 E5 लाइसेंस हैं या यदि टेनेंट में Microsoft Defender for Office 365 प्लान है, तो आप पिछले 90 दिनों से संबंधित Microsoft Defender लॉग प्राप्त कर सकते हैं।```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-90) Get-O365Defender -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
सभी Unified Audit Log ईवेंट्स को क्रिसमस ईव 2020 और बॉक्सिंग डे 2020 के बीच प्राप्त करने के लिए:
_सावधान रहें कि उस cmdlet का प्रदर्शन खराब है_```powershell
$endDate = Get-Date "12/26/2020"
$startdate = Get-Date "12/24/2020"
Get-O365Full -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
आप IP पतों, विशिष्ट उपयोगकर्ताओं से संबंधित गतिविधियों की खोज करने या Unified Audit Log में freetext search करने के लिए खोज फ़ंक्शन का उपयोग कर सकते हैं:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-90)
Search-O365 -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -freeTexts "Python","Python3"
Search-O365 -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -IPAddresses "8.8.8.8","4.4.4.4"
Search-O365 -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -userIds "[email protected]","[email protected]"
जब विशिष्ट **उपयोगकर्ताओं** की खोज की जाती है, तो `Search-O365` मेलबॉक्स ऑडिट लॉग में भी खोज करेगा। ऐसा इसलिए है क्योंकि उपयोगकर्ता के लाइसेंस स्तर और सेटिंग्स के आधार पर, कुछ मेलबॉक्स लॉग यूनिफाइड ऑडिट लॉग में मौजूद नहीं हो सकते हैं।
उन सभी सब्सक्रिप्शन से सभी Azure Resource Manager गतिविधि लॉग प्राप्त करने के लिए जिन तक एप्लिकेशन की पहुँच है:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-90)
Get-AzRMActivityLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
उन संगठनों से सभी Azure DevOps गतिविधि लॉग प्राप्त करने के लिए जिन तक एप्लिकेशन की पहुंच है:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-90) Get-AzDevOpsActivityLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath
## उत्पन्न फ़ाइलें
सभी उत्पन्न फ़ाइलें JSON प्रारूप में हैं।
_कई cmdlet लॉन्च करना जो Purview का उपयोग करते हैं और एक ही आउटपुट फ़ाइल में लिखते हैं, एक "भोले" संयोजन के कारण अमान्य JSON का परिणाम दे सकता है_
- `Get-AADApps` `azure_ad_apps` फ़ोल्डर में बनाएगा:
- मौजूदा और हटाए गए एप्लिकेशन वाली एक JSON फ़ाइल: `AADApps_example.onmicrosoft.com_applications_raw.json`;
- मौजूदा और हटाए गए सेवा प्रिंसिपल वाली एक JSON फ़ाइल: `AADApps_example.onmicrosoft.com_service_principals_raw.json`;
- समृद्ध सेवा प्रिंसिपल वाली एक JSON फ़ाइल: `AADApps_example.onmicrosoft.com.json`.
- `Get-AADDevices` `azure_ad_devices` फ़ोल्डर में बनाएगा:
- मौजूदा और हटाए गए उपकरणों वाली एक JSON फ़ाइल: `AADDevices_example.onmicrosoft.com_devices_raw.json`;
- समृद्ध उपकरणों वाली एक JSON फ़ाइल: `AADDevices_example.onmicrosoft.com.json`.
- `Get-AADUsers` `azure_ad_users` फ़ोल्डर में बनाएगा:
- मौजूदा और हटाए गए उपयोगकर्ताओं वाली एक JSON फ़ाइल: `AADUsers_example.onmicrosoft.com_users_raw.json`;
- उपयोगकर्ताओं की प्रमाणीकरण सेटिंग्स वाली एक JSON फ़ाइल: `AADUsers_example.onmicrosoft.com_users_settings_raw.json`;
- समृद्ध उपयोगकर्ताओं वाली एक JSON फ़ाइल: `AADUsers_example.onmicrosoft.com.json`.
- `Get-AADLogs` बनाएगा:
- `azure_ad_tenant` फ़ोल्डर में:
- टेनेंट पर सामान्य जानकारी वाली एक JSON फ़ाइल: `AADTenant_example.onmicrosoft.com.json`.
- `azure_ad_audit` फ़ोल्डर में:
- Microsoft Entra ऑडिट लॉग वाली JSON फ़ाइलें: `AADAuditLog_example.onmicrosoft.com_YYYY-MM-DD.json`.
- `azure_ad_signin` फ़ोल्डर में:
- Microsoft Entra साइन-इन लॉग वाली JSON फ़ाइलें: `YYYY-MM-DD/AADSigninLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json`.
- `Get-AzRMActivityLogs` बनाएगा:
- `azure_rm_subscriptions` फ़ोल्डर में:
- सब्सक्रिप्शन पर सामान्य जानकारी वाली एक JSON फ़ाइल: `AzRMsubscriptions_example.onmicrosoft.com.json`.
- `azure_rm_activity` फ़ोल्डर में:
- Azure Monitor गतिविधि लॉग वाली JSON फ़ाइलें: `YYYY-MM-DD/AzRM_example.onmicrosoft.com_%SubscriptionID%_YYYY-MM-DD_HH-00-00.json`.
- `Get-AzDevOpsActivityLogs` बनाएगा:
- `azure_DevOps_orgs` फ़ोल्डर में:
- Azure DevOps संगठनों पर सामान्य जानकारी वाली एक JSON फ़ाइल: `AzdevopsOrgs_example.onmicrosoft.com.json`.
- `azure_DevOps_activity` फ़ोल्डर में:
- Azure DevOps ऑडिट लॉग वाली JSON फ़ाइलें: `YYYY-MM-DD/AzDevOps_example.onmicrosoft.com_%AzureDevOpsOrg%_YYYY-MM-DD_HH-00-00.json`.
- `Get-O365Full` `O365_unified_audit_logs` फ़ोल्डर में बनाएगा (Purview का उपयोग करते समय क्रमशः `O365_unified_audit_logs_purview` में):
- एकीकृत ऑडिट लॉग वाली JSON फ़ाइलें: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json` (Purview का उपयोग करते समय क्रमशः `*/UnifiedAuditLogPurview_*`);
- निर्दिष्ट [RecordTypes](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32) के लिए एकीकृत ऑडिट लॉग वाली JSON फ़ाइलें: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json` (Purview का उपयोग करते समय क्रमशः `*/UnifiedAuditLogPurview_*`).
- `Get-O365Light` `O365_unified_audit_logs` फ़ोल्डर में बनाएगा (Purview का उपयोग करते समय क्रमशः `O365_unified_audit_logs_purview` में):
- *संचालन* के एक उपसमूह के लिए एकीकृत ऑडिट लॉग वाली JSON फ़ाइलें, जो रुचिकर माने जाते हैं: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json` (Purview का उपयोग करते समय क्रमशः `*/UnifiedAuditLogPurview_*`)।
- `Get-O365Defender` `O365_unified_audit_logs` फ़ोल्डर में बनाएगा (Purview का उपयोग करते समय क्रमशः `O365_unified_audit_logs_purview` में):
- Defender से संबंधित [RecordTypes](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32) के लिए एकीकृत ऑडिट लॉग वाली JSON फ़ाइलें: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json` (Purview का उपयोग करते समय क्रमशः `*/UnifiedAuditLogPurview_*`)।
- `Search-O365` बनाएगा:
- `O365_unified_audit_logs` फ़ोल्डर में (Purview का उपयोग करते समय क्रमशः `O365_unified_audit_logs_purview` में):
- निर्दिष्ट `RequestType` (`FreeText`, `IPAddresses`, या`UserIds`) के लिए एकीकृत ऑडिट लॉग वाली JSON फ़ाइलें: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RequestType%_YYYY-MM-DD-HH-MM-SS.json` (Purview का उपयोग करते समय क्रमशः `*/UnifiedAuditLogPurview_*`)। `YYYY-MM-DD-HH-MM-SS` उस समय को दर्शाता है जब संग्रह किया गया था। `FreeText` खोजते समय, अंत में एक अतिरिक्त `_%i` जोड़ा जाता है, जो दर्शाता है कि यह `%i`-वें मुक्त पाठ की खोज का परिणाम है।
- `Exchange_mailbox_audit_logs` फ़ोल्डर में:
- मेलबॉक्स ऑडिट लॉग वाली JSON फ़ाइलें (केवल UserIDs खोजते समय): `YYYY-MM-DD/MailboxAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_UserIds_YYYY-MM-DD-HH-MM-SS_%UserID%.json`। `YYYY-MM-DD-HH-MM-SS` उस समय को दर्शाता है जब संग्रह किया गया था। `%UserID%` इंगित करता है कि यह इस UserID की खोज का परिणाम है।
विभिन्न फ़ंक्शन लॉन्च करने से इसके समान एक निर्देशिका संरचना उत्पन्न होगी:```
output
│ Get-AADApps.log
│ Get-AADDevices.log
│ Get-AADLogs.log
│ Get-AzDevOpsActivityLogs.log
│ Get-AzRMActivityLogs.log
│ Get-O365Defender.log
│ Get-O365Full.log
│ Get-O365Light.log
│ Search-O365.log
│
├───azure_ad_apps
│ AADApps_example.onmicrosoft.com.json
│ AADApps_example.onmicrosoft.com_applications_raw.json
│ AADApps_example.onmicrosoft.com_service_principals_raw.json
│
├───azure_ad_audit
│ AADAuditLog_example.onmicrosoft.com_YYYY-MM-DD.json
│ [...]
│
├───azure_ad_devices
│ AADDevices_example.onmicrosoft.com.json
│ AADDevices_example.onmicrosoft.com_devices_raw.json
│
├───azure_ad_signin
│ ├───YYYY-MM-DD
│ │ AADSigninLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json
│ │ [...]
│ │
│ ├───[...]
│
├───azure_ad_tenant
│ AADTenant_example.onmicrosoft.com.json
│
├───azure_ad_users
│ AADUsers_divreponse.onmicrosoft.com.json
│ AADUsers_divreponse.onmicrosoft.com_users_raw.json
│ AADUsers_divreponse.onmicrosoft.com_users_settings_raw.json
|
├───azure_DevOps_activity
│ ├───YYYY-MM-DD
│ │ AzDevOps_example.onmicrosoft.com_%AzureDevOpsOrg%_YYYY-MM-DD_HH-00-00.json
│ │ [...]
│ │
│ ├───[...]
│
├───azure_DevOps_orgs
│ AzdevopsOrgs_example.onmicrosoft.com.json
├───azure_rm_activity
│ ├───YYYY-MM-DD
│ │ AzRM_example.onmicrosoft.com_%SubscriptionID%_YYYY-MM-DD_HH-00-00.json
│ │ [...]
│ │
│ ├───[...]
│
├───azure_rm_subscriptions
│ AzRMsubscriptions_example.onmicrosoft.com.json
│
├───Exchange_mailbox_audit_logs
│ └───YYYY-MM-DD
│ │ MailboxAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_UserIds_YYYY-MM-DD-HH-MM-SS_%UserID%.json
│ │ [...]
│ │
│ ├───[...]
│
├───O365_unified_audit_logs
│ ├───YYYY-MM-DD
│ │ UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json
│ │ UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json
│ │ UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_UserIds_YYYY-MM-DD-HH-MM-SS.json
│ │ UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_IPAddresses_YYYY-MM-DD-HH-MM-SS.json
│ │ UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_FreeText_YYYY-MM-DD-HH-MM-SS_%i.json
│ │ [...]
│ │
│ ├───[...]
│
└───O365_unified_audit_logs_purview
│ ├───YYYY-MM-DD
│ │ UnifiedAuditLogPurview_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json
│ │ UnifiedAuditLogPurview_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json
│ │ UnifiedAuditLogPurview_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_UserIds_YYYY-MM-DD-HH-MM-SS.json
│ │ UnifiedAuditLogPurview_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_IPAddresses_YYYY-MM-DD-HH-MM-SS.json
│ │ UnifiedAuditLogPurview_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_FreeText_YYYY-MM-DD-HH-MM-SS_%i.json
│ │ [...]
│ │
│ ├───[...]
| डेटा स्रोत / एंडपॉइंट | प्रतिधारण | प्रदर्शन | दायरा |
|---|
| Unified Audit Log / Exchange Online PowerShell | 90 दिन | खराब | सभी Microsoft 365 लॉग (Entra सहित) |
| Unified Audit Log / Purview | 180 दिन | अच्छा | सभी Microsoft 365 लॉग (Entra सहित) |
| Unified Audit Log / Office 365 Management API * | 7 दिन | अच्छा | सभी Microsoft 365 लॉग (Entra सहित) |
| Microsoft Entra लॉग / Microsoft Graph PowerShell | 30 दिन | अच्छा | केवल Entra साइन-इन और ऑडिट लॉग |
| Microsoft Entra लॉग / Microsoft Graph REST API | 30 दिन | अच्छा | केवल Entra साइन-इन और ऑडिट लॉग |