Przesyłaj strumieniowo dzienniki zdarzeń do Microsoft Sentinel za pomocą narzędzia Logstash i interfejsu API opartego na DCR

Ważna

Pozyskiwanie danych za pomocą wtyczki wyjściowej Logstash z użyciem reguł gromadzenia danych (DCR) jest obecnie dostępne w publicznej wersji zapoznawczej. Ta funkcja jest udostępniana bez umowy dotyczącej poziomu usług. Aby uzyskać więcej informacji, zobacz Dodatkowe warunki użytkowania dla wersji zapoznawczych Azure firmy Microsoft.

Wtyczka wyjściowa Logstash dla usługi Microsoft Sentinel obsługuje transformacje potoku i zaawansowaną konfigurację za pomocą reguł zbierania danych (DCR). Wtyczka przekazuje logi z zewnętrznych źródeł danych do niestandardowych lub standardowych tabel w usłudze Log Analytics lub Microsoft Sentinel.

W tym artykule dowiesz się, jak skonfigurować wtyczkę Logstash do przesyłania strumieniowego danych do usługi Log Analytics lub Microsoft Sentinel za pomocą reguł zbierania danych (DCR), z pełną kontrolą nad schematem wyjściowym.

Za pomocą wtyczki możesz:

  • Kontroluj konfigurację nazw i typów kolumn.
  • Wykonaj przekształcenia podczas pozyskiwania danych, takie jak filtrowanie lub wzbogacanie.
  • Pozyskiwanie dzienników niestandardowych do tabeli niestandardowej lub pozyskiwanie strumienia danych wejściowych dziennika systemu Syslog do tabeli dziennika Syslog usługi Log Analytics.

Importowanie do tabel standardowych jest ograniczone wyłącznie do tabel standardowych obsługiwanych na potrzeby pozyskiwania dzienników niestandardowych.

Aby dowiedzieć się więcej o pracy z mechanizmem zbierania danych Logstash, zobacz Wprowadzenie do pracy z Logstash.

Omówienie architektury

Diagram architektury logstash przedstawiający etapy wtyczek wejściowych, filtrowych i wyjściowych wysyłające dane do usługi Log Analytics za pośrednictwem interfejsu API pozyskiwania dzienników.

Silnik Logstash składa się z trzech komponentów:

  • Wtyczki wejściowe: dostosowane zbieranie danych z różnych źródeł.
  • Filtruj wtyczki: Manipulowanie i normalizacja danych zgodnie z określonymi kryteriami.
  • Wtyczki wyjściowe: dostosowane wysyłanie zebranych i przetworzonych danych do różnych miejsc docelowych.

Uwaga

Wtyczka wysyła dane w formacie JSON do obszaru roboczego usługi Log Analytics przy użyciu interfejsu API pozyskiwania logów. Dane są importowane do niestandardowych dzienników lub do tabeli standardowej.

Wdrażanie wtyczki danych wyjściowych Microsoft Sentinel w usłudze Logstash

Aby skonfigurować wtyczkę, wykonaj następujące kroki:

  • Przejrzyj wymagania wstępne dotyczące wtyczek Logstash
  • Instalowanie wtyczki
  • Tworzenie przykładowego pliku
  • Utwórz wymagane zasoby powiązane z DCR
  • Konfigurowanie pliku konfiguracji usługi Logstash
  • Uruchom ponownie usługę Logstash
  • Wyświetl dzienniki przychodzące w Microsoft Sentinel
  • Monitorowanie dzienników inspekcji wtyczki wyjściowej

Wymagania wstępne wtyczki usługi Logstash

Instalowanie wtyczki

Wtyczka danych wyjściowych Microsoft Sentinel jest dostępna w kolekcji Logstash w serwisie RubyGems.

Tworzenie przykładowego pliku

W tej sekcji utworzysz przykładowy plik w jednym z następujących scenariuszy:

  • Tworzenie przykładowego pliku dla dzienników niestandardowych
  • Utwórz przykładowy plik do importowania dzienników do tabeli Syslog

Tworzenie przykładowego pliku dla dzienników niestandardowych

W tym scenariuszu skonfigurujesz wtyczkę wejściową Logstash tak, aby wysyłała zdarzenia do Microsoft Sentinel. W tym przykładzie do symulowania zdarzeń jest używana wtyczka wejściowa generatora. Możesz użyć dowolnej innej wtyczki wejściowej.

W tym przykładzie plik konfiguracji usługi Logstash wygląda następująco:

input {
      generator {
            lines => [
                 "This is a test log message"
            ]
           count => 10
      }
}

Aby utworzyć przykładowy plik, wykonaj następujące kroki:

  1. Skopiuj poniższą konfigurację wtyczki wyjściowej do pliku konfiguracji usługi Logstash.

    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. Upewnij się, że ścieżka pliku, do którego odwołuje się odwołanie, już istnieje, a następnie uruchom usługę Logstash.

    Wtyczka zapisuje dziesięć rekordów w przykładowym pliku o nazwie sampleFile<epoch seconds>.json w skonfigurowanej ścieżce po wystąpieniu 10 zdarzeń do próbkowania lub pomyślnym zakończeniu procesu logstash. Na przykład: c:\temp\sampleFile1648453501.json. Oto część przykładowego pliku, który tworzy wtyczka:

    [
            {
                "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
        ...
    
        ]    
    

    Wtyczka automatycznie dodaje te właściwości do każdego rekordu:

    • ls_timestamp: czas odebrania rekordu z wtyczki wejściowej
    • ls_version: wersja potoku Logstash.

    Te pola można usunąć podczas tworzenia funkcji DCR.

Utwórz przykładowy plik do importowania dzienników do tabeli Syslog

W tym scenariuszu skonfigurujesz wtyczkę wejściową Logstash tak, aby wysyłała zdarzenia dziennika systemowego do Microsoft Sentinel.

  1. Jeśli nie masz jeszcze komunikatów dziennika systemu przekazywanych do maszyny Logstash, możesz użyć polecenia rejestratora do generowania komunikatów. Na przykład (dla 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
    

    Oto przykład wtyczki wejściowej Logstash:

    input {
         syslog {
             port => 514
        }
    }
    
  2. Skopiuj poniższą konfigurację wtyczki wyjściowej do pliku konfiguracji usługi Logstash.

    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. Upewnij się, że ścieżka pliku już istnieje, a następnie uruchom usługę Logstash.

    Wtyczka zapisuje dziesięć rekordów w przykładowym pliku o nazwie sampleFile<epoch seconds>.json w skonfigurowanej ścieżce po wystąpieniu 10 zdarzeń do próbkowania lub pomyślnym zakończeniu procesu logstash. Na przykład: c:\temp\sampleFile1648453501.json. Oto część przykładowego pliku, który tworzy wtyczka:

    [
            {
                "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"
            }
    ]    
    
    

    Wtyczka automatycznie dodaje te właściwości do każdego rekordu:

    • ls_timestamp: czas odebrania rekordu z wtyczki wejściowej
    • ls_version: wersja potoku Logstash.

    Te pola można usunąć podczas tworzenia funkcji DCR.

Tworzenie wymaganych zasobów DCR

Aby skonfigurować wtyczkę Logstash usługi Microsoft Sentinel opartą na mechanizmie DCR, najpierw utwórz zasoby powiązane z DCR.

W tej sekcji utworzysz zasoby do użycia na potrzeby dcr w jednym z następujących scenariuszy:

  • Tworzenie zasobów DCR do pozyskiwania danych do tabeli niestandardowej
  • Utwórz zasoby DCR na potrzeby pozyskiwania danych do standardowej tabeli

Tworzenie zasobów DCR do pozyskiwania danych do tabeli niestandardowej

Aby zaimportować dane do tabeli niestandardowej, wykonaj następujące kroki (na podstawie samouczka Wysyłanie danych do dzienników usługi Azure Monitor przy użyciu interfejsu API REST (portal Azure)):

  1. Zapoznaj się z wymaganiami wstępnymi.

  2. Skonfiguruj aplikację.

  3. Dodaj niestandardową tabelę dzienników.

  4. Przeanalizuj i przefiltruj przykładowe dane przy użyciu przykładowego pliku utworzonego w poprzedniej sekcji.

  5. Zbierz informacje z DCR.

  6. Przypisz uprawnienia do funkcji DCR.

    Pomiń krok Wyślij przykładowe dane.

Jeśli napotkasz jakieś problemy, sprawdź kroki rozwiązywania problemów API Logs Ingestion.

Utwórz zasoby DCR na potrzeby pozyskiwania danych do standardowej tabeli

Aby pozyskać dane do standardowej tabeli, takiej jak Syslog lub CommonSecurityLog, należy użyć procesu opartego na samouczku „Wysyłanie danych do dzienników usługi Azure Monitor przy użyciu interfejsu API REST (szablony usługi Resource Manager)”. W samouczku opisano, jak importować dane do tabeli niestandardowej, ale można łatwo dostosować ten proces do importowania danych do tabeli standardowej. Poniższe kroki wskazują istotne zmiany w krokach.

  1. Zapoznaj się z wymaganiami wstępnymi.

  2. Zbierz szczegóły obszaru roboczego.

  3. Konfigurowanie aplikacji.

    Pomiń krok Tworzenie nowej tabeli w obszarze roboczym usługi Log Analytics. Ten krok nie ma znaczenia podczas pozyskiwania danych do standardowej tabeli, ponieważ tabela jest już zdefiniowana w usłudze Log Analytics.

  4. Utwórz dcr. W tym kroku:

    • Podaj przykładowy plik, który stworzyłeś w Stwórz plik próbny.
    • Użyj utworzonego przykładowego pliku, aby zdefiniować właściwość streamDeclarations . Każde z pól w przykładowym pliku powinno mieć odpowiednią kolumnę o tej samej nazwie i odpowiednim typie (zobacz poniższy przykład).
    • Skonfiguruj wartość właściwości outputStream na nazwę tabeli standardowej zamiast tabeli niestandardowej. W przeciwieństwie do tabel niestandardowych nazwy tabel standardowych nie mają sufiksu _CL .
    • Prefiks nazwy tabeli powinien być Microsoft- zamiast Custom-. W tym przykładzie wartość właściwości outputStream to Microsoft-Syslog.
  5. Przypisywanie uprawnień do DCR.

    Pomiń krok Wyślij przykładowe dane.

Jeśli napotkasz jakieś problemy, sprawdź kroki rozwiązywania problemów API Logs Ingestion.

Przykład: DCR pozyskujący dane do tabeli Syslog

Należy pamiętać o następujących kwestiach:

  • Nazwy streamDeclarations i typy kolumn powinny być takie same jak przykładowe pola plików, ale nie trzeba ich wszystkich określać. Na przykład w poniższym dokumencie DCR pola PRI, type i ls_version są pominięte w kolumnie streamDeclarations.
  • Właściwość dataflows przekształca dane wejściowe do formatu tabeli Syslog i ustawia wartość outputStream na 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": "[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'))]"
    }
  }
}

Konfigurowanie pliku konfiguracji usługi Logstash

Wtyczka obsługuje dwie metody uwierzytelniania: nazwę główną usługi (poświadczenia klienta) i tożsamość zarządzaną (bez hasła). Wybierz metodę odpowiadającą środowisku.

Uwierzytelnianie za pomocą service principal

Aby skonfigurować plik konfiguracyjny Logstash do pobierania logów do niestandardowej tabeli z użyciem uwierzytelniania przez podmiot usługi, pobierz następujące wartości: client_id, client_secret, tenant_id, data_collection_endpoint, dcr_id, oraz stream_name.

Pole Jak pobrać
client_id Wartość Application (client) ID utworzona w kroku 3 podczas tworzenia zasobów DCR, według tutoriala portalu Azure lub szablonów Resource Manager.
client_secret Wartość sekretu klienta, którą tworzysz w kroku 5 podczas tworzenia zasobów DCR, zgodnie z tutorialem portalu Azure lub szablonami Resource Manager.
tenant_id Identyfikator dzierżawy Twojej subskrypcji. Identyfikator dzierżawy można znaleźć w sekcji Home > Microsoft Entra ID > Przegląd > Podstawowe informacje.
data_collection_endpoint Wartość URI logsIngestion w kroku 3 przy tworzeniu zasobów DCR, według tutoriala portalu Azure lub szablonów Resource Manager.
dcr_id Wartość elementu DCR immutableId w kroku 6 podczas tworzenia zasobów DCR, zgodnie z samouczkiem portalu Azure lub samouczkiem dotyczącym szablonów usługi Resource Manager.
stream_name W przypadku tabel niestandardowych, jak wyjaśniono w kroku 6 podczas tworzenia zasobów DCR, przejdź do widoku JSON dcr i skopiuj właściwość dataFlows>streams . Zobacz stream_name w przykładzie konfiguracji wtyczki wyjściowej jednostki usługi. W przypadku tabel standardowych wartość to Custom-SyslogStream.

Po pobraniu wymaganych wartości:

  1. Zastąp sekcję danych wyjściowych pliku konfiguracji usługi Logstash utworzonego w poprzednim kroku poniższym przykładem.
  2. Zastąp ciągi zastępcze w poniższym przykładzie pobranymi wartościami.
  3. Upewnij się, że atrybut został zmieniony na create_sample_filefalse.
Przykład: Konfiguracja wtyczki wyjściowej jednostki usługi
output {
    microsoft-sentinel-log-analytics-logstash-output-plugin {
      client_id => "<enter your client_id value here>"
      client_secret => "<enter your client_secret value here>"
      tenant_id => "<enter your tenant id here>"
      data_collection_endpoint => "<enter your logsIngestion URI here>"
      dcr_id => "<enter your DCR immutableId here>"
      stream_name => "<enter your stream name here>"
      create_sample_file=> false
      sample_file_path => "c:\\temp"
    }
}

Uwierzytelnianie tożsamości zarządzanej (bez hasła)

Gdy nie podasz danych uwierzytelniających jednostki usługi (client_id, client_secret i tenant_id), wtyczka uwierzytelnia się przy użyciu DefaultAzureCredential z zestawu Azure SDK. DefaultAzureCredential próbuje sekwencji metod uwierzytelniania i używa pierwszej, która się udaje. W środowisku serwerowym odpowiednie metody są stosowane w następującej kolejności:

  1. Zmienne środowiskowe: Odczytuje poświadczenia uwierzytelniające ze zmiennych środowiskowych, takich jak AZURE_CLIENT_ID, AZURE_TENANT_ID, oraz AZURE_CLIENT_SECRET do uwierzytelniania jako podmiot usługi.
  2. Tożsamość obciążenia: Jeśli wtyczka działa na hostie Azure z włączoną tożsamością obciążenia (np. AKS z ustawioną AZURE_FEDERATED_TOKEN_FILE zmienną środowiskową), wtyczka wykonuje wymianę tokenów OIDC.
  3. Tożsamość zarządzana: Jeśli host ma włączoną tożsamość zarządzaną, wtyczka uwierzytelnia się za pomocą tej tożsamości. Ta metoda obejmuje maszyny wirtualne Azure, Virtual Machine Scale Sets oraz serwery obsługujące Azure Arc.

Pełną sekwencję poświadczeń, których próbuje użyć DefaultAzureCredential, można znaleźć w artykule Łańcuchy poświadczeń w bibliotece Azure Identity dla języka Java.

Wymagana konfiguracja tożsamości zarządzanej:

Pole Opis
data_collection_endpoint Ciąg. Adres URI logsIngestion dla Twojego DCE.
dcr_id Ciąg. Identyfikator niezmienny DCR.
stream_name Ciąg. Nazwa strumienia danych.
Przykład: Zarządzana tożsamość
output {
    microsoft-sentinel-log-analytics-logstash-output-plugin {
      data_collection_endpoint => "<enter your DCE logsIngestion URI here>"
      dcr_id => "<enter your DCR immutableId here>"
      stream_name => "<enter your stream name here>"
    }
}

Uwaga

  • Podczas korzystania z usługi Azure Arc proces Logstash musi być uruchomiony jako użytkownik należący do grupy himds, aby odczytać token wyzwania. Aby uzyskać więcej informacji, zobacz dokumentację tożsamości zarządzanej usługi Azure Arc.
  • Ze względów bezpieczeństwa nie należy niejawnie określać poufnych wartości konfiguracji, takich jak client_secret w pliku konfiguracji usługi Logstash. Przechowuj informacje poufne w magazynie kluczy usługi Logstash.
  • Ustawienie pustego ciągu znaków jako wartości ustawienia serwera proxy spowoduje usunięcie ogólnosystemowego ustawienia serwera proxy.

Konfiguracja opcjonalna

Key Default Opis
azure_cloud AzurePublicCloud Środowisko chmurowe Azure.
proxy (brak) Opcjonalne. Bazowy adres URL serwera proxy HTTP stosowany dla całego ruchu wtyczek. Format: [http://][user:password@]host:port. Gdy nie jest ustawiony, nie używa się proxy, a zachowanie pozostaje niezmienione.
proxy_aad (wartość proxy) Opcjonalne. Adres URL serwera proxy HTTP używany wyłącznie na potrzeby uwierzytelniania w usłudze Microsoft Entra ID i ruchu związanego z tokenami. Wraca do sytuacji proxy , gdy nie jest ustawiona.
proxy_endpoint (wartość proxy) Opcjonalne. Adres URL serwera proxy HTTP używany wyłącznie na potrzeby ruchu do punktu końcowego gromadzenia danych. Wraca do sytuacji proxy , gdy nie jest ustawiona.
keys_to_keep (wszyscy) Tablica nazw pól do wysłania (filtrowanie podzbiorów).
max_retries_num 3 Maksymalizuj próby powtórek przy nieudanych wysłaniach.
initial_wait_time_seconds 1 Początkowe opóźnienie między ponownymi próbami.
connect_timeout_seconds 15 Limit czasu na nawiązanie połączenia z punktem końcowym pozyskiwania danych. Granice długości blokowania przesyłania w fazie połączenia; Następujący timeout jest powtarzany.
write_timeout_seconds 60 Limit czasu podczas wysyłania ciała żądania do punktu końcowego przyjmowania danych. Ogranicza czas, przez jaki wysyłanie może blokować się w fazie zapisu; wynikające z tego przekroczenie limitu czasu powoduje ponowienie próby.
max_graceful_shutdown_time_seconds 60 Max, czekaj na łagodne wyłączenie.
max_waiting_time_for_batch_seconds 10 Max poczekaj, zanim przepłukasz partię.
max_waiting_for_unifier_time_seconds 10 Max poczekaj, zanim wypłukasz unfikator.
max_batch_size 10000 Maksymalna liczba zdarzeń na partię. Gdy partia danych osiągnie ten rozmiar, jest natychmiast opróżniana, niezależnie od okna czasowego.
input_queue_capacity 50000 Maksymalna pojemność kolejki wejściowej. Ogranicza zużycie pamięci przy przyjmowaniu dużych ilości danych. Gdy bufor jest pełny, na potok Logstash wywierana jest presja zwrotna.
internal_queue_capacity 500 Maksymalna pojemność wewnętrznych kolejek między modułem grupowania, modułem ujednolicania i procesem nadawczym. Ogranicza zużycie pamięci dla partii w locie.
worker_sleep_time_millis 10 Opóźnienie między iteracjami procesu roboczego.
batcher_workers_count (automatycznie) Liczba nitek batcherowych.
sender_workers_count (automatycznie) Liczba wątków nadawcy.
unifier_workers_count (automatycznie) Liczba wątków unifikatora.
id Żadne Niestandardowy znacznik identyfikacyjny dodawany do logów wysłanych partii.

Uruchom ponownie usługę Logstash

Uruchom ponownie usługę Logstash ze zaktualizowaną konfiguracją wtyczki wyjściowej. Sprawdź, czy dane są importowane do właściwej tabeli zgodnie z konfiguracją DCR.

Wyświetl dzienniki przychodzące w Microsoft Sentinel

Aby sprawdzić, czy dane dziennika docierają do obszaru roboczego, wykonaj następujące kroki:

  1. Sprawdź, czy komunikaty są wysyłane do wtyczki wyjściowej.

  2. Z menu nawigacji Microsoft Sentinel wybierz pozycję Dzienniki. Pod nagłówkiem Tabele rozwiń kategorię Dzienniki niestandardowe. Znajdź i wybierz nazwę określonej tabeli (z sufiksem _CL ) w konfiguracji.

    Zrzut ekranu strony Dzienniki w Microsoft Sentinel, na którym rozwinięto kategorię Dzienniki niestandardowe i zaznaczono niestandardową tabelę Logstash.

  3. Aby wyświetlić rekordy w tabeli, wykonaj zapytanie względem tabeli przy użyciu nazwy tabeli jako schematu.

    Zrzut ekranu przedstawiający zapytanie dzienników niestandardowych usługi Logstash.

Monitorowanie dzienników inspekcji wtyczki wyjściowej

Aby monitorować łączność i działanie wtyczki wyjściowej Microsoft Sentinel, włącz odpowiedni plik dziennika usługi Logstash. Zobacz dokument Układ katalogu logstash dla lokalizacji pliku dziennika.

Jeśli nie widzisz żadnych danych w tym pliku dziennika, wygeneruj i wyślij niektóre zdarzenia lokalnie za pośrednictwem wtyczek wejściowych i filtrujących, aby upewnić się, że wtyczka wyjściowa odbiera dane. Microsoft Sentinel obsługuje tylko problemy związane z wtyczką wyjściową.

Zabezpieczenia sieci

Zdefiniuj ustawienia sieci i włącz izolację sieci dla wtyczki wyjściowej Microsoft Sentinel Logstash.

Tagi usług sieci wirtualnej

wtyczka wyjściowa Microsoft Sentinel obsługuje tagi usługi sieci wirtualnej Azure. Wymagane są tagi AzureMonitor i AzureActiveDirectory .

Tagów usług usługi Azure Virtual Network można używać do definiowania kontroli dostępu sieciowego w grupach zabezpieczeń sieciowych, Azure Firewall i trasach definiowanych przez użytkownika. Używaj tagów usługi zamiast określonych adresów IP podczas tworzenia reguł zabezpieczeń i tras. W przypadku scenariuszy, w których nie można używać tagów usługi Azure Virtual Network, poniżej podano wymagania dotyczące zapory.

Wymagania dotyczące zapory

W poniższej tabeli wymieniono wymagania dotyczące zapory w scenariuszach, w których nie można używać tagów usługi sieci wirtualnej Azure.

Chmura Punkt końcowy Cel Port Kierunek Pomijanie inspekcji HTTPS
Komercyjna usługa Azure https://login.microsoftonline.com Serwer autoryzacji (Platforma tożsamości Microsoft) Port 443 Wychodzący Tak
Komercyjna usługa Azure https://<data collection endpoint name>.<Azure cloud region>.ingest.monitor.azure.com Punkt końcowy zbierania danych Port 443 Wychodzący Tak
Azure Government https://login.microsoftonline.us Serwer autoryzacji (Platforma tożsamości Microsoft) Port 443 Wychodzący Tak
Azure Government Zastąp powyżej „.com” przez „.us” Punkt końcowy zbierania danych Port 443 Wychodzący Tak

Historia wersji wtyczki

2.5.0

  • Dodano opcjonalną konfigurację serwera proxy dla każdej wtyczki na potrzeby ruchu uwierzytelniania i przyjmowania danych przy użyciu proxy, proxy_aad oraz proxy_endpoint.
  • Zaktualizowano komponenty obsługi Netty, HTTP, HTTP/2 i DNS z wersji 4.1.133.Final do 4.1.136.Final.
  • Zaktualizowano Jackson Databind i Jackson Core z wersji 2.18.6 do 2.18.8.

2.4.0

  • Wątki robocze działają teraz jako ograniczone przebiegi planowane przez executor: wyjątki, po których można kontynuować działanie, są rejestrowane, a wątek roboczy wznawia działanie w następnym cyklu; krytyczne błędy JVM są rejestrowane i ponownie zgłaszane.
  • Naprawiono mechanizm łagodnego zamykania, tak aby partie będące w trakcie przetwarzania były opróżniane (najpierw moduły grupujące, następnie moduły ujednolicające, a na końcu moduły wysyłające), zanim procesy robocze zostaną zatrzymane, w czasie nie dłuższym niż max_graceful_shutdown_time_seconds.
  • Dodano konfigurowalne limity czasu przesyłania connect_timeout_seconds (domyślnie 15) i write_timeout_seconds (domyślnie 60); próby połączenia i zapisu są ponawiane po przekroczeniu limitu czasu.
  • Dodano identyfikator wątku, typ wyjątku, rozmiar partii oraz strumień DCR do logów błędów partii.

2.3.3

  • Naprawiono problem utraty zgodności typów numerycznych i logicznych: pola oparte na wewnętrznych typach JRuby w Logstashu (na przykład porty i liczby bajtów) są teraz zachowywane jako natywne liczby i wartości logiczne w formacie JSON zamiast być konwertowane na ciągi znaków, co zapewnia niezawodne pozyskiwanie danych do DCR zawierających kolumny o określonych typach.

2.3.2

  • Naprawiono problem z cichym kończeniem działania wątku roboczego spowodowany niewychwyconymi wyjątkami w pętli przetwarzania wątku roboczego.
  • Naprawiono błąd NullPointerException w SenderWorker, gdy Azure zwraca wyjątek LogsUploadException z odpowiedzią HTTP o wartości null.
  • Dodano mechanizm odpornej obsługi błędów ze śledzeniem liczby kolejnych błędów, co ogranicza trwałe awarie procesów roboczych.
  • Dodano opcjonalną wartość konfiguracji id dla telemetrii.
  • Dodano strumień DCR do logowania wysyłanych partii.

2.3.0

  • Włączono funkcjonalność z Logstash 9.4.
  • Zaktualizowano wersje zależności zewnętrznych bibliotek (azure-sdk-bom, logback, slf4j, Netty).

2.2.1

  • Dodaje linię logowania na poziomie informacji, gdy partie zostaną pomyślnie wysłane.

2.2.0

  • Dodaje możliwość używania nowych lub starych wartości konfiguracyjnych.

2.1.2

  • Aktualizacje dokumentacji.

2.1.0

  • Naprawiono normalizację zdarzeń.

2.0.0

  • Refaktoryzowano wtyczkę z języka Ruby do języka Java.
  • Dodano uwierzytelnianie managedIdentity.
  • Przeniesiono bazę kodu z usługi GitHub do Azure DevOps.
  • Zamknięta baza kodu.

1.2.0

  • Dodaje obsługę uwierzytelniania tożsamości zarządzanej dla Azure maszyn wirtualnych/usług VMSS (przypisanych przez system i przypisanych przez użytkownika za pośrednictwem usługi IMDS).
  • Dodaje obsługę tożsamości obciążeń usługi AKS przez wymianę tokenów OIDC.
  • Dodaje obsługę tożsamości zarządzanej Azure Arc dla serwerów hybrydowych i lokalnych.
  • Automatycznie wykrywa metodę uwierzytelniania w czasie wykonywania na podstawie środowiska (zmiennych środowiskowych tożsamości obciążenia roboczego, agenta usługi Arc lub mechanizmu awaryjnego IMDS).
  • Migruje klienta HTTP z excon na rest-client, aby zwiększyć zgodność z ekosystemem wtyczek JRuby i Logstash.
  • Zmienia nazwę odwołań do Azure Active Directory na Microsoft Entra ID.

1.1.4

  • excon Ogranicza wersję biblioteki do wersji niższej niż 1.0.0, aby upewnić się, że port jest zawsze używany podczas korzystania z serwera proxy.

1.1.3

  • Zastępuje bibliotekę rest-client, używaną do łączenia z platformą Azure, biblioteką excon.

1.1.1

  • Dodaje obsługę chmury Azure US Government oraz usługi Microsoft Azure obsługiwanej przez firmę 21Vianet w Chinach.

1.1.0

  • Umożliwia ustawianie różnych wartości serwera proxy dla połączeń interfejsu API.
  • Uaktualnia wersję interfejsu API pozyskiwania dzienników do wersji 2023-01-01.
  • Zmienia nazwę wtyczki na microsoft-sentinel-log-analytics-logstash-output-plugin.

1.0.0

  • Pierwsze wydanie wtyczki wyjściowej Logstash dla usługi Microsoft Sentinel. Ta wtyczka korzysta z reguł zbierania danych (DCR) oraz interfejsu API Logs Ingestion usługi Azure Monitor.

Znane problemy

Podczas korzystania z Logstash zainstalowanego w obrazie Docker Lite Ubuntu może pojawić się następujące ostrzeżenie:

java.lang.RuntimeException: getprotobyname_r failed

Aby rozwiązać ten błąd, zainstaluj pakiet netbase w pliku Dockerfile:

USER root
RUN apt install netbase -y

Aby uzyskać więcej informacji, zobacz Regresja JNR w usłudze Logstash 7.17.0 (Docker).

Jeśli częstotliwość zdarzeń w Twoim środowisku jest niska, zwiększ wartości max_waiting_time_for_batch_seconds i max_waiting_for_unifier_time_seconds do 60 lub więcej. Ładunek danych pozyskiwania można monitorować za pomocą metryk DCR. Więcej informacji o zmiennych czasu oczekiwania można znaleźć w tabeli Konfiguracja opcjonalna.

Ograniczenia