Home
%3CLINGO-SUB%20id%3D%22lingo-sub-864060%22%20slang%3D%22en-US%22%3EAzure%20Sentinel%3A%20Creating%20Custom%20Connectors%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-864060%22%20slang%3D%22en-US%22%3E%3CH1%20id%3D%22toc-hId-2018530039%22%20id%3D%22toc-hId-2018530039%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EBefore%20you%20go%20the%20custom%20connector%20way%3C%2FSPAN%3E%3C%2FH1%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EIf%20the%20Sentinel%20data%20connectors%20page%20does%20not%20include%20the%20source%20you%20need%2C%20you%20may%20still%20not%20need%20a%20custom%20connector.%20Review%20the%20following%20blog%20posts%20for%20additional%20sources%20that%20can%20be%20used%20with%20Sentinel%20without%20a%20custom%20connector%3A%3C%2FSPAN%3E%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2FAzure-Sentinel%2FAzure-Sentinel-Agent-Collecting-telemetry-from-on-prem-and-IaaS%2Fba-p%2F811760%22%20target%3D%22_blank%22%20rel%3D%22noopener%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3ECollecting%20telemetry%20from%20on-prem%20and%20IaaS%20server%3C%2FSPAN%3E%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2FAzure-Sentinel%2FCollecting-Azure-PaaS-services-logs-in-Azure-Sentinel%2Fba-p%2F792669%22%20target%3D%22_blank%22%20rel%3D%22noopener%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3ECollecting%20Azure%20PaaS%20services%20logs%3C%2FSPAN%3E%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2FAzure-Sentinel%2FThe-Syslog-and-CEF-source-configuration-grand-list%2Fba-p%2F803891%22%20target%3D%22_blank%22%20rel%3D%22noopener%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EThe%20Syslog%20and%20CEF%20source%20configuration%20grand%20list%3C%2FSPAN%3E%3C%2FA%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EIf%20you%20still%20can't%20find%20your%20source%20in%20any%20of%20those%2C%20custom%20connectors%20are%20the%20solution.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH1%20id%3D%22toc-hId--533626922%22%20id%3D%22toc-hId--533626922%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EThe%20HTTP%20Data%20Collector%20API%3C%2FSPAN%3E%3C%2FH1%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EThe%20fundamental%20way%20to%20get%20custom%20data%20to%20your%20Sentinel%20workspace%20is%20using%20the%26nbsp%3B%3C%2FSPAN%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fazure-monitor%2Fplatform%2Fdata-collector-api%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EHTTP%20Data%20Collector%20API%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E.%20The%20API%20will%20enable%20you%20to%20write%20code%20to%20ingest%20any%20data%20to%20Sentinel.%20Importantly%2C%20this%20can%20be%20used%20not%20just%20for%20event%20data%2C%20but%20also%20for%20context%20and%20enrichment%20data%20such%20as%20threat%20intelligence%2C%20user%20or%20asset%20information.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3ETo%20use%20the%20API%2C%20you%20can%20utilize%20those%26nbsp%3B%3C%2FSPAN%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Fgithub.com%2Fyokawasa%2Fazure-log-analytics-data-collector%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3Eclient%20libraries.%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3BJava%20does%20not%20have%20a%20client%20library.%20However%2C%20this%26nbsp%3B%3C%2FSPAN%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Fgist.github.com%2Fmaltalex%2Fdcc93cd663c92c98167a6cec24865797%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EJava%20client%20example%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3Bcan%20help%20you%20get%20going%20with%20Java%20also.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EUsing%20Azure%20Functions%20to%20implement%20the%20API%20connector%20is%20especially%20valuable%20as%20it%20keeps%20the%20connector%20serverless.%20The%20example%26nbsp%3B%3C%2FSPAN%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Fmicrosoft.github.io%2Ftechcasestudies%2Fazure%2520functions%2F2017%2F05%2F15%2FLisaApp.html%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EHow%20Azure%20Functions%20and%20Log%20Analytics%20provided%20easy%20and%20universal%20app%20logging%20for%20LISA%20App%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3Bcan%20help%20you%20to%20learn%20how%20to%20implement%20the%20API%20base%20connector%20using%20Azure%20functions.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH1%20id%3D%22toc-hId-1209183413%22%20id%3D%22toc-hId-1209183413%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EUsing%20PowerShell%3C%2FSPAN%3E%3C%2FH1%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EToo%20much%20programming%3F%20The%26nbsp%3B%3C%2FSPAN%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Fwww.powershellgallery.com%2Fpackages%2FUpload-AzMonitorLog%2F1.2%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EUpload-AzMonitorLog%20PowerShell%20script%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3Benables%20you%20to%20use%20PowerShell%20to%20stream%20events%20or%20context%20information%20to%20Sentinel.%20While%20it%20uses%20the%20same%20API%20behind%20the%20scenes%2C%20it%20is%20much%20simpler.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EFor%20example%2C%20this%20command%20will%20upload%20a%20CSV%20file%20to%20Sentinel%3A%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CPRE%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EImport-Csv%20.%5Ctestcsv.csv%26nbsp%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%7C%20.%5CUpload-AzMonitorLog.ps1%26nbsp%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E-WorkspaceId%20'69f7ec3e-cae3-458d-b4ea-6975385-6e426'%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E-WorkspaceKey%20%24WSKey%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E-LogTypeName%20'MyNewCSV'%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E-AddComputerName%26nbsp%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E-AdditionalDataTaggingName%20%22MyAdditionalField%22%26nbsp%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E-AdditionalDataTaggingValue%20%22Foo%22%3C%2FSPAN%3E%3C%2FPRE%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EThe%20script%20takes%20the%20following%20parameters%3C%2FSPAN%3E%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EWorkspaceId%20-%20The%20Workspace%20ID%20of%20the%20workspace%20that%20would%20be%20used%20to%20store%20this%20data%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EWorkspaceKey%20-%20The%20primary%20or%20secondary%20key%20of%20the%20workspace%20that%20would%20be%20used%20to%20store%20this%20data.%20It%20can%20be%20obtained%20from%20the%20Windows%20Server%20tab%20in%20the%20workspace%20Advanced%20Settings%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3ELogTypeName%20-%20The%20name%20of%20the%20custom%20log%20table%20that%20would%20store%20these%20logs.%20This%20name%20will%20be%20automatically%20concatenated%20with%20%22_CL.%22%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EAddComputerName%20-%20If%20this%20switch%20is%20indicated%2C%20the%20script%20will%20add%20to%20every%20log%20record%20a%20field%20called%20Computer%20with%20the%20current%20computer%20name%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3ETaggedAzureResourceId%20-%20If%20exist%2C%20the%20script%20will%20associate%20all%20uploaded%20log%20records%20with%20the%20specified%20Azure%20resource.%20This%20will%20enable%20these%20log%20records%20for%20resource-context%20queries%20as%20well%20as%20adhere%20to%20resource-centric%20role-based%20access%20control.%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EAdditionalDataTaggingName%20-%20If%20exist%2C%20the%20script%20will%20add%20to%20every%20log%20record%20an%20additional%20field%20with%20this%20name%20and%20with%20the%20value%20that%20appears%20in%20AdditionalDataTaggingValue.%20This%20happens%20only%20if%20AdditionalDataTaggingValue%20is%20not%20empty%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EAdditionalDataTaggingValue%20-%20If%20exist%2C%20the%20script%20will%20add%20to%20every%20log%20record%20an%20additional%20field%20with%20this%20value.%20The%20field%20name%20would%20be%20as%20specified%20in%20AdditionalDataTaggingName.%20If%20AdditionalDataTaggingName%20is%20empty%2C%20the%20field%20name%20will%20be%20%22DataTagging.%22%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EWhile%20discussing%20PowerShell%2C%20the%26nbsp%3B%3C%2FSPAN%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Fgithub.com%2Faltaranenco%2FOMS%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EMaxPatrol%20connector%20PowerShell%20example%20shows%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3Ban%20alternative%20implementation%20using%20PowerShell.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH1%20id%3D%22toc-hId--1342973548%22%20id%3D%22toc-hId--1342973548%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EUsing%20Logic%20Apps%3C%2FSPAN%3E%3C%2FH1%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EAnother%20alternative%20is%20to%20use%20Logic%20Apps%20to%20get%20events%20or%20context%20data%20to%20Sentinel.%20To%20do%20that%2C%20build%20a%20playbook%20with%20the%20following%20elements%3A%3C%2FSPAN%3E%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EUse%20one%20of%20these%20triggers%20to%20start%20the%20playbook%3A%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3COL%3E%0A%3COL%3E%0A%3CLI%20class%3D%22ql-indent-1%22%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fconnectors%2Fconnectors-native-recurrence%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3ERecurring%20task%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3B-%20schedule%20the%20connector%2C%20for%20example%2C%20for%20retrieving%20data%20from%20files%2C%20databases%2C%20or%20external%20APIs.%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%20class%3D%22ql-indent-1%22%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Flogic-apps%2Flogic-apps-http-endpoint%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EOn-demand%20triggering%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3B-%20for%20manual%20upload%20and%20testing%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B.%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%20class%3D%22ql-indent-1%22%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fconnectors%2Fconnectors-native-http%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EHTTP%2FS%20endpoint%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3B-%20if%20the%20source%20system%20can%20initiate%20the%20transfer%20and%20for%20streaming.%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3C%2FOL%3E%0A%3CUL%3E%0A%3CLI%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3ERead%20the%20data%20using%20one%20of%20the%20following%20connectors%3A%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3COL%3E%0A%3COL%3E%0A%3CLI%20class%3D%22ql-indent-1%22%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fconnectors%2Fcustom-connectors%2F%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EUsing%20a%20REST%20API%3C%2FSPAN%3E%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%20class%3D%22ql-indent-1%22%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fconnectors%2Fsql%2F%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3ERead%20SQL%20Server%20data%3C%2FSPAN%3E%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%20class%3D%22ql-indent-1%22%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fconnectors%2Ffilesystem%2F%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3ERead%20a%20file%3C%2FSPAN%3E%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%20class%3D%22ql-indent-1%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3ENote%20that%20those%20connectors%20support%20retrieving%20data%26nbsp%3B%3C%2FSPAN%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Flogic-apps%2Flogic-apps-gateway-install%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3Eon-premises%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E.%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3C%2FOL%3E%0A%3CUL%3E%0A%3CLI%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Flogic-apps%2Flogic-apps-perform-data-operations%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EPrepare%20the%20information%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%2C%20for%20example%2C%20using%20the%26nbsp%3B%3C%2FSPAN%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Flogic-apps%2Flogic-apps-perform-data-operations%23parse-json-action%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EParse%20JSON%20action%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E.%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EWrite%20the%20data%20to%20Log%20Analytics%20using%20the%26nbsp%3B%3C%2FSPAN%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fconnectors%2Fazureloganalyticsdatacollector%2F%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3ELogic%20Apps%20connector%20for%20writing%20data%20to%20Log%20Analytics%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E.%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EThere%20are%20many%20examples%20out%20there%20for%20doing%20so%3A%3C%2FSPAN%3E%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Fwww.systemcenterautomation.com%2F2019%2F05%2Fcustom-log-analytics-logs-logicappsps%2F%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3ECreate%20Custom%20Log%20Analytics%20logs%20with%20Logic%20Apps%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3Bwalks%20you%20through%20the%20steps%20and%20provides%20you%20with%20an%20excellent%20example%20of%20using%20parse%20JSON%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EGetting%20MDATP%20alerts%20into%20Sentinel%20using%20either%26nbsp%3B%3C%2FSPAN%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Fwww.linkedin.com%2Fpulse%2Fazure-sentinel-custom-logs-getting-your-mdatp-alerts-paul-huijbregts%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EPaul%20Huijbregts%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3Bor%26nbsp%3B%3C%2FSPAN%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Fjustanitblog.com%2F2019%2F05%2F31%2Fpush-mdatp-alerts-to-log-analytics-using-logic-apps%2F%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3ETom%20Lilly's%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3Bvariants%20provides%20a%20real-world%20use%20case%2C%20and%20so%20will%26nbsp%3B%3C%2FSPAN%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2FAzure-Sentinel%2FSending-Proofpoint-TAP-logs-to-Azure-Sentinel%2Fba-p%2F767727%22%20target%3D%22_blank%22%20rel%3D%22noopener%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3ESending%20Proofpoint%20TAP%20logs%20to%20Azure%20Sentinel%3C%2FSPAN%3E%3C%2FA%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3ENote%20that%20while%20convenient%2C%20this%20method%20may%20be%20costly%20for%20large%20volumes%20of%20data%20and%20should%20be%20used%20only%20for%20low%20volume%20sources%20or%20for%20context%20and%20enrichment%20data%20upload.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH1%20id%3D%22toc-hId-399836787%22%20id%3D%22toc-hId-399836787%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3ELogstash%3C%2FSPAN%3E%3C%2FH1%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EIf%20you%20know%20Logstash%2C%20this%20might%20be%20your%20best%20bet.%20Logstash%20has%20an%26nbsp%3B%3C%2FSPAN%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Fgithub.com%2Fyokawasa%2Flogstash-output-azure_loganalytics%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3Eoutput%20plugin%20for%20Sentinel%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3Bwhich%20enables%20you%20to%20use%20LogStash%20as%20a%20collector%20for%20Sentinel.%20Now%20you%20can%20use%20all%20your%20GROK%20prowess%20as%20well%20as%20any%20Logstash%20input%20plugin%20to%20implement%20your%20connector.%20The%20challenge%20is%20that%20unlike%20all%20other%20methods%20above%2C%20this%20would%20require%20a%20VM%20and%20cannot%20be%20serverless.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH1%20id%3D%22toc-hId-2142647122%22%20id%3D%22toc-hId-2142647122%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EParsing%3C%2FSPAN%3E%3C%2FH1%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EThe%20API%20and%20therefore%20all%20the%20other%20methods%20which%20utilize%20it%20allow%20defining%20fields.%20Using%20this%20feature%2C%20you%20can%20parse%20the%20information%20as%20part%20of%20the%20custom%20parser%20withing%20Logstash%2C%20Logic%20App%2C%20or%20your%20custom%20code.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EHowever%2C%20Sentinel%20allows%20parsing%20at%20query%20time%20which%20offers%20much%20more%20flexibility%20and%20simplifies%20the%20import%20process.%20Query%20time%20allows%20you%20to%20push%20data%20in%20at%20the%20original%20format%20and%20parse%20on%20demand%20when%20needed.%20Updating%20a%20parser%20will%20apply%20to%20already%20ingested%20data.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EQuery%20time%20parsing%20reduces%20the%20overhead%20of%20creating%20a%20custom%20connector%20as%20the%20exact%20structure%20of%20the%20data%20does%20not%20have%20to%20be%20known%20beforehand.%20Nor%20do%20you%20need%20to%20identify%20the%20vital%20information%20to%20extract.%20Parsing%20can%20be%20implemented%20at%20any%20stage%2C%20even%20during%20an%20investigation%20to%20extract%20a%20piece%20of%20information%20Adhoc%20and%20will%20apply%20to%20already%20ingested%20data.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EJSON%2C%20XML%2C%20and%20CSV%20are%20especially%20convenient%20as%20Sentinel%20has%20built-in%20parsing%20functions%20for%20those%20as%20well%20as%20a%20UI%20tool%20to%20build%20a%20JSON%20parser%20as%20described%20in%20the%20blog%20post%26nbsp%3B%3C%2FSPAN%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2FAzure-Sentinel%2FTip-Easily-use-JSON-fields-in-Sentinel%2Fba-p%2F768747%22%20target%3D%22_blank%22%20rel%3D%22noopener%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3ETip%3A%20Easily%20use%20JSON%20fields%20in%20Sentinel%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E.%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3ETo%20ensure%20parsers%20are%20easy%20to%20use%20and%20transparent%20to%20analysts%2C%20they%20can%20be%20saved%20as%20functions%20and%20be%20used%20instead%20of%20Sentinel%20tables%20in%20any%20query%2C%20including%20hunting%20and%20detection%20queries.%20The%20blog%20post%26nbsp%3B%3C%2FSPAN%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2FAzure-Sentinel%2FUsing-KQL-functions-to-speed-up-analysis-in-Azure-Sentinel%2Fba-p%2F712381%22%20target%3D%22_blank%22%20rel%3D%22noopener%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EUsing%20KQL%20functions%20to%20speed%20up%20analysis%20in%20Azure%20Sentinel%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3Bdescribes%20how%20to%20do%20that.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EThe%20full%20documentation%20for%20Sentinel%20parsing%20can%20be%20found%26nbsp%3B%3C%2FSPAN%3E%3CA%20class%3D%22_e75a791d-denali-editor-page-rtfLink%22%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fazure-monitor%2Flog-query%2Fparse-text%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3Ehere%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3E.%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-TEASER%20id%3D%22lingo-teaser-864060%22%20slang%3D%22en-US%22%3E%3CP%3E%3CSPAN%20data-preserver-spaces%3D%22true%22%3EThe%20Sentinel%20data%20connectors%20page%20does%20not%20include%20the%20source%20you%20need.%20What%20do%20you%20do%20next%3F%20Custom%20connectors%20may%20be%20the%20answer.%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-TEASER%3E%3CLINGO-LABS%20id%3D%22lingo-labs-864060%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EConnectors%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
Microsoft

Before you go the custom connector way

If the Sentinel data connectors page does not include the source you need, you may still not need a custom connector. Review the following blog posts for additional sources that can be used with Sentinel without a custom connector:

If you still can't find your source in any of those, custom connectors are the solution.

 

The HTTP Data Collector API

The fundamental way to get custom data to your Sentinel workspace is using the HTTP Data Collector API. The API will enable you to write code to ingest any data to Sentinel. Importantly, this can be used not just for event data, but also for context and enrichment data such as threat intelligence, user or asset information.

 

To use the API, you can utilize those client libraries. Java does not have a client library. However, this Java client example can help you get going with Java also.

 

Using Azure Functions to implement the API connector is especially valuable as it keeps the connector serverless. The example How Azure Functions and Log Analytics provided easy and universal app logging for LISA App can help you to learn how to implement the API base connector using Azure functions.

 

Using PowerShell

Too much programming? The Upload-AzMonitorLog PowerShell script enables you to use PowerShell to stream events or context information to Sentinel. While it uses the same API behind the scenes, it is much simpler.

 

For example, this command will upload a CSV file to Sentinel: 

Import-Csv .\testcsv.csv 
| .\Upload-AzMonitorLog.ps1 
-WorkspaceId '69f7ec3e-cae3-458d-b4ea-6975385-6e426'
-WorkspaceKey $WSKey
-LogTypeName 'MyNewCSV'
-AddComputerName 
-AdditionalDataTaggingName "MyAdditionalField" 
-AdditionalDataTaggingValue "Foo"

 

The script takes the following parameters

  • WorkspaceId - The Workspace ID of the workspace that would be used to store this data
  • WorkspaceKey - The primary or secondary key of the workspace that would be used to store this data. It can be obtained from the Windows Server tab in the workspace Advanced Settings
  • LogTypeName - The name of the custom log table that would store these logs. This name will be automatically concatenated with "_CL."
  • AddComputerName - If this switch is indicated, the script will add to every log record a field called Computer with the current computer name
  • TaggedAzureResourceId - If exist, the script will associate all uploaded log records with the specified Azure resource. This will enable these log records for resource-context queries as well as adhere to resource-centric role-based access control.
  • AdditionalDataTaggingName - If exist, the script will add to every log record an additional field with this name and with the value that appears in AdditionalDataTaggingValue. This happens only if AdditionalDataTaggingValue is not empty
  • AdditionalDataTaggingValue - If exist, the script will add to every log record an additional field with this value. The field name would be as specified in AdditionalDataTaggingName. If AdditionalDataTaggingName is empty, the field name will be "DataTagging."

 

While discussing PowerShell, the MaxPatrol connector PowerShell example shows an alternative implementation using PowerShell.

 

Using Logic Apps

Another alternative is to use Logic Apps to get events or context data to Sentinel. To do that, build a playbook with the following elements:

  • Use one of these triggers to start the playbook:
    1. Recurring task - schedule the connector, for example, for retrieving data from files, databases, or external APIs.
    2. On-demand triggering - for manual upload and testing​​​​​​.
    3. HTTP/S endpoint - if the source system can initiate the transfer and for streaming. 
  • Read the data using one of the following connectors:​​​​​​
    1. Using a REST API
    2. Read SQL Server data
    3. Read a file
    4. Note that those connectors support retrieving data on-premises.

 

There are many examples out there for doing so:

 

Note that while convenient, this method may be costly for large volumes of data and should be used only for low volume sources or for context and enrichment data upload.

 

Logstash

If you know Logstash, this might be your best bet. Logstash has an output plugin for Sentinel which enables you to use LogStash as a collector for Sentinel. Now you can use all your GROK prowess as well as any Logstash input plugin to implement your connector. The challenge is that unlike all other methods above, this would require a VM and cannot be serverless.

 

Parsing

The API and therefore all the other methods which utilize it allow defining fields. Using this feature, you can parse the information as part of the custom parser withing Logstash, Logic App, or your custom code.

 

However, Sentinel allows parsing at query time which offers much more flexibility and simplifies the import process. Query time allows you to push data in at the original format and parse on demand when needed. Updating a parser will apply to already ingested data.

 

Query time parsing reduces the overhead of creating a custom connector as the exact structure of the data does not have to be known beforehand. Nor do you need to identify the vital information to extract. Parsing can be implemented at any stage, even during an investigation to extract a piece of information Adhoc and will apply to already ingested data.

 

JSON, XML, and CSV are especially convenient as Sentinel has built-in parsing functions for those as well as a UI tool to build a JSON parser as described in the blog post Tip: Easily use JSON fields in Sentinel

 

To ensure parsers are easy to use and transparent to analysts, they can be saved as functions and be used instead of Sentinel tables in any query, including hunting and detection queries. The blog post Using KQL functions to speed up analysis in Azure Sentinel describes how to do that.

 

The full documentation for Sentinel parsing can be found here.