[Veraltet] Erstellen eines älteren codelosen Connectors für Microsoft Sentinel
Wichtig
Die Protokollsammlung aus vielen Appliances und Geräten wird jetzt vom Common Event Format (CEF) über AMA, Syslog über AMA oder benutzerdefinierte Protokolle über den AMA-Datenconnector in Microsoft Sentinel unterstützt. Weitere Informationen finden Sie unter Suchen Ihres Microsoft Sentinel-Datenconnectors.
Wichtig
Es gibt eine neuere Version der Codeless Connector Platform (CCP). Weitere Informationen zur neuen CCP finden Sie unter Erstellen eines codelosen Connectors (Vorschau).
Verweisen Sie auf dieses Dokument, wenn Sie einen Datenconnector basierend auf dieser älteren Legacyversion der CCP verwalten oder aktualisieren müssen.
Die CCP bietet Partnern, fortgeschrittenen Benutzer*innen und Entwickler*innen die Möglichkeit, benutzerdefinierte Connectors zu erstellen, sie zu verbinden und Daten in Microsoft Sentinel zu erfassen. Über die CCP erstellte Connectors können über API, eine ARM-Vorlage oder als Lösung im Microsoft Sentinel Content Hub bereitgestellt werden.
Connectors, die mithilfe der CCP erstellt werden, sind vollständig SaaS-basiert. Es müssen keine Dienste installiert werden. Außerdem sind Funktionen zur Systemüberwachung enthalten, und es besteht eine vollständige Unterstützung durch Microsoft Sentinel.
Erstellen Sie Ihren Datenconnector, indem Sie JSON-Konfigurationen mit Einstellungen für die Darstellung der Datenconnectorseite in Microsoft Sentinel sowie Abrufeinstellungen festlegen, die definieren, wie die Verbindung funktioniert.
Wichtig
Diese Version der Codeless Connector Platform (CCP) befindet sich in der Vorschau, wird aber auch als Legacyversion betrachtet. In den zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen finden Sie weitere rechtliche Bedingungen, die für Azure-Features gelten, die sich in der Beta- oder Vorschauversion befinden oder anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.
Verwenden Sie die folgenden Schritte, um Ihren CCP-Connector zu erstellen und eine Verbindung mit Ihrer Datenquelle von Microsoft Sentinel herzustellen:
- Konfigurieren der Benutzeroberfläche des Connectors
- Konfigurieren der Abrufeinstellungen des Connectors
- Bereitstellen Ihres Connectors in Ihrem Microsoft Sentinel-Arbeitsbereich
- Herstellen einer Verbindung von Microsoft Sentinel mit Ihrer Datenquelle und Starten der Datenerfassung
In diesem Artikel werden die in den CCP-JSON-Konfigurationen verwendete Syntax und die Verfahren zur Bereitstellung Ihres Connectors über die API, eine ARM-Vorlage oder eine Microsoft Sentinel-Lösung beschrieben.
Voraussetzungen
Bevor Sie einen Connector erstellen, empfehlen wir Ihnen, sich mit der Funktionsweise Ihrer Datenquelle vertraut zu machen und zu verstehen, wie Microsoft Sentinel die Verbindung genau herstellen muss.
Sie müssen z. B. die Arten von Authentifizierung, Paginierung und API-Endpunkten verstehen, die für erfolgreiche Verbindungen erforderlich sind.
Erstellen einer JSON-Konfigurationsdatei für den Connector
Ihr benutzerdefinierter CCP-Connector verfügt über zwei primäre JSON-Abschnitte, die für die Bereitstellung erforderlich sind. Füllen Sie diese Bereiche aus, um zu definieren, wie Ihr Connector im Azure-Portal angezeigt wird und wie er Microsoft Sentinel mit Ihrer Datenquelle verbindet.
connectorUiConfig
. Definiert die visuellen Elemente und den Text, die auf der Datenconnectorseite in Microsoft Sentinel angezeigt werden. Weitere Informationen finden Sie unter Konfigurieren der Benutzeroberfläche Ihres Connectors.pollingConfig
. Legt fest, wie Microsoft Sentinel Daten von Ihrer Datenquelle erfasst. Weitere Informationen finden Sie unter Konfigurieren der Abrufeinstellungen Ihres Connectors.
Wenn Sie dann Ihren codelosen Connector über ARM bereitstellen, umschließen Sie diese Abschnitte in der ARM-Vorlage für Datenconnectors.
Sehen Sie sich andere CCP-Datenconnectors als Beispiele an, oder laden Sie die Beispielvorlage DataConnector_API_CCP_template.json (Vorschau) herunter.
Konfigurieren der Benutzeroberfläche Ihres Connectors
In diesem Abschnitt werden die Konfigurationsoptionen beschrieben, die zum Anpassen der Benutzeroberfläche der Seite „Datenconnector“ verfügbar sind.
Die folgende Abbildung zeigt ein Beispiel für eine Datenconnectorseite, die durch Zahlen hervorgehoben wird, die den relevanten Bereichen der Benutzeroberfläche entsprechen:
- Titel: Der für Ihren Datenconnector angezeigte Titel.
- Logo. Das für Ihren Datenconnector angezeigte Symbol. Sie können es nur anpassen, wenn Sie es als Teil einer Lösung bereitstellen.
- Status: Gibt an, ob Ihr Datenconnector mit Microsoft Sentinel verbunden ist.
- Datendiagramme: Zeigt relevante Abfragen und die Menge der in den letzten zwei Wochen erfassten Daten an.
- Registerkarte „Anweisungen“. Enthält den Abschnitt Voraussetzungen mit einer Liste der minimalen Prüfungen, bevor der Benutzer den Connector aktivieren kann, sowie eine Anleitung, die den Benutzer bei der Aktivierung des Connectors unterstützt. Dieser Abschnitt kann Text, Schaltflächen, Formulare, Tabellen und andere gängige Widgets enthalten, um den Prozess zu vereinfachen.
- Registerkarte „Nächste Schritte“: Enthält nützliche Informationen, um zu verstehen, wie Daten in den Ereignisprotokollen gefunden werden können, z. B. Beispielabfragen.
Hier sind die connectorUiConfig
-Abschnitte und die Syntax, die zum Konfigurieren der Benutzeroberfläche erforderlich sind:
Eigenschaftenname | Type | BESCHREIBUNG |
---|---|---|
availability | { "status": 1, "isPreview": Boolescher Wert} |
Status: 1 gibt an, dass der Connector für Kunden allgemein verfügbar ist. isPreview gibt an, ob das Suffix (Vorschau) in den Connectornamen eingeschlossen werden soll. |
connectivityCriteria | { "type": SentinelKindsV2, "value": APIPolling } |
Ein Objekt, das definiert, wie überprüft wird, ob der Connector richtig festgelegt ist. Verwenden Sie die hier angegebenen Werte. |
dataTypes | dataTypes[] | Eine Liste aller Datentypen für Ihren Connector und eine Abfrage zum Abrufen des Zeitpunkts des letzten Ereignisses für jeden Datentyp. |
descriptionMarkdown | String | Eine Beschreibung für den Connector mit der Möglichkeit, Markdown-Sprachen hinzuzufügen, um sie zu verbessern. |
graphQueries | graphQueries[] | Abfragen, die die Datenerfassung der letzten zwei Wochen im Bereich Datendiagramme anzeigen. Stellen Sie entweder eine Abfrage für alle Datentypen des Datenconnectors oder eine andere Abfrage für die einzelnen Datentypen zur Verfügung. |
graphQueriesTableName | String | Definiert den Namen der Log Analytics-Tabelle, aus der Daten für Ihre Abfragen gepullt werden. Der Tabellenname kann eine beliebige Zeichenfolge sein, muss jedoch mit _CL enden. Beispiel: TableName_CL |
instructionsSteps | instructionSteps[] | Ein Array von Widgetkomponenten, die erläutern, wie der Connector installiert wird, der auf der Registerkarte Anweisungen angezeigt wird. |
metadata | metadata | Metadaten, die unter der Connectorbeschreibung angezeigt werden. |
Berechtigungen | permissions[] | Die Informationen, die im Abschnitt Voraussetzungen der Benutzeroberfläche angezeigt werden, in der die Berechtigungen aufgeführt sind, die zum Aktivieren oder Deaktivieren des Connectors erforderlich sind. |
publisher | String | Dies ist der Text, der im Abschnitt Anbieter angezeigt wird. |
sampleQueries | sampleQueries[] | Beispielabfragen für den Kunden, um zu verstehen, wie die Daten im Ereignisprotokoll zu finden sind, die auf der Registerkarte Nächste Schritte angezeigt werden sollen. |
title | String | Der Titel, der auf der Datenconnectorseite angezeigt wird. |
Es ist kompliziert, all diese Teile zusammenzufügen. Verwenden Sie das Tool zur Überprüfung der Benutzererfahrung auf der Connectorseite, um die Komponenten zu testen, die Sie zusammengefügt haben.
dataTypes
Arraywert | type | BESCHREIBUNG |
---|---|---|
name | String | Eine aussagekräftige Beschreibung für die lastDataReceivedQuery , einschließlich der Unterstützung für eine Variable. Beispiel: {{graphQueriesTableName}} |
lastDataReceivedQuery | String | Eine KQL-Abfrage, die eine Zeile zurückgibt und angibt, zu welchem Zeitpunkt Daten zuletzt empfangen wurden, oder keine Daten zurückgibt, wenn keine relevanten Daten vorhanden sind. Ein Beispiel: {{graphQueriesTableName}}\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time) |
graphQueries
Definiert eine Abfrage, die die Datenerfassung der letzten zwei Wochen im Bereich Datendiagramme anzeigt.
Stellen Sie entweder eine Abfrage für alle Datentypen des Datenconnectors oder eine andere Abfrage für die einzelnen Datentypen zur Verfügung.
Arraywert | type | BESCHREIBUNG |
---|---|---|
metricName | String | Ein aussagekräftiger Name für Ihren Graphen. Beispiel: Total data received |
legend | String | Die Zeichenfolge, die in der Legende rechts neben dem Diagramm angezeigt wird, einschließlich eines Variablenverweises. Beispiel: {{graphQueriesTableName}} |
baseQuery | String | Die Abfrage, die nach relevanten Ereignissen filtert, einschließlich eines Variablenverweises. Beispiel: TableName_CL | where ProviderName == "myprovider" oder {{graphQueriesTableName}} |
instructionSteps
Dieser Abschnitt enthält Parameter, die die Anweisungen definieren, die auf der Datenconnectorseite in Microsoft Sentinel angezeigt werden.
Arrayeigenschaft | type | BESCHREIBUNG |
---|---|---|
title | String | (Optional) Definiert einen Titel für Ihre Anweisungen. |
description | String | (Optional) Definiert eine aussagekräftige Beschreibung für Ihre Anweisungen. |
innerSteps | Array | Optional. Definiert ein Array von inneren Anweisungsschritten. |
instructions | Array von Anweisungen | Erforderlich. Definiert ein Array von Anweisungen eines bestimmten Parametertyps. |
bottomBorder | Boolean | Optional. Bei true wird dem Anweisungsbereich auf der Connectorseite in Microsoft Sentinel ein unterer Rand hinzugefügt. |
isComingSoon | Boolean | Optional. Bei true wird auf der Connectorseite in Microsoft Sentinel ein In Kürze verfügbar-Titel hinzugefügt. |
Anweisungen
Zeigt eine Gruppe von Anweisungen mit verschiedenen Optionen als Parameter und der Möglichkeit, weitere Anweisungsschritte in Gruppen zu schachteln, an.
Parameter | Arrayeigenschaft | BESCHREIBUNG |
---|---|---|
APIKey | APIKey | Fügen Sie Platzhalter zur JSON-Konfigurationsdatei Ihres Connectors hinzu. |
CopyableLabel | CopyableLabel | Zeigt ein Textfeld mit der Schaltfläche „Kopieren“ am Ende an. Wenn die Schaltfläche ausgewählt ist, wird der Wert des Felds kopiert. |
InfoMessage | InfoMessage | Definiert eine Inlineinformationsmeldung. |
InstructionStepsGroup | InstructionStepsGroup | Zeigt eine Gruppe von Anweisungen, die optional erweiterbar oder reduzierbar sind, in einem separaten Abschnitt mit Anweisungen an. |
InstallAgent | InstallAgent | Zeigt einen Link zu anderen Teilen von Azure an, um verschiedene Installationsanforderungen zu erfüllen. |
APIKey
Möglicherweise möchten Sie eine JSON-Konfigurationsdateivorlage mit Platzhalterparametern erstellen, um sie über mehrere Connectors hinweg wiederzuverwenden. Vielleicht möchten Sie sogar einen Connector mit Daten erstellen, über den Sie derzeit nicht verfügen.
Zum Erstellen von Platzhalterparametern definieren Sie ein zusätzliches Array namens userRequestPlaceHoldersInput
im Abschnitt Anweisungen Ihrer CCP-JSON-Konfigurationsdatei, indem Sie die folgende Syntax verwenden:
"instructions": [
{
"parameters": {
"enable": "true",
"userRequestPlaceHoldersInput": [
{
"displayText": "Organization Name",
"requestObjectKey": "apiEndpoint",
"placeHolderName": "{{placeHolder}}"
}
]
},
"type": "APIKey"
}
]
Der userRequestPlaceHoldersInput
-Parameter enthält die folgenden Attribute:
Name | Typ | BESCHREIBUNG |
---|---|---|
DisplayText | String | Definiert den Anzeigewert des Textfelds, der dem Benutzer beim Herstellen der Verbindung angezeigt wird. |
RequestObjectKey | String | Legt die ID im Anfrorderungsabschnitt der pollingConfig fest, um den Platzhalterwert durch den vom Benutzer angegebenen Wert zu ersetzen. Wenn Sie dieses Attribut nicht verwenden, verwenden Sie stattdessen das PollingKeyPaths -Attribut. |
PollingKeyPaths | String | Definiert ein Array von JsonPath-Objekten, das den API-Aufruf an eine beliebige Stelle in der Vorlage weiterleitet, um einen Platzhalterwert durch einen Benutzerwert zu ersetzen. Beispiel: "pollingKeyPaths":["$.request.queryParameters.test1"] Wenn Sie dieses Attribut nicht verwenden, verwenden Sie stattdessen das RequestObjectKey -Attribut. |
PlaceHolderName | String | Definiert den Namen des Platzhalterparameters in der JSON-Vorlagendatei. Dies kann ein beliebiger eindeutiger Wert sein, z. B. {{placeHolder}} . |
CopyableLabel
Beispiel:
Beispielcode:
{
"parameters": {
"fillWith": [
"WorkspaceId",
"PrimaryKey"
],
"label": "Here are some values you'll need to proceed.",
"value": "Workspace is {0} and PrimaryKey is {1}"
},
"type": "CopyableLabel"
}
Arraywert | type | BESCHREIBUNG |
---|---|---|
fillWith | ENUM | Optional. Array von Umgebungsvariablen, die zum Auffüllen eines Platzhalters verwendet werden. Trennen Sie mehrere Platzhalter durch Kommas. Beispiel: {0},{1} Unterstützte Werte: workspaceId , workspaceName , primaryKey , MicrosoftAwsAccount , subscriptionId |
label | String | Definiert den Text für die Bezeichnung über einem Textfeld. |
value | String | Definiert den Wert, der im Textfeld angezeigt werden soll, unterstützt Platzhalter. |
rows | Zeilen | Optional. Definiert die Zeilen im Benutzeroberflächenbereich. Legen Sie dies standardmäßig auf 1 fest. |
wideLabel | Boolean | Optional. Bestimmt eine breite Bezeichnung für lange Zeichenfolgen. Legen Sie dies standardmäßig auf false fest. |
InfoMessage
Hier sehen Sie ein Beispiel für eine Inlineinformationsmeldung:
Im Gegensatz dazu zeigt die folgende Abbildung eine Nicht-Inlineinformationsmeldung:
Arraywert | type | BESCHREIBUNG |
---|---|---|
text | String | Definiert den in der Meldung anzuzeigenden Text. |
visible | Boolean | Bestimmt, ob die Meldung angezeigt wird. |
inline | Boolean | Bestimmt, wie die Informationsmeldung angezeigt wird. - true : (Empfohlen) Zeigt die In den Anweisungen eingebettete Informationsmeldung an. - false : Fügt einen blauen Hintergrund hinzu. |
InstructionStepsGroup
Hier sehen Sie ein Beispiel für eine erweiterbare Anweisungsgruppe:
Arraywert | type | BESCHREIBUNG |
---|---|---|
title | String | Definiert den Titel für den Anweisungsschritt. |
canCollapseAllSections | Boolean | Optional. Bestimmt, ob es sich bei dem Abschnitt um ein reduzierbares Akkordeon handelt. |
noFxPadding | Boolean | Optional. Bei true wird der Höhenabstand reduziert, um Platz zu sparen. |
expanded | Boolean | Optional. Bei true erfolgt die erweiterte Anzeige. |
Ein ausführliches Beispiel finden Sie in der JSON-Konfiguration des Windows DNS-Connectors.
InstallAgent
Einige InstallAgent-Typen werden als Schaltfläche angezeigt, andere als Link. Hier sehen Sie Beispiele für beides:
Arraywerte | type | BESCHREIBUNG |
---|---|---|
linkType | ENUM | Bestimmt den Linktyp als einen der folgenden Werte: InstallAgentOnWindowsVirtualMachine InstallAgentOnWindowsNonAzure InstallAgentOnLinuxVirtualMachine InstallAgentOnLinuxNonAzure OpenSyslogSettings OpenCustomLogsSettings OpenWaf OpenAzureFirewall OpenMicrosoftAzureMonitoring OpenFrontDoors OpenCdnProfile AutomaticDeploymentCEF OpenAzureInformationProtection OpenAzureActivityLog OpenIotPricingModel OpenPolicyAssignment OpenAllAssignmentsBlade OpenCreateDataCollectionRule |
policyDefinitionGuid | Zeichenfolge | Erforderlich bei Verwendung des OpenPolicyAssignment-Linktyps. Definiert für richtlinienbasierte Connectors die GUID der integrierten Richtliniendefinition. |
assignMode | ENUM | Optional. Definiert für richtlinienbasierte Connectors den Zuweisungsmodus als einen der folgenden Werte: Initiative , Policy |
dataCollectionRuleType | ENUM | Optional. Definiert für DCR-basierte Connectors den Typ der Datensammlungsregel als einen der folgenden Werte: SecurityEvent , ForwardEvent |
metadata
Dieser Abschnitt enthält Metadaten auf der Benutzeroberfläche des Datenconnectors im Bereich Beschreibung.
Sammlungswert | type | Beschreibung |
---|---|---|
kind | String | Definiert die Art der ARM-Vorlage, die Sie erstellen. Verwenden Sie immer dataConnector . |
Quelle | String | Beschreibt Ihre Datenquelle mit der folgenden Syntax: { "kind": Zeichenfolge"name": Zeichenfolge} |
author | String | Beschreibt den Ersteller des Datenconnectors mit der folgenden Syntax: { "name": Zeichenfolge} |
support | String | Beschreibt die Unterstützung für den Datenconnector mithilfe der folgenden Syntax: { "tier": Zeichenfolge,"name": Zeichenfolge,"email": Zeichenfolge,"link": URL-Zeichenfolge} |
Berechtigungen
Arraywert | type | BESCHREIBUNG |
---|---|---|
customs | String | Beschreibt alle benutzerdefinierten Berechtigungen, die für Ihre Datenverbindung erforderlich sind, in der folgenden Syntax: { "name": string, "description": Zeichenfolge} Beispiel: Der Wert Zoll wird im Abschnitt „Microsoft Sentinel-Voraussetzungen“ mit einem blauen Informationssymbol angezeigt. Im GitHub-Beispiel korreliert dies mit der Zeile Persönlicher GitHub-API-Tokenschlüssel: Sie benötigen Zugriff auf das persönliche GitHub-Token... |
Lizenzen | ENUM | Definiert die erforderlichen Lizenzen als einen der folgenden Werte: OfficeIRM , OfficeATP , Office365 , AadP1P2 , Mcas , Aatp , Mdatp , Mtp , IoT Beispiel: Der licenses-Wert wird in Microsoft Sentinel als Lizenz: Azure AD Premium P2 erforderlich angezeigt. |
resourceProvider | resourceProvider | Beschreibt alle Voraussetzungen für Ihre Azure-Ressource. Beispiel: Der Wert resourceProvider wird im Abschnitt „Microsoft Sentinel Voraussetzungen“ folgendermaßen angezeigt: Arbeitsbereich: Lese- und Schreibberechtigung ist erforderlich. Schlüssel: Es sind Leseberechtigungen für freigegebene Schlüssel für den Arbeitsbereich erforderlich. |
tenant | Array von ENUM-Werten Beispiel: "tenant": [ "GlobalADmin", "SecurityAdmin" ] |
Definiert die erforderlichen Berechtigungen als einen oder mehrere der folgenden Werte: "GlobalAdmin" , "SecurityAdmin" , "SecurityReader" , "InformationProtection" Beispiel: Der Wert Mandant wird in Microsoft Sentinel als „Mandantenberechtigungen: Erfordert Global Administrator oder Security Administrator für den Mandanten des Arbeitsbereichs“ angezeigt. |
resourceProvider
Subarraywert | type | BESCHREIBUNG |
---|---|---|
Anbieter | ENUM | Beschreibt den Ressourcenanbieter mit einem der folgenden Werte: - Microsoft.OperationalInsights/workspaces - Microsoft.OperationalInsights/solutions - Microsoft.OperationalInsights/workspaces/datasources - microsoft.aadiam/diagnosticSettings - Microsoft.OperationalInsights/workspaces/sharedKeys - Microsoft.Authorization/policyAssignments |
providerDisplayName | String | Ein Listenelement unter Voraussetzungen, das ein rotes „x“ oder ein grünes Häkchen anzeigt, wenn die requiredPermissions auf der Connectorseite überprüft werden. Beispiel: "Workspace" |
permissionsDisplayText | String | Anzeigen von Text für Lese-, Schreib- oder Lese- und Schreibberechtigungen, die den Werten, die in requiredPermissions konfiguriert wurden, entsprechen sollen |
requiredPermissions | { "action": Boolescher Wert, "delete": Boolescher Wert, "read": Boolescher Wert, "write": Boolescher Wert} |
Beschreibt die Mindestberechtigungen, die für den Connector erforderlich sind. |
scope | ENUM | Beschreibt den Bereich des Datenconnectors als einen der folgenden Werte: "Subscription" , "ResourceGroup" , "Workspace" |
sampleQueries
Arraywert | type | BESCHREIBUNG |
---|---|---|
description | String | Eine aussagekräftige Beschreibung für die Beispielabfrage. Beispiel: Top 10 vulnerabilities detected |
query | String | Eine Beispielabfrage zum Abrufen der Daten des Datentyps. Beispiel: {{graphQueriesTableName}}\n | sort by TimeGenerated\n | take 10 |
Konfigurieren anderer Linkoptionen
Verwenden Sie das folgende Beispiel, um einen Inlinelink mit Markdown zu definieren. Hier wird ein Link in einer Anleitungsbeschreibung bereitgestellt:
{
"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)"
}
Um einen Link als ARM-Vorlage zu definieren, verwenden Sie das folgende Beispiel als Leitfaden:
{
"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})"
}
Überprüfen der Benutzeroberfläche der Datenconnectorseite
Führen Sie die folgenden Schritte aus, um die Benutzeroberfläche des Connectors zu rendern und zu überprüfen.
- Auf das Testhilfsprogramm kann über diese URL „https://aka.ms/sentineldataconnectorvalidateurl“ zugegriffen werden.
- Wechseln Sie zu Microsoft Sentinel – > Datenconnectors.
- Klicken Sie auf die Schaltfläche „Importieren“, und wählen Sie eine JSON-Datei aus, die nur den
connectorUiConfig
-Abschnitt Ihres Datenconnectors enthält.
Weitere Informationen zu diesem Überprüfungstool finden Sie in der Anleitung Erstellen des Connectors in unserem GitHub-Buildleitfaden.
Hinweis
Da der APIKey-Anweisungsparameter für den codelosen Connector spezifisch ist, entfernen Sie diesen Abschnitt vorübergehend, um das Validierungstool zu verwenden, da sonst ein Fehler auftritt.
Konfigurieren der Abrufeinstellungen Ihres Connectors
In diesem Abschnitt wird die Konfiguration beschrieben, wie Daten aus Ihrer Datenquelle nach einem codelosen Datenconnector abgefragt werden.
Der folgende Code zeigt die Syntax des Abschnitts pollingConfig
der CCP-Konfigurationsdatei an.
"pollingConfig": {
"auth": {
},
"request": {
},
"response": {
},
"paging": {
}
}
Der Abschnitt pollingConfig
enthält die folgenden Eigenschaften:
Name | Typ | BESCHREIBUNG |
---|---|---|
auth | String | Beschreibt die Authentifizierungseigenschaften zum Abfragen der Daten. Weitere Informationen finden Sie unter Authentifizierungskonfiguration. |
auth.authType | String | Erforderlich. Definiert die Art der Authentifizierung, die innerhalb des auth -Objekts geschachtelt ist, als einen der folgenden Werte: Basic , APIKey , OAuth2 |
Anforderung | Geschachteltes JSON | Erforderlich. Beschreibt die Anforderungsnutzdaten zum Abrufen der Daten, z. B. den API-Endpunkt. Weitere Informationen finden Sie unter Anforderungskonfiguration. |
response | Geschachteltes JSON | Erforderlich. Beschreibt das Antwortobjekt und die geschachtelte Nachricht, die beim Abrufen der Daten von der API zurückgegeben werden. Weitere Informationen finden Sie unter Antwortkonfiguration. |
paging | Geschachteltes JSON | Optional. Beschreibt die Paginierungsnutzdaten beim Abfragen der Daten. Weitere Informationen finden Sie unter Auslagerungskonfiguration. |
Weitere Informationen finden Sie unter Beispiel für pollingConfig-Code.
Authentifizierungskonfiguration
Der Abschnitt auth
der pollingConfig-Konfiguration enthält in Abhängigkeit von dem im authType-Element definierten Typ die folgenden Parameter:
Basic authType-Parameter
Name | Typ | BESCHREIBUNG |
---|---|---|
Benutzername | String | Erforderlich. Definiert den Benutzernamen. |
Kennwort | String | Erforderlich. Definiert das Benutzerkennwort. |
APIKey authType-Parameter
Name | Typ | BESCHREIBUNG |
---|---|---|
APIKeyName | Zeichenfolge | Optional. Definiert den Namen Ihres API-Schlüssels als einen der folgenden Werte: - XAuthToken - Authorization |
IsAPIKeyInPostPayload | Boolean | Bestimmt, wo Ihr API-Schlüssel definiert ist. True: Der API-Schlüssel ist in den POST-Anforderungsnutzdaten definiert. False: Der API-Schlüssel ist im Header definiert. |
APIKeyIdentifier | Zeichenfolge | (Optional) Definiert den Namen des Bezeichners für den API-Schlüssel. Wenn die Autorisierung beispielsweise als "Authorization": "token <secret>" definiert ist, wird dieser Parameter wie folgt definiert: {APIKeyIdentifier: “token”}) |
OAuth2 authType-Parameter
Die Codeless Connector Platform unterstützt die OAuth 2.0-Autorisierungscodezuweisung.
Der Autorisierungscode-Genehmigungstyp wird von vertraulichen und öffentlichen Clients verwendet, um einen Autorisierungscode für ein Zugriffstoken austauschen.
Nachdem der Benutzer über die Umleitungs-URL an den Client zurückkehrt, ruft die Anwendung den Autorisierungscode aus der URL ab und verwendet sie, um ein Zugriffstoken anzufordern.
Name | Typ | BESCHREIBUNG |
---|---|---|
FlowName | String | Erforderlich. Definiert einen OAuth2-Flow. Unterstützter Wert: AuthCode – erfordert einen Autorisierungsflow |
AccessToken | String | (Optional) Definiert ein OAuth2-Zugriffstoken, das relevant ist, wenn das Zugriffstoken nicht abläuft. |
AccessTokenPrepend | String | (Optional) Definiert ein OAuth2-Zugriffstoken, das vorab festgelegt ist. Der Standardwert ist Bearer . |
RefreshToken | String | Obligatorisch für OAuth2-Authentifizierungstypen. Definiert das OAuth2-Aktualisierungstoken. |
TokenEndpoint | String | Obligatorisch für OAuth2-Authentifizierungstypen. Definiert den OAuth2-Tokendienstendpunkt. |
AuthorizationEndpoint | String | (Optional) Definiert den OAuth2-Autorisierungsdienstendpunkt. Wird nur während des Onboardings oder beim Verlängern eines Aktualisierungstokens verwendet. |
RedirectionEndpoint | String | (Optional) Definiert einen Umleitungsendpunkt während des Onboardings. |
AccessTokenExpirationDateTimeInUtc | String | (Optional) Definiert ein Zugriffstokenablaufdatum im UTC-Format. Relevant für den Zeitpunkt, an dem das Zugriffstoken nicht abläuft, und daher eine große Datumszeit in UTC oder wenn das Zugriffstoken über eine große Ablaufzeit verfügt. |
RefreshTokenExpirationDateTimeInUtc | String | Obligatorisch für OAuth2-Authentifizierungstypen. Definiert ein Aktualisierungstokenablaufdatum im UTC-Format. |
TokenEndpointHeaders | Dictionary<string, object> | Optional. Definiert die Kopfzeilen beim Aufrufen eines OAuth2-Tokendienstendpunkts. Definiert die Zeichenfolge im serialisierten dictionary<string, string> -Format: {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
AuthorizationEndpointHeaders | Dictionary<string, object> | Optional. Definiert die Kopfzeilen beim Aufrufen eines OAuth2-Autorisierungsdienstendpunkts. Wird nur während des Onboardings oder beim Verlängern eines Aktualisierungstokens verwendet. Definiert eine Zeichenfolge im serialisierten dictionary<string, object> -Format: {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
AuthorizationEndpointQueryParameters | Dictionary<string, object> | Optional. Definiert die Abfrageparameter beim Aufrufen eines OAuth2-Autorisierungsdienstendpunkts. Wird nur während des Onboardings oder beim Verlängern eines Aktualisierungstokens verwendet. Definiert eine Zeichenfolge im serialisierten dictionary<string, object> -Format: {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
TokenEndpointQueryParameters | Dictionary<string, object> | Optional. Definieren Sie Abfrageparameter beim Aufrufen des OAuth2-Tokendienstendpunkts. Definiert eine Zeichenfolge im serialisierten dictionary<string, object> -Format: {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
IsTokenEndpointPostPayloadJson | Boolean | Optional. Standardwert ist „false“. Bestimmt, ob Abfrageparameter im JSON-Format vorliegen und in der POST-Nutzlast der Anforderung festgelegt werden. |
IsClientSecretInHeader | Boolean | Optional. Standardwert ist „false“. Bestimmt, ob die Werte client_id und client_secret im Header definiert sind, wie im Basicauthentifizierungsschema statt in der POST-Nutzlast. |
RefreshTokenLifetimeinSecAttributeName | String | (Optional) Definiert den Attributnamen aus der Tokenendpunktantwort, die die Lebensdauer des Aktualisierungstokens in Sekunden angibt. |
IsJwtBearerFlow | Boolean | Optional. Standardwert ist „false“. Bestimmt, ob Sie JWT verwenden. |
JwtHeaderInJson | Dictionary<string, object> | Optional. Definiert die JWT-Header im JSON-Format. Definiert eine Zeichenfolge im serialisierten dictionary<string, object> -Format: {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>...} |
JwtClaimsInJson | Dictionary<string, object> | Optional. Definiert JWT-Ansprüche im JSON-Format. Definiert eine Zeichenfolge im serialisierten dictionary<string, object> -Format: {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ...} |
JwtPem | String | (Optional) Definiert einen geheimen Schlüssel im PEM Pkcs1-Format: '-----BEGIN RSA PRIVATE KEY-----\r\n{privatekey}\r\n-----END RSA PRIVATE KEY-----\r\n' Stellen Sie sicher, den '\r\n' -Code am Ort zu belassen. |
RequestTimeoutInSeconds | Integer | Optional. Bestimmt das Timeout in Sekunden beim Aufrufen des Tokendienstendpunkts. Der Standardwert ist „180 Sekunden“ |
Hier ist ein Beispiel für eine solche OAuth2-Konfiguration:
"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"
},
Session authType-Parameter
Name | Typ | BESCHREIBUNG |
---|---|---|
QueryParameters | Dictionary<string, object> | Optional. Eine Liste von Abfrageparametern im serialisierten dictionary<string, string> -Format: {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
IsPostPayloadJson | Boolean | Optional. Bestimmt, ob die Abfrageparameter im JSON-Format vorliegen. |
Headers | Dictionary<string, object> | Optional. Definiert den Header, der beim Aufrufen des Endpunkts zum Abrufen der Sitzungs-ID und beim Aufrufen der Endpunkt-API verwendet wird. Definiert die Zeichenfolge im serialisierten dictionary<string, string> -Format: {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
SessionTimeoutInMinutes | Zeichenfolge | (Optional) Definiert ein Sitzungstimeout in Minuten. |
SessionIdName | Zeichenfolge | (Optional) Definiert einen ID-Namen für die Sitzung. |
SessionLoginRequestUri | Zeichenfolge | (Optional) Definiert einen Anforderungs-URI für die Sitzungsanmeldung. |
Anforderungskonfiguration
Der Abschnitt request
der pollingConfig-Konfiguration enthält die folgenden Parameter:
Name | Typ | BESCHREIBUNG |
---|---|---|
apiEndpoint | String | Erforderlich. Definiert den Endpunkt, aus dem Daten gepullt werden sollen. |
httpMethod | String | Erforderlich. Definiert die API-Methode: GET oder POST |
queryTimeFormat | Zeichenfolge oder UnixTimestamp oder UnixTimestampInMills | Erforderlich. Definiert das Format, das zum Definieren der Abfragezeit verwendet wird. Dieser Wert kann eine Zeichenfolge sein bzw. im UnixTimestamp- oder UnixTimestampInMills-Format vorliegen, um die Start- und Endzeit der Abfrage in „UnixTimestamp“ anzugeben. |
startTimeAttributeName | Zeichenfolge | (Optional) Definiert den Namen des Attributs, das die Startzeit der Abfrage definiert. |
endTimeAttributeName | Zeichenfolge | (Optional) Definiert den Namen des Attributs, das die Endzeit der Abfrage definiert. |
queryTimeIntervalAttributeName | String | Optional. Definiert den Namen des Attributs, das das Intervall der Abfragezeit definiert. |
queryTimeIntervalDelimiter | Zeichenfolge | (Optional) Definiert das Trennzeichen für das Intervall der Abfragezeit. |
queryWindowInMin | Integer | Optional. Definiert das verfügbare Abfragefenster in Minuten. Mindestwert: 5 |
queryParameters | Dictionary<string, object> | Optional. Definiert die Parameter, die in der Abfrage im eventsJsonPaths -Pfad übergeben werden. Definiert die Zeichenfolge im serialisierten dictionary<string, string> -Format: {'<attr_name>': '<val>', '<attr_name>': '<val>'... } . |
queryParametersTemplate | String | Optional. Definiert die Abfrageparametervorlage, die beim Übergeben von Abfrageparametern in erweiterten Szenarien verwendet werden soll. Beispiel: "queryParametersTemplate": "{'cid': 1234567, 'cmd': 'reporting', 'format': 'siem', 'data': { 'from': '{_QueryWindowStartTime}', 'to': '{_QueryWindowEndTime}'}, '{_APIKeyName}': '{_APIKey}'}" {_QueryWindowStartTime} und {_QueryWindowEndTime} werden nur in den Anforderungsparametern queryParameters und queryParametersTemplate unterstützt. {_APIKeyName} und {_APIKey} werden nur im Anforderungsparameter queryParametersTemplate unterstützt. |
isPostPayloadJson | Boolean | Optional. Bestimmt, ob die POST-Nutzdaten im JSON-Format vorliegen. |
rateLimitQPS | Double | Optional. Definiert die Anzahl der Aufrufe oder Abfragen, die in einer Sekunde zulässig sind. |
timeoutInSeconds | Integer | Optional. Definiert das Anforderungstimeout in Sekunden. |
retryCount | Integer | Optional. Definiert die Anzahl der Anforderungsversuche, die bei Bedarf versucht werden sollen. |
headers | Dictionary<string, object> | Optional. Definiert den Wert des Anforderungsheaders im serialisierten dictionary<string, object> -Format: {'<attr_name>': '<serialized val>', '<attr_name>': '<serialized val>'... } |
Antwortkonfiguration
Der Abschnitt response
der pollingConfig-Konfiguration enthält die folgenden Parameter:
Der folgende Code zeigt ein Beispiel für den eventsJsonPaths-Wert für eine Nachricht der obersten Ebene:
"eventsJsonPaths": [
"$"
]
Auslagerungskonfiguration
Der Abschnitt paging
der pollingConfig-Konfiguration enthält die folgenden Parameter:
Name | Typ | BESCHREIBUNG |
---|---|---|
pagingType | String | Erforderlich. Bestimmt den Auslagerungstyp, der in Ergebnissen verwendet werden soll, als einer der folgenden Werte: None , LinkHeader , NextPageToken , NextPageUrl , Offset |
linkHeaderTokenJsonPath | Zeichenfolge | (Optional) Definiert den JSON-Pfad für den Linkheader in der JSON-Antwort, wenn LinkHeader nicht im Antwortheader definiert ist. |
nextPageTokenJsonPath | Zeichenfolge | (Optional) Definiert den Pfad zu einem JSON-Code für das nächste Seitentoken. |
hasNextFlagJsonPath | Zeichenfolge | (Optional) Definiert den Pfad zum HasNextPage -Flagattribut. |
nextPageTokenResponseHeader | Zeichenfolge | (Optional) Definiert den Headernamen für das Token der nächsten Seite in der Antwort. |
nextPageParaName | Zeichenfolge | (Optional) Bestimmt den Namen der nächsten Seite in der Anforderung. |
nextPageRequestHeader | Zeichenfolge | (Optional) Bestimmt den Headernamen der nächsten Seite in der Anforderung. |
nextPageUrl | Zeichenfolge | (Optional) Bestimmt die URL der nächsten Seite, wenn sie sich von der anfänglichen Anforderungs-URL unterscheidet. |
nextPageUrlQueryParameters | Zeichenfolge | (Optional) Bestimmt die Abfrageparameter der URL der nächsten Seite, wenn sie sich von der URL der anfänglichen Anforderung unterscheidet. Definiert die Zeichenfolge im serialisierten dictionary<string, object> -Format: {'<attr_name>': <val>, '<attr_name>': <val>... } |
offsetParaName | Zeichenfolge | (Optional) Definiert den Namen des Offsetparameters. |
pageSizeParaName | Zeichenfolge | (Optional) Definiert den Namen des Parameters für die Seitengröße. |
PageSize | Integer | Definiert die Auslagerungsgröße. |
Beispiel für pollingConfig-Code
Der folgende Code zeigt ein Beispiel für den Abschnitt pollingConfig
der CCP-Konfigurationsdatei an:
"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": [
"$"
]
}
}
Stellen Sie Ihren Connector in Microsoft Sentinel bereit, und beginnen Sie mit der Datenerfassung.
Stellen Sie nach dem Erstellen der JSON-Konfigurationsdatei, einschließlich der Benutzeroberfläche und der Abrufkonfiguration, Ihren Connector in Ihrem Microsoft Sentinel-Arbeitsbereich bereit.
Verwenden Sie eine der folgenden Optionen, um Ihren Datenconnector bereitzustellen.
Tipp
Der Vorteil der Bereitstellung über eine ARM-Vorlage (Azure Resource Manager) besteht darin, dass mehrere Werte in die Vorlage integriert sind und Sie sie nicht manuell in einem API-Aufruf definieren müssen.
Schließen Sie Ihre JSON-Konfigurationssammlungen in eine ARM-Vorlage ein, um Ihren Connector bereitzustellen. Um sicherzustellen, dass Ihr Datenconnector im richtigen Arbeitsbereich bereitgestellt wird, müssen Sie entweder den Arbeitsbereich in der ARM-Vorlage definieren oder den Arbeitsbereich auswählen, wenn Sie die ARM-Vorlage bereitstellen.
Bereiten Sie eine JSON-Datei für die ARM-Vorlage für Ihren Connector vor. Betrachten Sie z. B. die folgenden JSON-Dateien der ARM-Vorlage:
- Datenconnector in der Slack-Lösung
- Datenconnector in der GitHub-Lösung
Suchen Sie im Azure-Portal nach Benutzerdefinierte Vorlage bereitstellen.
Wählen Sie auf der Seite Benutzerdefinierte Bereitstellung die Option Eigene Vorlage im Editor erstellen>Datei laden aus. Navigieren Sie zu Ihrer lokalen ARM-Vorlage, wählen Sie sie aus, und speichern Sie die Änderungen.
Wählen Sie Ihr Abonnement und Ihre Ressourcengruppe aus, und geben Sie dann den Log Analytics-Arbeitsbereich ein, in dem Sie Ihren benutzerdefinierten Connector bereitstellen möchten.
Wählen Sie Überprüfen und erstellen aus, um Ihren benutzerdefinierten Connector in Microsoft Sentinel bereitzustellen.
Wechseln Sie in Microsoft Sentinel zur Seite Datenconnectors, und suchen Sie nach Ihrem neuen Connector. Konfigurieren Sie ihn, um mit der Erfassung von Daten zu beginnen.
Weitere Informationen finden Sie unter Bereitstellen einer lokalen Vorlage in der Azure Resource Manager-Dokumentation.
Konfigurieren Sie Ihren Datenconnector, um eine Verbindung mit Ihrer Datenquelle herzustellen und mit der Erfassung von Daten in Microsoft Sentinel zu beginnen. Sie können eine Verbindung mit Ihrer Datenquelle entweder über das Portal (wie bei standardmäßigen Datenconnectors) oder über die API herstellen.
Wenn Sie das Azure-Portal verwenden, um eine Verbindung herzustellen, werden Benutzerdaten automatisch gesendet. Wenn Sie eine Verbindung über die API herstellen, müssen Sie die relevanten Authentifizierungsparameter im API-Aufruf senden.
Befolgen Sie auf der Datenconnectorseite von Microsoft Sentinel die Anweisungen, die Sie bereitgestellt haben, um eine Verbindung mit Ihrem Datenconnector herzustellen.
Die Datenconnectorseite in Microsoft Sentinel wird durch die InstructionSteps-Konfiguration im
connectorUiConfig
-Element der CCP-JSON-Konfigurationsdatei gesteuert. Wenn Sie Probleme mit der Verbindung mit der Benutzeroberfläche haben, stellen Sie sicher, dass Sie über die richtige Konfiguration für Ihren Authentifizierungstyp verfügen.Wechseln Sie in Microsoft Sentinel zur Seite Protokolle, und vergewissern Sie sich, dass die Protokolle aus Ihrer Datenquelle in Ihren Arbeitsbereich gelangen.
Wenn Sie keinen Datenfluss nach Microsoft Sentinel sehen, überprüfen Sie die Dokumentation zu Ihrer Datenquelle und die Ressourcen zur Problembehandlung. Überprüfen Sie außerdem die Konfigurationsdetails und die Konnektivität. Weitere Informationen finden Sie unter Überwachen der Integrität Ihrer Datenconnectors.
Trennen des Connectors
Wenn Sie die Daten Ihres Connectors nicht mehr benötigen, trennen Sie den Connector, um den Datenfluss zu beenden.
Verwenden Sie eine der folgenden Methoden:
Azure-Portal: Wählen Sie auf der Seite Ihres Microsoft Sentinel-Datenconnectors Trennen aus.
API: Verwenden Sie die DISCONNECT-API, um einen PUT-Aufruf mit einem leeren Text an die folgende URL zu senden:
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
Nächste Schritte
Falls noch nicht erfolgt, geben Sie Ihren neuen codelosen Datenconnector für die Microsoft Sentinel-Community frei. Erstellen Sie eine Lösung für Ihren Datenconnector, und geben Sie sie im Microsoft Sentinel-Marketplace frei.
Weitere Informationen finden Sie unter