Använda Logstash för att strömma loggar med pipelinetransformeringar via DCR-baserat API
Viktigt!
Datainmatning med logstash-utdata-plugin-programmet med datainsamlingsregler (DCR) är för närvarande i offentlig förhandsversion. Den här funktionen tillhandahålls utan ett serviceavtal. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.
Microsoft Sentinels nya Plugin-program för Logstash-utdata stöder pipelinetransformeringar och avancerad konfiguration via datainsamlingsregler (DCR). Plugin-programmet vidarebefordrar alla typer av loggar från externa datakällor till anpassade tabeller eller standardtabeller i Log Analytics eller Microsoft Sentinel.
I den här artikeln får du lära dig hur du konfigurerar det nya Logstash-plugin-programmet för att strömma data till Log Analytics eller Microsoft Sentinel med dcrs, med fullständig kontroll över utdataschemat. Lär dig hur du distribuerar plugin-programmet.
Kommentar
Med en tidigare version av Logstash-plugin-programmet kan du ansluta datakällor via Logstash via API:et för datainsamling.
Med det nya plugin-programmet kan du:
- Kontrollera konfigurationen av kolumnnamnen och typerna.
- Utför inmatningstidstransformeringar som filtrering eller berikning.
- Mata in anpassade loggar i en anpassad tabell eller mata in en Syslog-indataström i Log Analytics Syslog-tabellen.
Inmatning i standardtabeller är endast begränsad till standardtabeller som stöds för inmatning av anpassade loggar.
Mer information om hur du arbetar med Logstash-datainsamlingsmotorn finns i Komma igång med Logstash.
Översikt
Arkitektur och bakgrund
Logstash-motorn består av tre komponenter:
- Plugin-program för indata: Anpassad insamling av data från olika källor.
- Filter-plugin-program: Manipulering och normalisering av data enligt angivna kriterier.
- Plugin-program för utdata: Anpassad sändning av insamlade och bearbetade data till olika mål.
Kommentar
Microsoft stöder endast plugin-programmet för Logstash-utdata från Microsoft Sentinel som beskrivs här. Det aktuella plugin-programmet heter microsoft-sentinel-log-analytics-logstash-output-plugin, v1.1.0. Du kan öppna ett supportärende för eventuella problem med plugin-programmet för utdata.
Microsoft stöder inte logstash-utdatainsticksprogram från tredje part för Microsoft Sentinel eller andra Logstash-plugin-program eller -komponenter av någon typ.
Se förutsättningarna för plugin-programmets Logstash-versionstöd.
Plugin-programmet för Microsoft Sentinel-utdata för Logstash skickar JSON-formaterade data till din Log Analytics-arbetsyta med log analytics log ingestion API. Data matas in i anpassade loggar eller i standardtabellen.
- Läs mer om API:et för logginmatning.
Distribuera plugin-programmet för Microsoft Sentinel-utdata i Logstash
Följ dessa steg för att konfigurera plugin-programmet:
- Granska förutsättningarna
- Installera plugin-programmet
- Skapa en exempelfil
- Skapa nödvändiga DCR-relaterade resurser
- Konfigurera Logstash-konfigurationsfil
- Starta om Logstash
- Visa inkommande loggar i Microsoft Sentinel
- Övervaka granskningsloggar för plugin-program för utdata
Förutsättningar
Installera en version av Logstash som stöds. Plugin-programmet stöder följande Logstash-versioner:
- 7.0 - 7.17.13
- 8.0 - 8.9
- 8.11 - 8.13
Kommentar
Om du använder Logstash 8 rekommenderar vi att du inaktiverar ECS i pipelinen.
Kontrollera att du har en Log Analytics-arbetsyta med minst deltagarbehörighet.
Kontrollera att du har behörighet att skapa DCR-objekt på arbetsytan.
Installera plugin-programmet
Plugin-programmet för Microsoft Sentinel-utdata är tillgängligt i Logstash-samlingen.
- Följ anvisningarna i dokumentet Logstash Working with plugins (Arbeta med plugin-program ) för att installera plugin-programmet microsoft-sentinel-log-analytics-logstash-output-plugin .
- Om ditt Logstash-system inte har Internetåtkomst följer du anvisningarna i dokumentet Logstash Offline Plugin Management för att förbereda och använda ett offline-plugin-paket. (Detta kräver att du skapar ett annat Logstash-system med Internetåtkomst.)
Skapa en exempelfil
I det här avsnittet skapar du en exempelfil i något av följande scenarier:
- Skapa en exempelfil för anpassade loggar
- Skapa en exempelfil för att mata in loggar i Syslog-tabellen
Skapa en exempelfil för anpassade loggar
I det här scenariot konfigurerar du plugin-programmet logstash-indata för att skicka händelser till Microsoft Sentinel. I det här exemplet använder vi plugin-programmet för generatorindata för att simulera händelser. Du kan använda andra plugin-program för indata.
I det här exemplet ser Logstash-konfigurationsfilen ut så här:
input {
generator {
lines => [
"This is a test log message"
]
count => 10
}
}
Kopiera plugin-konfigurationen för utdata nedan till logstash-konfigurationsfilen.
output { microsoft-sentinel-log-analytics-logstash-output-plugin { create_sample_file => true sample_file_path => "<enter the path to the file in which the sample data will be written>" #for example: "c:\\temp" (for windows) or "/tmp" for Linux. } }
Starta Logstash för att se till att den refererade filsökvägen finns innan du skapar exempelfilen.
Plugin-programmet skriver tio poster till en exempelfil med namnet
sampleFile<epoch seconds>.json
i den konfigurerade sökvägen. Till exempel: c:\temp\sampleFile1648453501.json. Här är en del av en exempelfil som plugin-programmet skapar:[ { "host": "logstashMachine", "sequence": 0, "message": "This is a test log message", "ls_timestamp": "2022-03-28T17:45:01.690Z", "ls_version": "1" }, { "host": "logstashMachine", "sequence": 1 ... ]
Plugin-programmet lägger automatiskt till dessa egenskaper i varje post:
ls_timestamp
: Den tid då posten tas emot från plugin-programmet för indatals_version
: Logstash-pipelineversionen.
Du kan ta bort de här fälten när du skapar DCR.
Skapa en exempelfil för att mata in loggar i Syslog-tabellen
I det här scenariot konfigurerar du plugin-programmet Logstash-indata för att skicka syslog-händelser till Microsoft Sentinel.
Om du inte redan har syslog-meddelanden vidarebefordrade till din Logstash-dator kan du använda loggningskommandot för att generera meddelanden. Till exempel (för Linux):
logger -p local4.warn --rfc3164 --tcp -t CEF: "0|Microsoft|Device|cef-test|example|data|1|here is some more data for the example" -P 514 -d -n 127.0.0.1 Here is an example for the Logstash input plugin: input { syslog { port => 514 } }
Kopiera plugin-konfigurationen för utdata nedan till logstash-konfigurationsfilen.
output { microsoft-sentinel-log-analytics-logstash-output-plugin { create_sample_file => true sample_file_path => "<enter the path to the file in which the sample data will be written>" #for example: "c:\\temp" (for windows) or "/tmp" for Linux. } }
Starta Logstash för att se till att filsökvägen finns innan du skapar exempelfilen.
Plugin-programmet skriver tio poster till en exempelfil med namnet
sampleFile<epoch seconds>.json
i den konfigurerade sökvägen. Till exempel: c:\temp\sampleFile1648453501.json. Här är en del av en exempelfil som plugin-programmet skapar:[ { "logsource": "logstashMachine", "facility": 20, "severity_label": "Warning", "severity": 4, "timestamp": "Apr 7 08:26:04", "program": "CEF:", "host": "127.0.0.1", "facility_label": "local4", "priority": 164, "message": 0|Microsoft|Device|cef-test|example|data|1|here is some more data for the example", "ls_timestamp": "2022-04-07T08:26:04.000Z", "ls_version": "1" } ]
Plugin-programmet lägger automatiskt till dessa egenskaper i varje post:
ls_timestamp
: Den tid då posten tas emot från plugin-programmet för indatals_version
: Logstash-pipelineversionen.
Du kan ta bort de här fälten när du skapar DCR.
Skapa nödvändiga DCR-resurser
För att konfigurera det Microsoft Sentinel DCR-baserade Logstash-plugin-programmet måste du först skapa de DCR-relaterade resurserna.
I det här avsnittet skapar du resurser som ska användas för din DCR i något av följande scenarier:
- Skapa DCR-resurser för inmatning till en anpassad tabell
- Skapa DCR-resurser för inmatning till en standardtabell
Skapa DCR-resurser för inmatning till en anpassad tabell
Om du vill mata in data till en anpassad tabell följer du de här stegen (baserat på självstudien Skicka data till Azure Monitor-loggar med hjälp av REST API (Azure Portal):
Granska förutsättningarna.
Parsa och filtrera exempeldata med hjälp av exempelfilen som du skapade i föregående avsnitt.
Tilldela behörigheter till DCR.
Hoppa över steget Skicka exempeldata.
Om du stöter på problem kan du läsa felsökningsstegen.
Skapa DCR-resurser för inmatning till en standardtabell
Om du vill mata in data till en standardtabell som Syslog eller CommonSecurityLog använder du en process som baseras på självstudien Skicka data till Azure Monitor-loggar med hjälp av REST API (Resource Manager-mallar). I självstudien beskrivs hur du matar in data i en anpassad tabell, men du kan enkelt justera processen för att mata in data i en standardtabell. Stegen nedan anger relevanta ändringar i stegen.
Granska förutsättningarna.
Samla in information om arbetsytan.
-
Hoppa över steget Skapa ny tabell i Log Analytics-arbetsytan. Det här steget är inte relevant när du matar in data i en standardtabell, eftersom tabellen redan har definierats i Log Analytics.
Skapa DCR. I det här steget:
- Ange exempelfilen som du skapade i föregående avsnitt.
- Använd exempelfilen som du skapade för att definiera egenskapen
streamDeclarations
. Vart och ett av fälten i exempelfilen ska ha en motsvarande kolumn med samma namn och lämplig typ (se exemplet nedan). - Konfigurera värdet för
outputStream
egenskapen med namnet på standardtabellen i stället för den anpassade tabellen. Till skillnad från anpassade tabeller har standardtabellnamn inte suffixet_CL
. - Prefixet för tabellnamnet ska vara
Microsoft-
i stället förCustom-
. I vårt exempel ärMicrosoft-Syslog
egenskapsvärdetoutputStream
.
Tilldela behörigheter till en DCR.
Hoppa över steget Skicka exempeldata.
Om du stöter på problem kan du läsa felsökningsstegen.
Exempel: DCR som matar in data i Syslog-tabellen
Tänk på följande:
- Kolumnnamnen
streamDeclarations
och typerna ska vara samma som exempelfilfälten, men du behöver inte ange alla. I DCR nedan utelämnas till exempel fältenPRI
,type
ochls_version
frånstreamDeclarations
kolumnen. - Egenskapen
dataflows
transformerar indata till Syslog-tabellformatet och angeroutputStream
tillMicrosoft-Syslog
.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"dataCollectionRuleName": {
"type": "String",
"metadata": {
"description": "Specifies the name of the Data Collection Rule to create."
}
},
"location": {
"defaultValue": "westus2",
"allowedValues": [
"westus2",
"eastus2",
"eastus2euap"
],
"type": "String",
"metadata": {
"description": "Specifies the location in which to create the Data Collection Rule."
}
},
"location": {
"defaultValue": "[resourceGroup().location]",
"type": "String",
"metadata": {
"description": "Specifies the location in which to create the Data Collection Rule."
}
},
"workspaceResourceId": {
"type": "String",
"metadata": {
"description": "Specifies the Azure resource ID of the Log Analytics workspace to use."
}
}
},
"resources": [
{
"type": "Microsoft.Insights/dataCollectionRules",
"apiVersion": "2021-09-01-preview",
"name": "[parameters('dataCollectionRuleName')]",
"location": "[parameters('location')]",
"properties": {
"streamDeclarations": {
"Custom-SyslogStream": {
"columns": [
{
"name": "ls_timestamp",
"type": "datetime"
}, {
"name": "timestamp",
"type": "datetime"
},
{
"name": "message",
"type": "string"
},
{
"name": "facility_label",
"type": "string"
},
{
"name": "severity_label",
"type": "string"
},
{
"name": "host",
"type": "string"
},
{
"name": "logsource",
"type": "string"
}
]
}
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "[parameters('workspaceResourceId')]",
"name": "clv2ws1"
}
]
},
"dataFlows": [
{
"streams": [
"Custom-SyslogStream"
],
"destinations": [
"clv2ws1"
],
"transformKql": "source | project TimeGenerated = ls_timestamp, EventTime = todatetime(timestamp), Computer = logsource, HostName = logsource, HostIP = host, SyslogMessage = message, Facility = facility_label, SeverityLevel = severity_label",
"outputStream": "Microsoft-Syslog"
}
]
}
}
],
"outputs": {
"dataCollectionRuleId": {
"type": "String",
"value": "[resourceId('Microsoft.Insights/dataCollectionRules', parameters('dataCollectionRuleName'))]"
}
}
}
Konfigurera Logstash-konfigurationsfil
Om du vill konfigurera Logstash-konfigurationsfilen för att mata in loggarna i en anpassad tabell hämtar du följande värden:
Fält | Hämta |
---|---|
client_app_Id |
Värdet Application (client) ID du skapar i steg 3 när du skapar DCR-resurserna, enligt den självstudie som du använde i det här avsnittet. |
client_app_secret |
Värdet Application (client) ID du skapar i steg 5 när du skapar DCR-resurserna, enligt den självstudie som du använde i det här avsnittet. |
tenant_id |
Prenumerationens klientorganisations-ID. Du hittar klientorganisations-ID:t under Home Microsoft Entra ID Overview Basic Information (Grundläggande information om >Start-Microsoft Entra-ID > >). |
data_collection_endpoint |
Värdet för URI: logsIngestion n i steg 3 när du skapar DCR-resurserna, enligt den självstudie som du använde i det här avsnittet. |
dcr_immutable_id |
Värdet för DCR immutableId i steg 6 när du skapar DCR-resurserna, enligt den självstudie som du använde i det här avsnittet. |
dcr_stream_name |
För anpassade tabeller, som beskrivs i steg 6 när du skapar DCR-resurserna, går du till JSON-vyn för DCR och kopierar dataFlows >streams egenskapen. dcr_stream_name Se i exemplet nedan.För standardtabeller är Custom-SyslogStream värdet . |
När du har hämtat de nödvändiga värdena:
- Ersätt utdataavsnittet i Logstash-konfigurationsfilen som du skapade i föregående steg med exemplet nedan.
- Ersätt platshållarsträngarna i exemplet nedan med de värden som du hämtade.
- Se till att du ändrar attributet
create_sample_file
tillfalse
.
Valfri konfiguration
Fält | beskrivning | Standardvärde |
---|---|---|
azure_cloud |
Används för att ange namnet på det Azure-moln som används. Tillgängliga värden är: AzureCloud , AzureChinaCloud och AzureUSGovernment . |
AzureCloud |
key_names |
En matris med strängar. Ange det här fältet om du vill skicka en delmängd av kolumnerna till Log Analytics. | Ingen (fältet är tomt) |
plugin_flush_interval |
Definierar den maximala tidsskillnaden (i sekunder) mellan att skicka två meddelanden till Log Analytics. | 5 |
retransmission_time |
Anger hur lång tid det tar i sekunder för återöverföring av meddelanden när sändningen misslyckades. | 10 |
compress_data |
När det här fältet är True komprimeras händelsedata innan API:et används. Rekommenderas för pipelines med högt dataflöde. |
False |
proxy |
Ange vilken proxy-URL som ska användas för alla API-anrop. | Ingen (fältet är tomt) |
proxy_aad |
Ange vilken proxy-URL som ska användas för API-anrop till Microsoft Entra-ID. | Samma värde som "proxy" (fältet är tomt) |
proxy_endpoint |
Ange vilken proxy-URL som ska användas för API-anrop till datainsamlingsslutpunkten. | Samma värde som "proxy" (fältet är tomt) |
Exempel: Avsnittet Konfiguration av plugin-program för utdata
output {
microsoft-sentinel-log-analytics-logstash-output-plugin {
client_app_Id => "<enter your client_app_id value here>"
client_app_secret => "<enter your client_app_secret value here>"
tenant_id => "<enter your tenant id here> "
data_collection_endpoint => "<enter your logsIngestion URI here> "
dcr_immutable_id => "<enter your DCR immutableId here> "
dcr_stream_name => "<enter your stream name here> "
create_sample_file=> false
sample_file_path => "c:\\temp"
proxy => "http://proxy.example.com"
}
}
Om du vill ange andra parametrar för Plugin-programmet för Microsoft Sentinel Logstash-utdata läser du plugin-programmets readme-fil.
Kommentar
Av säkerhetsskäl rekommenderar vi att du inte implicit anger attributen client_app_Id
, client_app_secret
, tenant_id
, data_collection_endpoint
och dcr_immutable_id
i Logstash-konfigurationsfilen. Vi rekommenderar att du lagrar den här känsliga informationen i en Logstash KeyStore.
Starta om Logstash
Starta om Logstash med den uppdaterade plugin-konfigurationen för utdata och se att data matas in till rätt tabell enligt din DCR-konfiguration.
Visa inkommande loggar i Microsoft Sentinel
Kontrollera att meddelanden skickas till plugin-programmet för utdata.
Klicka på Loggar på Microsoft Sentinel-navigeringsmenyn. Under rubriken Tabeller expanderar du kategorin Anpassade loggar . Leta upp och klicka på namnet på den tabell som du angav (med ett
_CL
suffix) i konfigurationen.Om du vill se poster i tabellen frågar du tabellen med tabellnamnet som schema.
Övervaka granskningsloggar för plugin-program för utdata
Om du vill övervaka anslutningen och aktiviteten för Plugin-programmet för Microsoft Sentinel-utdata aktiverar du lämplig Logstash-loggfil. Se dokumentet Logstash-kataloglayout för loggfilens plats.
Om du inte ser några data i den här loggfilen genererar och skickar du vissa händelser lokalt (via plugin-programmet för indata och filter) för att kontrollera att plugin-programmet för utdata tar emot data. Microsoft Sentinel stöder endast problem som rör plugin-programmet för utdata.
Nätverkssäkerhet
Definiera nätverksinställningar och aktivera nätverksisolering för Plugin-programmet för Microsoft Sentinel Logstash-utdata.
Tjänsttaggar för virtuellt nätverk
Plugin-programmet för Microsoft Sentinel-utdata stöder tjänsttaggar för virtuella Azure-nätverk. Både AzureMonitor - och AzureActiveDirectory-taggar krävs.
Azure Virtual Network-tjänsttaggar kan användas för att definiera nätverksåtkomstkontroller i nätverkssäkerhetsgrupper, Azure Firewall och användardefinierade vägar. Använd tjänsttaggar i stället för specifika IP-adresser när du skapar säkerhetsregler och vägar. För scenarier där Azure Virtual Network-tjänsttaggar inte kan användas anges brandväggskraven nedan.
Brandväggskrav
I följande tabell visas brandväggskraven för scenarier där tjänsttaggar för virtuella Azure-nätverk inte kan användas.
Moln | Slutpunkt | Syfte | Port | Riktning | Förbikoppling HTTPS-inspektion |
---|---|---|---|---|---|
Azure Commercial | https://login.microsoftonline.com | Auktoriseringsserver (Microsofts identitetsplattform) | Port 443 | Utgående | Ja |
Azure Commercial | https://<data collection endpoint name>.<Azure cloud region>.ingest.monitor.azure.com |
Slutpunkt för datainsamling | Port 443 | Utgående | Ja |
Azure Government | https://login.microsoftonline.us | Auktoriseringsserver (Microsofts identitetsplattform) | Port 443 | Utgående | Ja |
Azure Government | Ersätt ".com" ovan med ".us" | Slutpunkt för datainsamling | Port 443 | Utgående | Ja |
Microsoft Azure drivs av 21Vianet | https://login.chinacloudapi.cn | Auktoriseringsserver (Microsofts identitetsplattform) | Port 443 | Utgående | Ja |
Microsoft Azure drivs av 21Vianet | Ersätt ".com" ovan med ".cn" | Slutpunkt för datainsamling | Port 443 | Utgående | Ja |
Begränsningar
- Inmatning i standardtabeller är endast begränsad till standardtabeller som stöds för inmatning av anpassade loggar.
- Kolumnerna i indataströmmen i
streamDeclarations
egenskapen måste börja med en bokstav. Om du startar en kolumn med andra tecken (till exempel@
eller_
) misslyckas åtgärden. - Datetime-fältet
TimeGenerated
krävs. Du måste inkludera det här fältet i KQL-transformering. - Mer information om möjliga problem finns i felsökningsavsnittet i självstudien.
Nästa steg
I den här artikeln har du lärt dig hur du använder Logstash för att ansluta externa datakällor till Microsoft Sentinel. Mer information om Microsoft Sentinel finns i följande artiklar: