Udostępnij za pośrednictwem


[Przestarzałe] Tworzenie starszego łącznika bez kodu dla usługi Microsoft Sentinel

Ważne

Zbieranie dzienników z wielu urządzeń i urządzeń jest teraz obsługiwane przez format Common Event Format (CEF) za pośrednictwem amA, dziennika systemowego za pośrednictwem usługi AMA lub dzienników niestandardowych za pośrednictwem łącznika danych AMA w usłudze Microsoft Sentinel. Aby uzyskać więcej informacji, zobacz Znajdowanie łącznika danych usługi Microsoft Sentinel.

Ważne

Istnieje nowsza wersja platformy łączników bez kodu (KPCH). Aby uzyskać więcej informacji na temat nowego interfejsu KPCH, zobacz Tworzenie łącznika bez kodu (wersja zapoznawcza).

Zapoznaj się z tym dokumentem, jeśli musisz zachować lub zaktualizować łącznik danych w oparciu o starszą, starsząą wersję.

FIRMA PARTNERS zapewnia partnerom, zaawansowanym użytkownikom i deweloperom możliwość tworzenia łączników niestandardowych, łączenia ich i pozyskiwania danych z usługą Microsoft Sentinel. Łączniki utworzone za pośrednictwem interfejsu API, szablonu usługi ARM lub jako rozwiązania w centrum zawartości usługi Microsoft Sentinel można wdrażać za pośrednictwem interfejsu API, szablonu usługi ARM.

Łączniki utworzone przy użyciu protokołu KPS są w pełni SaaS, bez żadnych wymagań dotyczących instalacji usług, a także obejmują monitorowanie kondycji i pełną obsługę usługi Microsoft Sentinel.

Utwórz łącznik danych, definiując konfiguracje JSON z ustawieniami sposobu, w jaki strona łącznika danych w usłudze Microsoft Sentinel wygląda wraz z ustawieniami sondowania definiującymi sposób działania połączenia.

Ważne

Ta wersja platformy łącznika bez kodu (KPCH) jest dostępna w wersji zapoznawczej, ale jest również uważana za starszą. Dodatkowe postanowienia dotyczące wersji zapoznawczej platformy Azure obejmują dodatkowe postanowienia prawne dotyczące funkcji platformy Azure, które są dostępne w wersji beta, wersji zapoznawczej lub w inny sposób nie zostały jeszcze wydane w wersji ogólnodostępnej.

Wykonaj następujące kroki, aby utworzyć łącznik USŁUGI CCP i nawiązać połączenie ze źródłem danych z usługi Microsoft Sentinel:

  • Konfigurowanie interfejsu użytkownika łącznika
  • Konfigurowanie ustawień sondowania łącznika
  • Wdrażanie łącznika w obszarze roboczym usługi Microsoft Sentinel
  • Łączenie usługi Microsoft Sentinel ze źródłem danych i rozpoczynanie pozyskiwania danych

W tym artykule opisano składnię używaną w konfiguracjach i procedurach JSON DLA PROTOKOŁU JSON dla wdrożenia łącznika za pośrednictwem interfejsu API, szablonu usługi ARM lub rozwiązania usługi Microsoft Sentinel.

Wymagania wstępne

Przed utworzeniem łącznika zalecamy zapoznanie się z zachowaniem źródła danych i dokładnie tym, jak usługa Microsoft Sentinel będzie musiała nawiązać połączenie.

Na przykład musisz znać typy uwierzytelniania, stronicowania i punktów końcowych interfejsu API, które są wymagane do pomyślnego nawiązania połączeń.

Tworzenie pliku konfiguracji JSON łącznika

Niestandardowy łącznik KPI zawiera dwie podstawowe sekcje JSON potrzebne do wdrożenia. Wypełnij te obszary, aby zdefiniować sposób wyświetlania łącznika w witrynie Azure Portal i sposobu łączenia usługi Microsoft Sentinel ze źródłem danych.

  • connectorUiConfig. Definiuje elementy wizualne i tekst wyświetlany na stronie łącznika danych w usłudze Microsoft Sentinel. Aby uzyskać więcej informacji, zobacz Konfigurowanie interfejsu użytkownika łącznika.

  • pollingConfig. Definiuje sposób, w jaki usługa Microsoft Sentinel zbiera dane ze źródła danych. Aby uzyskać więcej informacji, zobacz Konfigurowanie ustawień sondowania łącznika.

Następnie, jeśli wdrożysz łącznik bez kodu za pośrednictwem usługi ARM, opakujesz te sekcje w szablonie usługi ARM dla łączników danych.

Przejrzyj inne łączniki danych ORGANIZACJI jako przykłady lub pobierz przykładowy szablon, DataConnector_API_CCP_template.json (wersja zapoznawcza).

Konfigurowanie interfejsu użytkownika łącznika

W tej sekcji opisano opcje konfiguracji dostępne do dostosowania interfejsu użytkownika strony łącznika danych.

Na poniższej ilustracji przedstawiono stronę przykładowego łącznika danych wyróżnioną numerami odpowiadającymi godnym uwagi obszarom interfejsu użytkownika:

Zrzut ekranu przedstawiający stronę przykładowego łącznika danych.

  1. Tytuł. Tytuł wyświetlany dla łącznika danych.
  2. Logo. Ikona wyświetlana dla łącznika danych. Dostosowanie tego problemu jest możliwe tylko w przypadku wdrażania w ramach rozwiązania.
  3. Stan. Wskazuje, czy łącznik danych jest połączony z usługą Microsoft Sentinel.
  4. Wykresy danych. Wyświetla odpowiednie zapytania i ilość pozyskanych danych w ciągu ostatnich dwóch tygodni.
  5. Karta Instrukcje. Zawiera sekcję Wymagania wstępne z listą minimalnych weryfikacji, zanim użytkownik będzie mógł włączyć łącznik i instrukcje, aby kierować włączaniem łącznika przez użytkownika. Ta sekcja może zawierać tekst, przyciski, formularze, tabele i inne typowe widżety, aby uprościć proces.
  6. Karta Następne kroki. Zawiera przydatne informacje dotyczące znajdowania danych w dziennikach zdarzeń, takich jak przykładowe zapytania.

Poniżej przedstawiono connectorUiConfig sekcje i składnię wymaganą do skonfigurowania interfejsu użytkownika:

Nazwa właściwości Typ Opis
availability {
"status": 1,
"isPreview": Boolowski
}

stan: 1 Wskazuje, że łącznik jest ogólnie dostępny dla klientów.
isPreview Wskazuje, czy sufiks (wersja zapoznawcza) ma być dołączany do nazwy łącznika.
connectivityCriteria {
"type": SentinelKindsV2,
"value": APIPolling
}
Obiekt, który definiuje sposób sprawdzania, czy łącznik jest poprawnie zdefiniowany. Użyj wartości wskazanych tutaj.
dataTypes dataTypes[] Lista wszystkich typów danych dla łącznika oraz zapytanie służące do pobierania czasu ostatniego zdarzenia dla każdego typu danych.
descriptionMarkdown String Opis łącznika z możliwością dodawania języka markdown w celu jego ulepszenia.
graphQueries graphQueries[] Zapytania przedstawiające pozyskiwanie danych w ciągu ostatnich dwóch tygodni w okienku Wykresy danych.

Podaj jedno zapytanie dla wszystkich typów danych łącznika danych lub inne zapytanie dla każdego typu danych.
graphQueriesTableName String Definiuje nazwę tabeli usługi Log Analytics, z której są pobierane dane dla zapytań.

Nazwa tabeli może być dowolnym ciągiem, ale musi kończyć się ciągiem _CL. Na przykład: TableName_CL.
instructionsSteps (instrukcjeKrok) instrukcjaSteps[] Tablica części widżetów wyjaśniających sposób instalowania łącznika wyświetlana na karcie Instrukcje .
metadane metadane Metadane wyświetlane w opisie łącznika.
permissions uprawnienia[] Informacje wyświetlane w sekcji Wymagania wstępne interfejsu użytkownika zawierające listę uprawnień wymaganych do włączenia lub wyłączenia łącznika.
wydawca String Jest to tekst wyświetlany w sekcji Dostawca .
sampleQueries sampleQueries[] Przykładowe zapytania dla klienta, aby zrozumieć, jak znaleźć dane w dzienniku zdarzeń, które mają być wyświetlane na karcie Następne kroki .
title String Tytuł wyświetlany na stronie łącznika danych.

Łączenie wszystkich tych elementów jest skomplikowane. Użyj narzędzia sprawdzania poprawności środowiska użytkownika strony łącznika, aby przetestować składniki, które są połączone.

dataTypes

Wartość tablicy Type opis
name String Opis zrozumiały dla zmiennejlastDataReceivedQuery, w tym obsługa zmiennej.

Przykład: {{graphQueriesTableName}}
lastDataReceivedQuery String Zapytanie KQL zwracające jeden wiersz i wskazujące ostatni raz dane odebrane lub brak danych, jeśli nie ma odpowiednich danych.

Przykład: {{graphQueriesTableName}}\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)

graphQueries

Definiuje zapytanie, które przedstawia pozyskiwanie danych w ciągu ostatnich dwóch tygodni w okienku Wykresy danych.

Podaj jedno zapytanie dla wszystkich typów danych łącznika danych lub inne zapytanie dla każdego typu danych.

Wartość tablicy Type Opis
metricName String Zrozumiała nazwa grafu.

Przykład: Total data received
legenda String Ciąg wyświetlany w legendzie po prawej stronie wykresu, w tym odwołanie do zmiennej.

Przykład: {{graphQueriesTableName}}
baseQuery String Zapytanie, które filtruje pod kątem odpowiednich zdarzeń, w tym odwołanie do zmiennej.

Przykład: TableName_CL | where ProviderName == "myprovider" lub {{graphQueriesTableName}}

instrukcjeKroki

Ta sekcja zawiera parametry definiujące zestaw instrukcji wyświetlanych na stronie łącznika danych w usłudze Microsoft Sentinel.

Właściwość tablicy Type Opis
title String Opcjonalny. Definiuje tytuł instrukcji.
opis String Opcjonalny. Definiuje zrozumiały opis instrukcji.
innerSteps Tablica Opcjonalny. Definiuje tablicę kroków instrukcji wewnętrznych.
instrukcje Tablica instrukcji Wymagany. Definiuje tablicę instrukcji określonego typu parametru.
bottomBorder Wartość logiczna Opcjonalny. Gdy trueprogram dodaje dolne obramowanie do obszaru instrukcji na stronie łącznika w usłudze Microsoft Sentinel
isComingSoon Wartość logiczna Opcjonalny. Gdy trueelement dodaje tytuł Coming soon na stronie łącznika w usłudze Microsoft Sentinel

instrukcje

Przedstawia grupę instrukcji z różnymi opcjami jako parametrami i możliwością zagnieżdżania większej liczby instrukcjiKrok w grupach.

Parametr Właściwość Tablica opis
ApiKey ApiKey Dodaj symbole zastępcze do pliku konfiguracji JSON łącznika.
Etykieta do kopiowania Etykieta do kopiowania Pokazuje pole tekstowe z przyciskiem kopiowania na końcu. Po wybraniu przycisku wartość pola zostanie skopiowana.
InfoMessage InfoMessage Definiuje wbudowany komunikat informacyjny.
InstrukcjaStepsGroup InstrukcjaStepsGroup Przedstawia grupę instrukcji, opcjonalnie rozwiniętych lub zwijanych, w oddzielnej sekcji instrukcji.
InstallAgent InstallAgent Wyświetla link do innych części platformy Azure w celu spełnienia różnych wymagań dotyczących instalacji.

ApiKey

Możesz utworzyć szablon pliku konfiguracji JSON z parametrami zastępczymi, aby ponownie użyć wielu łączników, a nawet utworzyć łącznik z danymi, które nie są obecnie dostępne.

Aby utworzyć parametry symbolu zastępczego, zdefiniuj dodatkową tablicę o nazwie userRequestPlaceHoldersInput w sekcji Instrukcje w pliku konfiguracyjnym JSON USŁUGI CCP przy użyciu następującej składni:

"instructions": [
                {
                  "parameters": {
                    "enable": "true",
                    "userRequestPlaceHoldersInput": [
                      {
                        "displayText": "Organization Name",
                        "requestObjectKey": "apiEndpoint",
                        "placeHolderName": "{{placeHolder}}"
                      }
                    ]
                  },
                  "type": "APIKey"
                }
              ]

Parametr userRequestPlaceHoldersInput zawiera następujące atrybuty:

Nazwisko Pisz Opis
Tekst wyświetlany String Definiuje wartość wyświetlaną pola tekstowego, która jest wyświetlana użytkownikowi podczas nawiązywania połączenia.
RequestObjectKey String Definiuje identyfikator w sekcji żądania w pliku pollingConfig , aby zastąpić wartość symbolu zastępczego wartością podaną przez użytkownika.

Jeśli nie używasz tego atrybutu, użyj tego atrybutu PollingKeyPaths .
PollingKeyPaths String Definiuje tablicę obiektów JsonPath , która kieruje wywołanie interfejsu API do dowolnego miejsca w szablonie, aby zastąpić wartość symbolu zastępczego wartością użytkownika.

Przykład: "pollingKeyPaths":["$.request.queryParameters.test1"]

Jeśli nie używasz tego atrybutu, użyj tego atrybutu RequestObjectKey .
Nazwa symbolu zastępczego String Definiuje nazwę parametru zastępczego w pliku szablonu JSON. Może to być dowolna unikatowa wartość, taka jak {{placeHolder}}.

Etykieta do kopiowania

Przykład:

Zrzut ekranu przedstawiający przycisk kopiowania wartości w polu.

Przykładowy kod:

{
    "parameters": {
        "fillWith": [
            "WorkspaceId",
            "PrimaryKey"
            ],
        "label": "Here are some values you'll need to proceed.",
        "value": "Workspace is {0} and PrimaryKey is {1}"
    },
    "type": "CopyableLabel"
}
Wartość tablicy Type Opis
fillWith ENUM Opcjonalny. Tablica zmiennych środowiskowych używanych do wypełniania symbolu zastępczego. Rozdziel wiele symboli zastępczych przecinkami. Na przykład: {0},{1}.

Obsługiwane wartości: workspaceId, , primaryKeyworkspaceName, , MicrosoftAwsAccountsubscriptionId
etykieta String Definiuje tekst etykiety powyżej pola tekstowego.
wartość String Definiuje wartość, która ma być obecna w polu tekstowym, obsługuje symbole zastępcze.
Wierszy Wiersze Opcjonalny. Definiuje wiersze w obszarze interfejsu użytkownika. Domyślnie ustaw wartość 1.
wideLabel Wartość logiczna Opcjonalny. Określa szeroką etykietę dla długich ciągów. Domyślnie ustaw wartość false.

InfoMessage

Oto przykład komunikatu informacyjnego wbudowanego:

Zrzut ekranu przedstawiający wbudowany komunikat informacyjny.

Z kolei na poniższej ilustracji przedstawiono komunikat o informacjach nieliniowych:

Zrzut ekranu przedstawiający komunikat informacyjny nieuwzwiązany.

Wartość tablicy Type Opis
text String Zdefiniuj tekst do wyświetlenia w wiadomości.
widoczny Wartość logiczna Określa, czy komunikat jest wyświetlany.
Wbudowany Wartość logiczna Określa sposób wyświetlania komunikatu informacyjnego.

- true: (Zalecane) Wyświetla komunikat informacyjny osadzony w instrukcjach.
- false: Dodaje niebieskie tło.

InstrukcjaStepsGroup

Oto przykład rozszerzalnej grupy instrukcji:

Zrzut ekranu przedstawiający rozwijaną, dodatkową grupę instrukcji.

Wartość tablicy Type Opis
title String Definiuje tytuł kroku instrukcji.
canCollapseAllSections Wartość logiczna Opcjonalny. Określa, czy sekcja jest zwijanym akordeonem, czy nie.
noFxPadding Wartość logiczna Opcjonalny. Jeśli trueparametr zmniejsza dopełnienie wysokości, aby zaoszczędzić miejsce.
Rozszerzony Wartość logiczna Opcjonalny. Jeśli truewartość jest wyświetlana jako rozwinięta domyślnie.

Aby uzyskać szczegółowy przykład, zobacz konfigurację JSON łącznika DNS systemu Windows.

InstallAgent

Niektóre typy InstallAgent są wyświetlane jako przycisk, inne będą wyświetlane jako link. Oto przykłady obu tych elementów:

Zrzut ekranu przedstawiający link dodany jako przycisk.

Zrzut ekranu przedstawiający link dodany jako tekst wbudowany.

Wartości tablicy Type Opis
linkType ENUM Określa typ łącza jako jedną z następujących wartości:

InstallAgentOnWindowsVirtualMachine
InstallAgentOnWindowsNonAzure
InstallAgentOnLinuxVirtualMachine
InstallAgentOnLinuxNonAzure
OpenSyslogSettings
OpenCustomLogsSettings
OpenWaf
OpenAzureFirewall OpenMicrosoftAzureMonitoring
OpenFrontDoors
OpenCdnProfile
AutomaticDeploymentCEF
OpenAzureInformationProtection
OpenAzureActivityLog
OpenIotPricingModel
OpenPolicyAssignment
OpenAllAssignmentsBlade
OpenCreateDataCollectionRule
policyDefinitionGuid String Wymagane w przypadku używania linku OpenPolicyAssignment . W przypadku łączników opartych na zasadach definiuje identyfikator GUID wbudowanej definicji zasad.
assignMode ENUM Opcjonalny. W przypadku łączników opartych na zasadach definiuje tryb przypisywania jako jedną z następujących wartości: Initiative, Policy
dataCollectionRuleType ENUM Opcjonalny. W przypadku łączników opartych na kontrolerze domeny definiuje typ reguły zbierania danych jako jeden z następujących: SecurityEvent, ForwardEvent

metadane

Ta sekcja zawiera metadane w interfejsie użytkownika łącznika danych w obszarze Opis .

Wartość kolekcji Type Opis
rodzaj String Definiuje rodzaj tworzonego szablonu usługi ARM. Zawsze używaj polecenia dataConnector.
source String Opisuje źródło danych przy użyciu następującej składni:
{
"kind":struna
"name":struna
}
autor String Opisuje autora łącznika danych przy użyciu następującej składni:
{
"name":struna
}
wsparcie String Opisz obsługę łącznika danych przy użyciu następującej składni:
{
"tier":struna
"name":struna
"email":struna
"link":Ciąg adresu URL
}

uprawnienia

Wartość tablicy Type Opis
urząd celny String Opisuje wszelkie uprawnienia niestandardowe wymagane dla połączenia danych w następującej składni:
{
"name":string,
"description":struna
}

Przykład: wartość celna jest wyświetlana w sekcji Wymagania wstępne usługi Microsoft Sentinel z niebieską ikoną informacyjną. W przykładzie usługi GitHub jest to skorelowane z wierszem Klucz osobistego tokenu interfejsu API usługi GitHub: potrzebujesz dostępu do osobistego tokenu usługi GitHub...
Licencje ENUM Definiuje wymagane licencje jako jedną z następujących wartości: OfficeIRM,OfficeATP, Office365, AadP1P2AatpMcasMdatp, , , , MtpIoT

Przykład: wartość licencji jest wyświetlana w usłudze Microsoft Sentinel jako: Licencja: Wymagana Azure AD — wersja Premium P2
resourceProvider resourceProvider Opisuje wszelkie wymagania wstępne dotyczące zasobu platformy Azure.

Przykład: wartość resourceProvider jest wyświetlana w sekcji Wymagania wstępne usługi Microsoft Sentinel jako:
Obszar roboczy: wymagane jest uprawnienie do odczytu i zapisu.
Klucze: wymagane są uprawnienia do odczytu kluczy udostępnionych dla obszaru roboczego.
tenant tablica wartości ENUM
Przykład:

"tenant": [
"GlobalADmin",
"SecurityAdmin"
]
Definiuje wymagane uprawnienia jako co najmniej jedną z następujących wartości: "GlobalAdmin", , "SecurityAdmin", "SecurityReader""InformationProtection"

Przykład: wyświetla wartość dzierżawy w usłudze Microsoft Sentinel jako: Uprawnienia dzierżawy : Wymagane Global Administrator lub Security Administrator w dzierżawie obszaru roboczego

resourceProvider

wartość tablicy podrzędnej Type Opis
dostawca ENUM Opisuje dostawcę zasobów z jedną z następujących wartości:
- Microsoft.OperationalInsights/workspaces
- Microsoft.OperationalInsights/solutions
- Microsoft.OperationalInsights/workspaces/datasources
- microsoft.aadiam/diagnosticSettings
- Microsoft.OperationalInsights/workspaces/sharedKeys
- Microsoft.Authorization/policyAssignments
providerDisplayName String Element listy w obszarze Wymagania wstępne , który będzie wyświetlać czerwony znacznik wyboru "x" lub zielony po zweryfikowaniu wymaganychpermisji na stronie łącznika. Przykład "Workspace"
permissionsDisplayText String Wyświetlanie tekstu dla uprawnień do odczytu, zapisu lub odczytu i zapisu , które powinny odpowiadać wartościom skonfigurowanym w wymaganychpermisjach
requiredPermissions {
"action":Wartość logiczna,
"delete":Wartość logiczna,
"read":Wartość logiczna,
"write":Boolowski
}
Opisuje minimalne uprawnienia wymagane dla łącznika.
zakres ENUM Opisuje zakres łącznika danych jako jedną z następujących wartości: "Subscription", , "ResourceGroup""Workspace"

sampleQueries

wartość tablicy Type Opis
opis String Opis opisowy przykładowego zapytania.

Przykład: Top 10 vulnerabilities detected
query String Przykładowe zapytanie używane do pobierania danych typu danych.

Przykład: {{graphQueriesTableName}}\n | sort by TimeGenerated\n | take 10

Aby zdefiniować link wbudowany przy użyciu języka Markdown, użyj poniższego przykładu. Tutaj link znajduje się w opisie instrukcji:

{
   "title": "",
   "description": "Make sure to configure the machine's security according to your organization's security policy\n\n\n[Learn more >](https://aka.ms/SecureCEF)"
}

Aby zdefiniować link jako szablon usługi ARM, użyj następującego przykładu jako przewodnika:

{
   "title": "Azure Resource Manager (ARM) template",
   "description": "1. Click the **Deploy to Azure** button below.\n\n\t[![Deploy To Azure](https://aka.ms/deploytoazurebutton)]({URL to custom ARM template})"
}

Weryfikowanie środowiska użytkownika strony łącznika danych

Wykonaj następujące kroki, aby renderować i weryfikować środowisko użytkownika łącznika.

  1. Dostęp do narzędzia testowego można uzyskać pod tym adresem URL — https://aka.ms/sentineldataconnectorvalidateurl
  2. Przejdź do usługi Microsoft Sentinel —> łączniki danych
  3. Kliknij przycisk "importuj" i wybierz plik JSON, który zawiera connectorUiConfig tylko sekcję łącznika danych.

Aby uzyskać więcej informacji na temat tego narzędzia do walidacji, zobacz Instrukcje dotyczące tworzenia łącznika w naszym przewodniku kompilacji usługi GitHub.

Uwaga

Ponieważ parametr instrukcji APIKey jest specyficzny dla łącznika bez kodu, tymczasowo usuń tę sekcję, aby użyć narzędzia sprawdzania poprawności lub zakończy się niepowodzeniem.

Konfigurowanie ustawień sondowania łącznika

W tej sekcji opisano konfigurację sposobu sondowania danych ze źródła danych dla łącznika danych bez kodu.

Poniższy kod przedstawia składnię pollingConfig sekcji pliku konfiguracji PROTOKOŁU KPCH.

"pollingConfig": {
    "auth": {
    },
    "request": {
    },
    "response": {
    },
    "paging": {
    }
 }

Sekcja pollingConfig zawiera następujące właściwości:

Nazwisko Pisz Opis
Auth String Opisuje właściwości uwierzytelniania do sondowania danych. Aby uzyskać więcej informacji, zobacz Konfiguracja uwierzytelniania.
auth.authType String Obowiązkowy. Definiuje typ uwierzytelniania zagnieżdżonego auth wewnątrz obiektu jako jedną z następujących wartości: Basic, , APIKeyOAuth2
prosić Zagnieżdżony kod JSON Obowiązkowy. Opisuje ładunek żądania do sondowania danych, takich jak punkt końcowy interfejsu API. Aby uzyskać więcej informacji, zobacz konfiguracja żądania.
odpowiedź Zagnieżdżony kod JSON Obowiązkowy. Opisuje obiekt odpowiedzi i zagnieżdżony komunikat zwrócony z interfejsu API podczas sondowania danych. Aby uzyskać więcej informacji, zobacz konfiguracja odpowiedzi.
stronicowanie Zagnieżdżony kod JSON Opcjonalny. Opisuje ładunek stronicowania podczas sondowania danych. Aby uzyskać więcej informacji, zobacz Konfiguracja stronicowania.

Aby uzyskać więcej informacji, zobacz Przykładowy kod pollingConfig.

Konfiguracja uwierzytelniania

Sekcja auth konfiguracji pollingConfig zawiera następujące parametry, w zależności od typu zdefiniowanego w elemecie authType :

Podstawowe parametry authType

Nazwisko Pisz Opis
Nazwa użytkownika String Obowiązkowy. Definiuje nazwę użytkownika.
Hasło String Obowiązkowy. Definiuje hasło użytkownika.

Parametry authType klucza interfejsu API

Nazwisko Pisz Opis
APIKeyName String Opcjonalny. Definiuje nazwę klucza interfejsu API jako jedną z następujących wartości:

- XAuthToken
- Authorization
IsAPIKeyInPostPayload Wartość logiczna Określa, gdzie jest zdefiniowany klucz interfejsu API.

Prawda: klucz interfejsu API jest zdefiniowany w ładunku żądania POST
Fałsz: klucz interfejsu API jest zdefiniowany w nagłówku
APIKeyIdentifier String Opcjonalny. Definiuje nazwę identyfikatora klucza interfejsu API.

Na przykład gdzie autoryzacja jest zdefiniowana jako "Authorization": "token <secret>", ten parametr jest zdefiniowany jako: {APIKeyIdentifier: “token”})

Parametry authType protokołu OAuth2

Platforma łącznika bez kodu obsługuje udzielanie kodu autoryzacji OAuth 2.0.

Typ udzielania kodu autoryzacji jest używany przez poufnych i publicznych klientów do wymiany kodu autoryzacji dla tokenu dostępu.

Po powrocie użytkownika do klienta za pośrednictwem adresu URL przekierowania aplikacja pobierze kod autoryzacji z adresu URL i użyje go do żądania tokenu dostępu.

Nazwisko Pisz Opis
Nazwa przepływu String Obowiązkowy. Definiuje przepływ OAuth2.

Obsługiwana wartość: AuthCode — wymaga przepływu autoryzacji
AccessToken String Opcjonalny. Definiuje token dostępu OAuth2, który ma zastosowanie, gdy token dostępu nie wygaśnie.
AccessTokenPrepend String Opcjonalny. Definiuje prepend tokenu dostępu OAuth2. Wartość domyślna to Bearer.
RefreshToken String Obowiązkowe dla typów uwierzytelniania OAuth2. Definiuje token odświeżania OAuth2.
TokenEndpoint String Obowiązkowe dla typów uwierzytelniania OAuth2. Definiuje punkt końcowy usługi tokenu OAuth2.
AuthorizationEndpoint String Opcjonalny. Definiuje punkt końcowy usługi autoryzacji OAuth2. Używane tylko podczas dołączania lub podczas odnawiania tokenu odświeżania.
PrzekierowanieEndpoint String Opcjonalny. Definiuje punkt końcowy przekierowania podczas dołączania.
AccessTokenExpirationDateTimeInUtc String Opcjonalny. Definiuje data/godzina wygaśnięcia tokenu dostępu w formacie UTC. Istotne w przypadku, gdy token dostępu nie wygaśnie, a zatem ma dużą datę/godzinę w formacie UTC lub gdy token dostępu ma dużą datę/godzinę wygaśnięcia.
RefreshTokenExpirationDateTimeInUtc String Obowiązkowe dla typów uwierzytelniania OAuth2. Definiuje data/godzina wygaśnięcia tokenu odświeżania w formacie UTC.
TokenEndpointHeaders Ciąg słownika<, obiekt> Opcjonalny. Definiuje nagłówki podczas wywoływania punktu końcowego usługi tokenu OAuth2.

Zdefiniuj ciąg w formacie serializowanym dictionary<string, string> : {'<attr_name>': '<val>', '<attr_name>': '<val>'... }
AuthorizationEndpointHeaders Ciąg słownika<, obiekt> Opcjonalny. Definiuje nagłówki podczas wywoływania punktu końcowego usługi autoryzacji OAuth2. Używane tylko podczas dołączania lub podczas odnawiania tokenu odświeżania.

Zdefiniuj ciąg w formacie serializowanym dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... }
AuthorizationEndpointQueryParameters Ciąg słownika<, obiekt> Opcjonalny. Definiuje parametry zapytania podczas wywoływania punktu końcowego usługi autoryzacji OAuth2. Używane tylko podczas dołączania lub podczas odnawiania tokenu odświeżania.

Zdefiniuj ciąg w formacie serializowanym dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... }
TokenEndpointQueryParameters Ciąg słownika<, obiekt> Opcjonalny. Zdefiniuj parametry zapytania podczas wywoływania punktu końcowego usługi tokenu OAuth2.

Zdefiniuj ciąg w formacie serializowanym dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... }
IsTokenEndpointPostPayloadJson Wartość logiczna Opcjonalnie wartość domyślna to false. Określa, czy parametry zapytania są w formacie JSON i ustawiane w ładunku POST żądania.
IsClientSecretInHeader Wartość logiczna Opcjonalnie wartość domyślna to false. Określa, czy client_id wartości i client_secret są zdefiniowane w nagłówku, podobnie jak w schemacie uwierzytelniania podstawowego, zamiast w ładunku POST.
RefreshTokenLifetimeinSecAttributeName String Opcjonalny. Definiuje nazwę atrybutu z odpowiedzi punktu końcowego tokenu, określając okres istnienia tokenu odświeżania w sekundach.
IsJwtBearerFlow Wartość logiczna Opcjonalnie wartość domyślna to false. Określa, czy używasz JWT.
JwtHeaderInJson Ciąg słownika<, obiekt> Opcjonalny. Zdefiniuj nagłówki JWT w formacie JSON.

Zdefiniuj ciąg w formacie serializowanym dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>...}
JwtClaimsInJson Ciąg słownika<, obiekt> Opcjonalny. Definiuje oświadczenia JWT w formacie JSON.

Zdefiniuj ciąg w formacie serializowanym dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ...}
JwtPem String Opcjonalny. Definiuje klucz tajny w formacie PEM PKcs1: '-----BEGIN RSA PRIVATE KEY-----\r\n{privatekey}\r\n-----END RSA PRIVATE KEY-----\r\n'

Pamiętaj, aby zachować '\r\n' kod na miejscu.
RequestTimeoutInSeconds Integer Opcjonalny. Określa limit czasu w sekundach podczas wywoływania punktu końcowego usługi tokenu. Wartość domyślna to 180 sekund

Oto przykład sposobu, w jaki konfiguracja protokołu OAuth2 może wyglądać:

"pollingConfig": {
    "auth": {
        "authType": "OAuth2",
        "authorizationEndpoint": "https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&prompt=consent",
        "redirectionEndpoint": "https://portal.azure.com/TokenAuthorize",
        "tokenEndpoint": "https://oauth2.googleapis.com/token",
        "authorizationEndpointQueryParameters": {},
        "tokenEndpointHeaders": {
            "Accept": "application/json"
        },
        "TokenEndpointQueryParameters": {},
        "isClientSecretInHeader": false,
        "scope": "https://www.googleapis.com/auth/admin.reports.audit.readonly",
        "grantType": "authorization_code",
        "contentType": "application/x-www-form-urlencoded",
        "FlowName": "AuthCode"
    },

Parametry authType sesji

Nazwisko Pisz Opis
Parametry zapytań Ciąg słownika<, obiekt> Opcjonalny. Lista parametrów zapytania w formacie serializowanym dictionary<string, string> :

{'<attr_name>': '<val>', '<attr_name>': '<val>'... }
IsPostPayloadJson Wartość logiczna Opcjonalny. Określa, czy parametry zapytania są w formacie JSON.
Nagłówki Ciąg słownika<, obiekt> Opcjonalny. Definiuje nagłówek używany podczas wywoływania punktu końcowego w celu pobrania identyfikatora sesji oraz podczas wywoływania interfejsu API punktu końcowego.

Zdefiniuj ciąg w formacie serializowanym dictionary<string, string> : {'<attr_name>': '<val>', '<attr_name>': '<val>'... }
SessionTimeoutInMinutes String Opcjonalny. Definiuje limit czasu sesji w minutach.
SessionIdName String Opcjonalny. Definiuje nazwę identyfikatora sesji.
SessionLoginRequestUri String Opcjonalny. Definiuje identyfikator URI żądania logowania sesji.

Konfiguracja żądania

Sekcja request konfiguracji pollingConfig zawiera następujące parametry:

Nazwisko Pisz Opis
apiEndpoint String Obowiązkowy. Definiuje punkt końcowy do ściągania danych.
httpMethod String Obowiązkowy. Definiuje metodę interfejsu API: GET lub POST
queryTimeFormat Ciąg lub UnixTimestamp lub UnixTimestampInMills Obowiązkowy. Definiuje format używany do definiowania czasu zapytania.

Ta wartość może być ciągiem lub w formacie UnixTimestamp lub UnixTimestampInMills , aby wskazać czas rozpoczęcia i zakończenia zapytania w pliku UnixTimestamp.
startTimeAttributeName String Opcjonalny. Definiuje nazwę atrybutu definiującego czas rozpoczęcia zapytania.
endTimeAttributeName String Opcjonalny. Definiuje nazwę atrybutu definiującego czas zakończenia zapytania.
queryTimeIntervalAttributeName String Opcjonalny. Definiuje nazwę atrybutu definiującego interwał czasu zapytania.
queryTimeIntervalDelimiter String Opcjonalny. Definiuje ogranicznik interwału czasu zapytania.
queryWindowInMin Integer Opcjonalny. Definiuje dostępne okno zapytania w minutach.

Wartość minimalna: 5
queryParameters Ciąg słownika<, obiekt> Opcjonalny. Definiuje parametry przekazywane w zapytaniu w ścieżce eventsJsonPaths .

Zdefiniuj ciąg w formacie serializowanym dictionary<string, string> : {'<attr_name>': '<val>', '<attr_name>': '<val>'... }.
queryParametersTemplate String Opcjonalny. Definiuje szablon parametrów zapytania do użycia podczas przekazywania parametrów zapytania w zaawansowanych scenariuszach.

Na przykład: "queryParametersTemplate": "{'cid': 1234567, 'cmd': 'reporting', 'format': 'siem', 'data': { 'from': '{_QueryWindowStartTime}', 'to': '{_QueryWindowEndTime}'}, '{_APIKeyName}': '{_APIKey}'}".

{_QueryWindowStartTime} i {_QueryWindowEndTime} są obsługiwane tylko w parametrach queryParameters i queryParametersTemplate żądania.

{_APIKeyName} i {_APIKey} są obsługiwane tylko w parametrze queryParametersTemplate żądania.
isPostPayloadJson Wartość logiczna Opcjonalny. Określa, czy ładunek POST jest w formacie JSON.
rateLimitQPS Liczba rzeczywista Opcjonalny. Definiuje liczbę wywołań lub zapytań dozwolonych w ciągu sekundy.
timeoutInSeconds Integer Opcjonalny. Definiuje limit czasu żądania w sekundach.
retryCount Integer Opcjonalny. Definiuje liczbę ponownych prób żądania do wypróbowania w razie potrzeby.
Nagłówki Ciąg słownika<, obiekt> Opcjonalny. Definiuje wartość nagłówka żądania w formacie serializowanym dictionary<string, object> : {'<attr_name>': '<serialized val>', '<attr_name>': '<serialized val>'... }

Konfiguracja odpowiedzi

Sekcja response konfiguracji pollingConfig zawiera następujące parametry:

Nazwisko Pisz Opis
eventsJsonPaths Lista ciągów Obowiązkowy. Definiuje ścieżkę do komunikatu w formacie JSON odpowiedzi.

Wyrażenie ścieżki JSON określa ścieżkę do elementu lub zestawu elementów w strukturze JSON
successStatusJsonPath String Opcjonalny. Definiuje ścieżkę do komunikatu o powodzeniu w formacie JSON odpowiedzi.
successStatusValue String Opcjonalny. Definiuje ścieżkę do wartości komunikatu o powodzeniu w formacie JSON odpowiedzi
isGzipCompressed Wartość logiczna Opcjonalny. Określa, czy odpowiedź jest kompresowana w pliku gzip.

Poniższy kod przedstawia przykład wartości eventsJsonPaths dla komunikatu najwyższego poziomu:

"eventsJsonPaths": [
              "$"
            ]

Konfiguracja stronicowania

Sekcja paging konfiguracji pollingConfig zawiera następujące parametry:

Nazwisko Pisz Opis
pagingType String Obowiązkowy. Określa typ stronicowania do użycia w wynikach jako jedną z następujących wartości: None, , LinkHeaderNextPageToken, NextPageUrlOffset
linkHeaderTokenJsonPath String Opcjonalny. Definiuje ścieżkę JSON do nagłówka linku w formacie JSON odpowiedzi, jeśli LinkHeader element nie jest zdefiniowany w nagłówku odpowiedzi.
nextPageTokenJsonPath String Opcjonalny. Definiuje ścieżkę do następnego tokenu strony JSON.
hasNextFlagJsonPath String Opcjonalny. Definiuje ścieżkę do atrybutu flagi HasNextPage .
nextPageTokenResponseHeader String Opcjonalny. Definiuje nazwę nagłówka tokenu następnej strony w odpowiedzi.
nextPageParaName String Opcjonalny. Określa nazwę następnej strony w żądaniu.
nextPageRequestHeader String Opcjonalny. Określa nazwę nagłówka następnej strony w żądaniu.
nextPageUrl String Opcjonalny. Określa adres URL następnej strony , jeśli różni się on od początkowego adresu URL żądania.
nextPageUrlQueryParameters String Opcjonalny. Określa parametry zapytania adresu URL następnej strony , jeśli różnią się one od adresu URL początkowego żądania.

Zdefiniuj ciąg w formacie serializowanym dictionary<string, object> : {'<attr_name>': <val>, '<attr_name>': <val>... }
offsetParaName String Opcjonalny. Definiuje nazwę parametru przesunięcia.
pageSizeParaName String Opcjonalny. Definiuje nazwę parametru rozmiaru strony.
Pagesize Integer Definiuje rozmiar stronicowania.

Przykładowy kod pollingConfig

Poniższy kod przedstawia przykład pollingConfig sekcji pliku konfiguracji PROTOKOŁU KPCH:

"pollingConfig": {
    "auth": {
        "authType": "APIKey",
        "APIKeyIdentifier": "token",
        "APIKeyName": "Authorization"
     },
     "request": {
        "apiEndpoint": "https://api.github.com/../{{placeHolder1}}/audit-log",
        "rateLimitQPS": 50,
        "queryWindowInMin": 15,
        "httpMethod": "Get",
        "queryTimeFormat": "yyyy-MM-ddTHH:mm:ssZ",
        "retryCount": 2,
        "timeoutInSeconds": 60,
        "headers": {
           "Accept": "application/json",
           "User-Agent": "Scuba"
        },
        "queryParameters": {
           "phrase": "created:{_QueryWindowStartTime}..{_QueryWindowEndTime}"
        }
     },
     "paging": {
        "pagingType": "LinkHeader",
        "pageSizeParaName": "per_page"
     },
     "response": {
        "eventsJsonPaths": [
          "$"
        ]
     }
}

Wdrażanie łącznika w usłudze Microsoft Sentinel i rozpoczynanie pozyskiwania danych

Po utworzeniu pliku konfiguracji JSON, w tym zarówno interfejsu użytkownika, jak i konfiguracji sondowania, wdróż łącznik w obszarze roboczym usługi Microsoft Sentinel.

  1. Użyj jednej z następujących opcji, aby wdrożyć łącznik danych.

    Napiwek

    Zaletą wdrażania za pośrednictwem szablonu usługi Azure Resource Manager (ARM) jest to, że kilka wartości jest wbudowanych w szablon i nie trzeba ich definiować ręcznie w wywołaniu interfejsu API.

    Opakuj kolekcje konfiguracji JSON w szablonie usługi ARM, aby wdrożyć łącznik. Aby upewnić się, że łącznik danych zostanie wdrożony w prawidłowym obszarze roboczym, pamiętaj, aby zdefiniować obszar roboczy w szablonie usługi ARM lub wybrać obszar roboczy podczas wdrażania szablonu usługi ARM.

    1. Przygotuj plik JSON szablonu usługi ARM dla łącznika. Zobacz na przykład następujące pliki JSON szablonu usługi ARM:

      • Łącznik danych w rozwiązaniu Slack
      • Łącznik danych w rozwiązaniu GitHub
    2. W witrynie Azure Portal wyszukaj pozycję Wdróż szablon niestandardowy.

    3. Na stronie Wdrożenie niestandardowe wybierz pozycję Skompiluj własny szablon w edytorze>Załaduj plik. Przejdź do lokalnego szablonu usługi ARM i wybierz go, a następnie zapisz zmiany.

    4. Wybierz subskrypcję i grupę zasobów, a następnie wprowadź obszar roboczy usługi Log Analytics, w którym chcesz wdrożyć łącznik niestandardowy.

    5. Wybierz pozycję Przejrzyj i utwórz , aby wdrożyć łącznik niestandardowy w usłudze Microsoft Sentinel.

    6. W usłudze Microsoft Sentinel przejdź do strony Łączniki danych, wyszukaj nowy łącznik. Skonfiguruj je, aby rozpocząć pozyskiwanie danych.

    Aby uzyskać więcej informacji, zobacz Wdrażanie szablonu lokalnego w dokumentacji usługi Azure Resource Manager.

  2. Skonfiguruj łącznik danych, aby połączyć źródło danych i rozpocząć pozyskiwanie danych do usługi Microsoft Sentinel. Możesz nawiązać połączenie ze źródłem danych za pośrednictwem portalu, tak jak w przypadku wbudowanych łączników danych lub za pośrednictwem interfejsu API.

    Gdy łączysz się przy użyciu witryny Azure Portal, dane użytkownika są wysyłane automatycznie. Podczas nawiązywania połączenia za pośrednictwem interfejsu API należy wysłać odpowiednie parametry uwierzytelniania w wywołaniu interfejsu API.

    Na stronie łącznika danych usługi Microsoft Sentinel postępuj zgodnie z podanymi instrukcjami, aby nawiązać połączenie z łącznikiem danych.

    Strona łącznika danych w usłudze Microsoft Sentinel jest kontrolowana przez konfigurację InstrukcjeKros w connectorUiConfig elemekcie pliku konfiguracji JSON PROTOKOŁU KPI. Jeśli masz problemy z połączeniem interfejsu użytkownika, upewnij się, że masz poprawną konfigurację dla typu uwierzytelniania.

  3. W usłudze Microsoft Sentinel przejdź do strony Dzienniki i sprawdź, czy dzienniki ze źródła danych przepływają do obszaru roboczego.

Jeśli nie widzisz danych przesyłanych do usługi Microsoft Sentinel, sprawdź dokumentację źródła danych i zasoby rozwiązywania problemów, sprawdź szczegóły konfiguracji i sprawdź łączność. Aby uzyskać więcej informacji, zobacz Monitorowanie kondycji łączników danych.

Odłączanie łącznika

Jeśli nie potrzebujesz już danych łącznika, odłącz łącznik, aby zatrzymać przepływ danych.

Użyj jednej z poniższych metod:

  • Azure Portal: na stronie łącznika danych usługi Microsoft Sentinel wybierz pozycję Rozłącz.

  • Interfejs API: użyj interfejsu API DISCONNECT , aby wysłać wywołanie PUT z pustą treścią do następującego adresu URL:

    https://management.azure.com /subscriptions/{{SUB}}/resourceGroups/{{RG}}/providers/Microsoft.OperationalInsights/workspaces/{{WS-NAME}}/providers/Microsoft.SecurityInsights/dataConnectors/{{Connector_Id}}/disconnect?api-version=2021-03-01-preview
    

Następne kroki

Jeśli jeszcze tego nie zrobiłeś, udostępnij nowy łącznik danych bez kodu społeczności usługi Microsoft Sentinel. Utwórz rozwiązanie dla łącznika danych i udostępnij je w witrynie Microsoft Sentinel Marketplace.

Aby uzyskać więcej informacji, zobacz