Dela via


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

Diagram över Logstash-arkitekturen.

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:

  1. Granska förutsättningarna
  2. Installera plugin-programmet
  3. Skapa en exempelfil
  4. Skapa nödvändiga DCR-relaterade resurser
  5. Konfigurera Logstash-konfigurationsfil
  6. Starta om Logstash
  7. Visa inkommande loggar i Microsoft Sentinel
  8. Ö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.

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

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
      }
}
  1. 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. 
        }
    }
    
  2. 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 indata
    • ls_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.

  1. 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
        }
    }
    
  2. 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. 
        }
    }
    
  3. 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 indata
    • ls_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

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):

  1. Granska förutsättningarna.

  2. Konfigurera programmet.

  3. Lägg till en anpassad loggtabell.

  4. Parsa och filtrera exempeldata med hjälp av exempelfilen som du skapade i föregående avsnitt.

  5. Samla in information från DCR.

  6. 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.

  1. Granska förutsättningarna.

  2. Samla in information om arbetsytan.

  3. Konfigurera ett program.

    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.

  4. 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ör Custom-. I vårt exempel är Microsoft-Syslogegenskapsvärdet outputStream .
  5. 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älten PRI, type och ls_version från streamDeclarations kolumnen.
  • Egenskapen dataflows transformerar indata till Syslog-tabellformatet och anger outputStream till Microsoft-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-SyslogStreamvärdet .

När du har hämtat de nödvändiga värdena:

  1. Ersätt utdataavsnittet i Logstash-konfigurationsfilen som du skapade i föregående steg med exemplet nedan.
  2. Ersätt platshållarsträngarna i exemplet nedan med de värden som du hämtade.
  3. Se till att du ändrar attributet create_sample_file till false.

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, AzureChinaCloudoch 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 Truekomprimeras 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_endpointoch 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

  1. Kontrollera att meddelanden skickas till plugin-programmet för utdata.

  2. 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.

    Skärmbild av anpassade loggfiler.

  3. Om du vill se poster i tabellen frågar du tabellen med tabellnamnet som schema.

    Skärmbild av en loggfrågefråga för anpassade loggar.

Ö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: