Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Het Codeless Connector Framework (CCF) biedt partners, geavanceerde gebruikers en ontwikkelaars de mogelijkheid om aangepaste connectors te maken voor het opnemen van gegevens naar Microsoft Sentinel.
Connectors die met de CCF zijn gemaakt, zijn volledig SaaS, zonder vereisten voor service-installaties. Ze omvatten ook statusbewaking en volledige ondersteuning van Microsoft Sentinel.
Gebruik de volgende stappen om uw CCF-connector te maken en uw gegevensbron te verbinden met Microsoft Sentinel
- De gegevensconnector bouwen
- De ARM-sjabloon maken
- De connector implementeren
- Verbinding maken Microsoft Sentinel met uw gegevensbron en beginnen met het opnemen van gegevens
In dit artikel wordt uitgelegd hoe u elke stap kunt voltooien en een voorbeeld van een connector zonder code kunt maken.
Als u een softwareontwikkelingspartner bent en ondersteuning nodig hebt voor het bouwen van een CCF-gegevensconnector, neemt u contact op met Microsoft Sentinel Partners op AzureSentinelPartner@microsoft.com voor hulp.
Wat is het verschil tussen deze CCF en de vorige versie?
De eerste versie van de CCF werd aangekondigd in januari 2022. Sindsdien hebben we het platform verbeterd en wordt de verouderde release niet meer aanbevolen. Deze nieuwe versie van de CCF heeft de volgende belangrijke verbeteringen:
Betere ondersteuning voor verschillende verificatie- en pagineringstypen.
Ondersteunt standaardregels voor gegevensverzameling (DCR's).
De gebruikersinterface en verbindingsconfiguratiegedeelten van de connector zonder code zijn nu gescheiden. Hierdoor kunnen connectors met meerdere verbindingen worden gemaakt die voorheen niet mogelijk waren.
Vereisten
Voordat u een connector bouwt, moet u inzicht hebben in uw gegevensbron en hoe Microsoft Sentinel verbinding moet maken.
Eindpunt voor gegevensverzameling (DCE)
Een DCE is een vereiste voor een DCR. Er wordt slechts één DCE gemaakt per DCR-implementatie van de Log Analytics-werkruimte. Elke DCR die is geïmplementeerd voor een Microsoft Sentinel werkruimte gebruikt dezelfde DCE. Zie Eindpunten voor gegevensverzameling in Azure Monitor voor meer informatie over hoe u er een maakt of een nieuwe nodig hebt.
Schema van de uitvoertabel(s).
Het is belangrijk om inzicht te hebben in de vorm van uw gegevensstroom en de velden die u in de uitvoertabel wilt opnemen. Raadpleeg de documentatie van uw gegevensbron of analyseer voldoende uitvoervoorbeelden.
Onderzoek de volgende onderdelen en controleer de ondersteuning voor deze onderdelen in de Naslaginformatie over de Data Connector-API:
HTTP-aanvraag- en antwoordstructuur voor de gegevensbron
Verificatie vereist door de gegevensbron.
Als uw gegevensbron bijvoorbeeld een token vereist dat is ondertekend met een certificaat, geeft de API-verwijzing voor de gegevensconnector aan dat certificaatverificatie niet wordt ondersteund.Pagineringsopties voor de gegevensbron
API's testen
We raden u aan uw onderdelen te testen met een API-testprogramma, zoals een van de volgende:
- Visual Studio Code met een extensie van Visual Studio Marketplace
- PowerShell Invoke-RestMethod
- Microsoft Edge - Network Console Tool
- Bruno
- Curl
Voorzichtigheid
Voor scenario's waarin u gevoelige gegevens hebt, zoals referenties, geheimen, toegangstokens, API-sleutels en andere vergelijkbare informatie, moet u een hulpprogramma gebruiken dat uw gegevens beveiligt met de benodigde beveiligingsfuncties, offline of lokaal werkt, uw gegevens niet synchroniseert met de cloud en u zich niet hoeft aan te melden bij een onlineaccount. Op deze manier vermindert u het risico dat gevoelige gegevens openbaar worden gemaakt.
De gegevensconnector bouwen
Tip
Als u een onafhankelijke softwareleverancier (ISV) bent en ondersteuning nodig hebt bij het bouwen van een Microsoft Sentinel-integratie met behulp van het Microsoft Sentinel Codeless Connector Framework, kan het Microsoft App Assure-team u mogelijk helpen. Als u contact wilt opnemen met het App Assure-team, stuurt u een e-mail naar azuresentinelpartner@microsoft.com.
Er zijn vier onderdelen vereist om de CCF-gegevensconnector te bouwen.
- Definitie van uitvoertabel
- Regel voor gegevensverzameling (DCR)
- Gebruikersinterface van gegevensconnector
- Verbindingsregels voor gegevensconnector
Elk onderdeel heeft een sectie met details van het proces voor het maken en valideren. Neem de JSON van elk onderdeel voor de uiteindelijke verpakking van de ARM-sjabloon.
Definitie van uitvoertabel
Tip
Sla deze stap over als uw gegevens alleen worden opgenomen in standaard Log Analytics-tabellen. Voorbeelden van standaardtabellen zijn CommonSecurityLog en ASimDnsActivityLogs. Zie Ondersteuning voor gegevenstransformatie voor aangepaste gegevensconnectors voor meer informatie over de volledige lijst met ondersteunde standaardgegevenstypen.
Als uw gegevensbron niet voldoet aan het schema van een standaardtabel, hebt u twee opties:
- Een aangepaste tabel maken voor alle gegevens
- Een aangepaste tabel maken voor bepaalde gegevens en gegevens splitsen in overeenstemming met een standaardtabel
Gebruik de Log Analytics-gebruikersinterface voor een eenvoudige methode om samen met een DCR een aangepaste tabel te maken. Als u de aangepaste tabel maakt met behulp van de Tables-API of een andere programmatische methode, voegt u het _CL achtervoegsel handmatig toe aan de tabelnaam. Zie Een aangepaste tabel maken voor meer informatie.
Zie de voorbeeldgegevens en de aangepaste voorbeeldtabel die voor die gegevens zijn gemaakt voor meer informatie over het splitsen van uw gegevens in meer dan één tabel.
Regel voor gegevensverzameling
Regels voor gegevensverzameling (DCR's) definiëren het gegevensverzamelingsproces in Azure Monitor. DCR's geven aan welke gegevens moeten worden verzameld, hoe deze gegevens moeten worden getransformeerd en waar die gegevens moeten worden verzonden.
- Er is slechts één DCR die per gegevensconnector wordt geïmplementeerd.
- Een DCR moet een bijbehorende DCE in dezelfde regio hebben.
- Wanneer de CCF-gegevensconnector wordt geïmplementeerd, wordt de DCR gemaakt als deze nog niet bestaat.
Raadpleeg de meest recente informatie over DCR's in deze artikelen:
Zie Zelfstudie: Gegevens verzenden naar Azure Logboeken met logboekopname-API (Azure Portal) voor een zelfstudie waarin het maken van een DCE wordt gedemonstreerd, inclusief het gebruik van voorbeeldgegevens om de aangepaste tabel en DCR te maken. Gebruik het proces in deze zelfstudie om te controleren of gegevens correct worden opgenomen in uw tabel met uw DCR.
Zie de sectie DCR-voorbeeld voor meer informatie over het maken van een complexe DCR met meerdere gegevensstromen.
Gebruikersinterface van gegevensconnector
Met dit onderdeel wordt de gebruikersinterface voor de gegevensconnector weergegeven in de galerie Microsoft Sentinel gegevensconnector. Elke gegevensconnector kan slechts één ui-definitie hebben.
Bouw de gebruikersinterface van de gegevensconnector met de Definitie-API van de Data Connector. Gebruik de verwijzing naar definities van gegevensconnector als aanvulling om de API-elementen gedetailleerder uit te leggen.
Opmerkingen:
- De
kindeigenschap voor API-polling-connector moet altijd zijnCustomizable. - Omdat dit een type API-polling-connector is, stelt u het
connectivityCriteriatype in ophasDataConnectors - Het voorbeeld
instructionStepsbevat een knop van het typeConnectionToggleButton. Met deze knop kunt u de implementatie van gegevensconnectorregels activeren op basis van de opgegeven verbindingsparameters.
Gebruik een API-testprogramma om de API voor gegevensconnectordefinities aan te roepen om de gebruikersinterface van de gegevensconnector te maken om deze te valideren in de galerie met gegevensconnectors.
Zie de sectie Naslagvoorbeeld voor gegevensconnectordefinities voor meer informatie over een voorbeeld.
Regels voor gegevensverbinding
Er zijn momenteel drie soorten regels voor gegevensverbinding mogelijk voor het definiëren van uw CCF-gegevensconnector.
-
RestApiPollerMet soort kunt u paging, autorisatie en verwachte nettoladingen voor aanvragen/antwoorden voor uw gegevensbron aanpassen. Zie Naslaginformatie over verbindingsregels voor RestApiPoller-gegevensconnector voor meer informatie. -
GCPMet kind kunt u uw ontwikkelingstijd verkorten door automatisch paging en verwachte nettoladingen voor reacties voor uw GCP-gegevensbron (Google Cloud Platform) te configureren. Zie Naslaginformatie over verbindingsregels voor GCP-gegevensconnector voor meer informatie -
StorageAccountBlobContainerMet soort kunt u opnemen uit een Azure Storage Blob-gegevensbron. Zie api-referentie voor Azure Storage Blob-connectors voor meer informatie.
Gebruik een API-testprogramma om de gegevensconnector-API aan te roepen om de gegevensconnector te maken die de verbindingsregels en eerdere onderdelen combineert. Controleer of de connector nu is verbonden in de gebruikersinterface.
Vertrouwelijke invoer beveiligen
Welke verificatie ook wordt gebruikt door uw CCF-gegevensconnector, voer deze stappen uit om ervoor te zorgen dat vertrouwelijke informatie veilig blijft. Het doel is om referenties van de ARM-sjabloon door te geven aan de CCF zonder leesbare vertrouwelijke objecten in uw implementatiegeschiedenis achter te laten.
Label maken
De definitie van de gegevensconnector maakt een UI-element om te vragen om beveiligingsreferenties. Als uw gegevensconnector bijvoorbeeld wordt geverifieerd bij een logboekbron met OAuth, bevat de definitiesectie van de gegevensconnector het OAuthForm type in de instructies. Hiermee stelt u de ARM-sjabloon in om om de referenties te vragen.
"instructions": [
{
"type": "OAuthForm",
"parameters": {
"UsernameLabel": "Username",
"PasswordLabel": "Password",
"connectButtonLabel": "Connect",
"disconnectButtonLabel": "Disconnect"
}
}
],
Vertrouwelijke invoer opslaan
Een sectie van de ARM-implementatiesjabloon biedt een plek waar de beheerder die de gegevensconnector implementeert, het wachtwoord kan invoeren. Gebruik securestring deze optie om de vertrouwelijke informatie te beveiligen in een object dat na de implementatie niet leesbaar is. Zie Beveiligingsaanbeveling voor parameters voor meer informatie.
"mainTemplate": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "[variables('dataConnectorCCPVersion')]",
"parameters": {
"Username": {
"type": "securestring",
"minLength": 1,
"metadata": {
"description": "Enter the username to connect to your data source."
},
"Password": {
"type": "securestring",
"minLength": 1,
"metadata": {
"description": "Enter the API key, client secret or password required to connect."
}
},
// more deployment template information
}
}
De securestring-objecten gebruiken
Ten slotte maakt de CCF gebruik van de referentieobjecten in de sectie gegevensconnector.
"auth": {
"type": "OAuth2",
"ClientSecret": "[[parameters('Password')]",
"ClientId": "[[parameters('Username')]",
"GrantType": "client_credentials",
"TokenEndpoint": "https://api.contoso.com/oauth/token",
"TokenEndpointHeaders": {
"Content-Type": "application/x-www-form-urlencoded"
},
"TokenEndpointQueryParameters": {
"grant_type": "client_credentials"
}
},
Opmerking
De vreemde syntaxis voor het referentieobject "ClientSecret": "[[parameters('Password')]", is geen typefout.
Als u de implementatiesjabloon wilt maken die ook parameters gebruikt, moet u de parameters in die sectie laten ontsnappen met een extra begin[. Hierdoor kunnen de parameters een waarde toewijzen op basis van de interactie van de gebruiker met de connector.
Zie Escape-tekens voor sjabloonexpressies voor meer informatie.
De implementatiesjabloon maken
Een ARM-sjabloon (Azure Resource Management) handmatig verpakken met behulp van de voorbeeldsjablooncodevoorbeelden als gids. Deze codevoorbeelden worden verdeeld door ARM-sjabloonsecties die u aan elkaar moet koppelen.
Als u een Google Cloud Platform (GCP) CCF-gegevensconnector maakt, verpakt u de implementatiesjabloon met behulp van de voorbeeldsjabloon GCP CCF. Zie Naslaginformatie over verbindingsregels voor GCP-gegevensconnector voor meer informatie over het invullen van de GCP CCF-sjabloon.
Naast de voorbeeldsjablonen gebruiken gepubliceerde oplossingen die beschikbaar zijn in de Microsoft Sentinel inhoudshub de CCF voor hun gegevensconnectors. Bekijk de volgende oplossingen als meer voorbeelden van het samenvoegen van de onderdelen in een ARM-sjabloon.
RestApiPoller Voorbeelden van CCF-gegevensconnector
- Ermes Browser Security
- Palo Alto Prisma Cloud CWPP
- Sophos Endpoint Protection
- Werkdag
- Atlassian Jira
- Okta-eenmalige aanmelding
GCP Voorbeelden van CCF-gegevensconnector
De connector implementeren
Implementeer uw connector zonder code als een aangepaste sjabloon.
Tip
Verwijder resources die u in de vorige stappen hebt gemaakt. De DCR en de aangepaste tabel worden gemaakt met de implementatie. Als u deze resources niet verwijdert voordat u deze implementeert, is het moeilijker om uw sjabloon te verifiëren.
- Kopieer de inhoud van de ARM-implementatiesjabloon.
- Volg de instructies voor de sjabloon bewerken en implementeren in het artikel Quickstart: ARM-sjablonen maken en implementeren met behulp van de Azure Portal.
Netwerkisolatie onderhouden voor logboekregistratiebron
Als uw logboekregistratiebron netwerkisolatie vereist, configureert u een acceptatielijst met openbare IP-adressen die door de CCF worden gebruikt.
Azure virtuele netwerken gebruiken servicetags om netwerktoegangsbeheer te definiëren. Voor de CCF is die servicetag Scuba.
Zie De Service Tag Discovery-API gebruiken om het huidige IP-bereik te vinden dat is gekoppeld aan de Scuba-servicetag.
De connector zonder code controleren
Bekijk uw connector zonder code in de galerie met gegevensconnector. Open de gegevensconnector en voltooi de verificatieparameters die nodig zijn om verbinding te maken. Zodra de verbinding is voltooid, worden de DCR en aangepaste tabellen gemaakt. Bekijk de DCR-resource in uw resourcegroep en eventuele aangepaste tabellen uit de werkruimte voor logboekanalyse.
Opmerking
Het kan tot 30 minuten duren voordat de gegevens worden opgenomen.
Voorbeeld
Elke stap bij het bouwen van de connector zonder code wordt weergegeven in de volgende voorbeeldsecties.
- Voorbeeldgegevens
- Voorbeeld van aangepaste tabel
- Voorbeeldregel voor gegevensverzameling
- Voorbeeld van gebruikersinterfacedefinitie voor gegevensconnector
- Voorbeeld van gegevensverbindingsregels
- Voorbeeldgegevens gebruiken met voorbeeldsjabloon
Om een complexe gegevensbron met opname in meer dan één tabel te demonstreren, bevat dit voorbeeld een uitvoertabelschema en een DCR met meerdere uitvoerstromen. In het DCR-voorbeeld worden deze samen met de KQL-transformaties samengevoegd. De voorbeelden van de definitie van de gebruikersinterface van de gegevensconnector en de verbindingsregels gaan verder vanuit dezelfde voorbeeldgegevensbron. Ten slotte gebruikt de oplossingssjabloon al deze voorbeeldonderdelen om end-to-end weer te geven hoe u de voorbeeld-CCF-gegevensconnector maakt.
Voorbeeldgegevens
Een gegevensbron retourneert de volgende JSON bij het maken van verbinding met het eindpunt.
[
{
"ts": "3/6/2023 8:15:15 AM",
"eventType": "Alert",
"deviceMac": "bc:27:c6:21:1c:70",
"clientMac": "",
"srcIp": "10.12.11.106",
"destIp": "121.93.178.13",
"protocol": "tcp/ip",
"priority": "0",
"message": "This is an alert message"
},
{
"ts": "3/6/2023 8:14:54 AM",
"eventType": "File",
"srcIp": "178.175.128.249",
"destIp": "234.113.125.105",
"fileType": "MS_EXE",
"fileSizeBytes": 193688,
"disposition": "Malicious"
}
]
Dit antwoord bevat eventTypewaarschuwing en bestand. De bestandsgebeurtenissen moeten worden opgenomen in de genormaliseerde standaardtabel , AsimFileEventLogs, terwijl de waarschuwingsgebeurtenissen moeten worden opgenomen in een aangepaste tabel.
Voorbeeld van aangepaste tabel
Zie Tables-API voor meer informatie over de structuur van deze tabel. Namen van aangepaste logboektabellen moeten een _CL achtervoegsel hebben.
{
"properties": {
"schema": {
"name": "ExampleConnectorAlerts_CL",
"columns": [
{
"name": "TimeGenerated",
"type": "datetime"
},
{
"name": "SourceIP",
"type": "string"
},
{
"name": "DestIP",
"type": "string"
},
{
"name": "Message",
"type": "string"
},
{
"name": "Priority",
"type": "int"
}
]
}
}
}
Voorbeeldregel voor gegevensverzameling
De volgende DCR definieert één stream Custom-ExampleConnectorInput met behulp van de voorbeeldgegevensbron en transformeert de uitvoer in twee tabellen.
- De eerste gegevensstroom stuurt
eventType= de waarschuwing naar de aangepasteExampleConnectorAlerts_CLtabel. - de tweede gegevensstroom leidt
eventType= Het bestand naar de genormaliseerde standaardtabel,ASimFileEventLogs.
Zie Structuur van een regel voor gegevensverzameling voor meer informatie over de structuur van dit voorbeeld.
Als u deze DCR wilt maken in een testomgeving, volgt u de API voor gegevensverzamelingsregels. Elementen van het voorbeeld in {{double curly braces}} geven variabelen aan die waarden vereisen voor het gebruiksgemak met een API-testhulpprogramma. Wanneer u deze resource maakt in de ARM-sjabloon, worden de variabelen die hier worden uitgedrukt, uitgewisseld voor parameters.
{
"location": "{{location}}",
"properties": {
"dataCollectionEndpointId": "/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.Insights/dataCollectionEndpoints/{{dataCollectionEndpointName}}",
"streamDeclarations": {
"Custom-ExampleConnectorInput": {
"columns": [
{
"name": "ts",
"type": "datetime"
},
{
"name": "eventType",
"type": "string"
},
{
"name": "deviceMac",
"type": "string"
},
{
"name": "clientMac",
"type": "string"
},
{
"name": "srcIp",
"type": "string"
},
{
"name": "destIp",
"type": "string"
},
{
"name": "protocol",
"type": "string"
},
{
"name": "priority",
"type": "string"
},
{
"name": "message",
"type": "string"
},
{
"name": "fileType",
"type": "string"
},
{
"name": "fileSizeBytes",
"type": "int"
},
{
"name": "disposition",
"type": "string"
}
]
}
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "/subscriptions/{{subscriptionId}}/resourcegroups/{{resourceGroupName}}/providers/microsoft.operationalinsights/workspaces/{{workspaceName}}",
"name": "{{uniqueFriendlyDestinationName}}"
}
]
},
"dataFlows": [
{
"streams": [
"Custom-ExampleConnectorInput"
],
"destinations": [
"{{uniqueFriendlyDestinationName}}"
],
"transformKql": "source | where eventType == \"Alert\" | project TimeGenerated = ts, SourceIP = srcIp, DestIP = destIp, Message = message, Priority = priority \n",
"outputStream": "Custom-ExampleConnectorAlerts_CL"
},
{
"streams": [
"Custom-ExampleConnectorInput"
],
"destinations": [
"{{uniqueFriendlyDestinationName}}"
],
"transformKql": "source | where eventType == \"File\" | project-rename TimeGenerated = ts, EventOriginalType = eventType, SrcIpAddr = srcIp, DstIpAddr = destIp, FileContentType = fileType, FileSize = fileSizeBytes, EventOriginalSeverity = disposition \n",
"outputStream": "Microsoft-ASimFileEventLogs"
}
]
}
}
Voorbeeld van gebruikersinterfacedefinitie voor gegevensconnector
Dit voorbeeld bevindt zich in de naslaginformatie over definities van gegevensconnector.
Voorbeeld van verbindingsregels voor gegevensconnector
Dit voorbeeld bevindt zich in de naslaginformatie over gegevensconnectors.
Voorbeeld van ARM-sjabloon
Bouw de ARM-implementatiesjabloon met de volgende structuur, die de vier secties van JSON-onderdelen bevat die nodig zijn om de CCF-gegevensconnector te bouwen:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"resources": [],
}
Steek de secties samen met een JSON-bewuste editor zoals Visual Code om syntaxisfouten zoals komma's en haakjes sluiten te minimaliseren.
Om het proces voor het bouwen van de sjabloon te begeleiden, worden opmerkingen weergegeven in de metagegevensdescription of inline met // opmerkingnotatie. Zie Best practices voor ARM-sjablonen - opmerkingen voor meer informatie.
Overweeg het gebruik van de ARM-sjabloontesttoolkit (arm-ttk) om de sjabloon die u bouwt te valideren. Zie arm-ttk voor meer informatie.
Voorbeeld van ARM-sjabloon - parameters
Zie Parameters in ARM-sjablonen voor meer informatie.
Waarschuwing
Gebruik securestring voor alle wachtwoorden en geheimen in objecten die kunnen worden gelezen na de implementatie van de resource.
Zie Vertrouwelijke invoer beveiligen en Beveiligingsaanbeveling voor parameters voor meer informatie.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"minLength": 1,
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Not used, but needed to pass the arm-ttk test, 'Location-Should-Not-Be-Hardcoded'. Instead the `workspace-location` derived from the log analytics workspace is used."
}
},
"workspace-location": {
"type": "string",
"defaultValue": "",
"metadata": {
"description": "[concat('Region to deploy solution resources -- separate from location selection',parameters('location'))]"
}
},
"subscription": {
"defaultValue": "[last(split(subscription().id, '/'))]",
"type": "string",
"metadata": {
"description": "subscription id where Microsoft Sentinel is configured"
}
},
"resourceGroupName": {
"defaultValue": "[resourceGroup().name]",
"type": "string",
"metadata": {
"description": "resource group name where Microsoft Sentinel is configured"
}
},
"workspace": {
"defaultValue": "",
"type": "string",
"metadata": {
"description": "the log analytics workspace enabled for Microsoft Sentinel"
}
}
},
// Next is the variables section here
}
Voorbeeld van ARM-sjabloon - variabelen
Deze aanbevolen variabelen helpen de sjabloon te vereenvoudigen. Gebruik meer of minder indien nodig. Zie Variabelen in ARM-sjablonen voor meer informatie.
"variables": {
"workspaceResourceId": "[resourceId('microsoft.OperationalInsights/Workspaces', parameters('workspace'))]",
"_solutionName": "Solution name", // Enter your solution name
"_solutionVersion": "3.0.0", // must be 3.0.0 or above
"_solutionAuthor": "Contoso", // Enter the name of the author
"_packageIcon": "<img src=\"{LogoLink}\" width=\"75px\" height=\"75px\">", // Enter the http link for the logo. NOTE: This field is only recommended for Azure Global Cloud.
"_solutionId": "azuresentinel.azure-sentinel-solution-azuresentinel.azure-sentinel-MySolution", // Enter a name for your solution with this format but exchange the 'MySolution' portion
"dataConnectorVersionConnectorDefinition": "1.0.0",
"dataConnectorVersionConnections": "1.0.0",
"_solutionTier": "Community", // This designates the appropriate support - all custom data connectors are "Community"
"_dataConnectorContentIdConnectorDefinition": "MySolutionTemplateConnectorDefinition", // Enter a name for the connector
"dataConnectorTemplateNameConnectorDefinition": "[concat(parameters('workspace'),'-dc-',uniquestring(variables('_dataConnectorContentIdConnectorDefinition')))]",
"_dataConnectorContentIdConnections": "MySolutionTemplateConnections", // Enter a name for the connections this connector makes
"dataConnectorTemplateNameConnections": "[concat(parameters('workspace'),'-dc-',uniquestring(variables('_dataConnectorContentIdConnections')))]",
"_logAnalyticsTableId1": "ExampleConnectorAlerts_CL" // Enter the custom table name - not needed if you are ingesting data into standard tables
// Enter more variables as needed "":""
},
// Next is the resources sections here
Voorbeeld van ARM-sjabloon - resources
Deze sjabloonhandleiding bevat 5 ARM-implementatieresources waarin de 4 onderdelen van de CCF-gegevensconnector worden ondergebracht.
-
contentTemplates (een bovenliggende resource)
- Metagegevens
- dataCollectionRules - Zie Regel voor gegevensverzameling voor meer informatie.
- tabellen: zie Definitie van uitvoertabel voor meer informatie.
- dataConnectorDefinitions - Zie De gebruikersinterface van de gegevensconnector voor meer informatie.
- Metagegevens
-
contentTemplates
- Metagegevens
- RestApiPoller - Zie Regels voor gegevensverbinding voor meer informatie.
- contentPackages
"resources": [
// resource section 1 - contentTemplates
{
"type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates",
"apiVersion": "2023-04-01-preview",
"name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/', variables('dataConnectorTemplateNameConnectorDefinition'), variables('dataConnectorVersionConnectorDefinition'))]",
"location": "[parameters('workspace-location')]",
"dependsOn": [
"[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]"
],
"properties": {
"contentId": "[variables('_dataConnectorContentIdConnectorDefinition')]",
"displayName": "[concat(variables('_solutionName'), variables('dataConnectorTemplateNameConnectorDefinition'))]",
"contentKind": "DataConnector",
"mainTemplate": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "[variables('dataConnectorVersionConnectorDefinition')]",
"parameters": {},
"variables": {},
"resources": [
{
"name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('DataConnector-', variables('_dataConnectorContentIdConnectorDefinition')))]",
"apiVersion": "2022-01-01-preview",
"type": "Microsoft.OperationalInsights/workspaces/providers/metadata",
"properties": {
"parentId": "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/dataConnectorDefinitions', variables('_dataConnectorContentIdConnectorDefinition'))]",
"contentId": "[variables('_dataConnectorContentIdConnectorDefinition')]",
"kind": "DataConnector",
"version": "[variables('dataConnectorVersionConnectorDefinition')]",
"source": {
"sourceId": "[variables('_solutionId')]",
"name": "[variables('_solutionName')]",
"kind": "Solution"
},
"author": {
"name": "[variables('_solutionAuthor')]"
},
"support": {
"name": "[variables('_solutionAuthor')]",
"tier": "[variables('_solutionTier')]"
},
"dependencies": {
"criteria": [
{
"version": "[variables('dataConnectorVersionConnections')]",
"contentId": "[variables('_dataConnectorContentIdConnections')]",
"kind": "ResourcesDataConnector"
}
]
}
}
},
{
"name": "MyDCRV1", // Enter your DCR name
"apiVersion": "2021-09-01-preview",
"type": "Microsoft.Insights/dataCollectionRules",
"location": "[parameters('workspace-location')]",
"kind": null,
"properties":
{
// Enter your DCR properties here.
// Consider using these variables:
// "dataCollectionEndpointId": "[concat('/subscriptions/',parameters('subscription'),'/resourceGroups/',parameters('resourceGroupName'),'/providers/Microsoft.Insights/dataCollectionEndpoints/',parameters('workspace'))]",
// "workspaceResourceId": "[variables('workspaceResourceId')]",
}
},
{
"name": "[variables('_logAnalyticsTableId1')]",
"apiVersion": "2022-10-01",
"type": "Microsoft.OperationalInsights/workspaces/tables",
"location": "[parameters('workspace-location')]",
"kind": null,
"properties":
{
// Enter your log analytics table schema here.
// Consider using this variable for the name property:
// "name": "[variables('_logAnalyticsTableId1')]",
}
}
// Enter more tables if needed.
]
},
"packageKind": "Solution",
"packageVersion": "[variables('_solutionVersion')]",
"packageName": "[variables('_solutionName')]",
"contentProductId": "[concat(substring(variables('_solutionId'), 0, 50),'-','dc','-', uniqueString(concat(variables('_solutionId'),'-','DataConnector','-',variables('_dataConnectorContentIdConnectorDefinition'),'-', variables('dataConnectorVersionConnectorDefinition'))))]",
"packageId": "[variables('_solutionId')]",
"contentSchemaVersion": "3.0.0",
"version": "[variables('_solutionVersion')]"
}
},
// resource 2 section here
// resource section 2 - dataConnectorDefinitions
{
"name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',variables('_dataConnectorContentIdConnectorDefinition'))]",
"apiVersion": "2022-09-01-preview",
"type": "Microsoft.OperationalInsights/workspaces/providers/dataConnectorDefinitions",
"location": "[parameters('workspace-location')]",
"kind": "Customizable",
"properties":
{
//Enter your data connector definition properties here
//"connectorUiConfig": {
// "graphQueriesTableName": "[variables('_logAnalyticsTableId1')]",
//},
}
},
// resource 3 section here
// resource section 3 - metadata
{
"name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('DataConnector-', variables('_dataConnectorContentIdConnectorDefinition')))]",
"apiVersion": "2022-01-01-preview",
"type": "Microsoft.OperationalInsights/workspaces/providers/metadata",
"properties": {
"parentId": "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/dataConnectorDefinitions', variables('_dataConnectorContentIdConnectorDefinition'))]",
"contentId": "[variables('_dataConnectorContentIdConnectorDefinition')]",
"kind": "DataConnector",
"version": "[variables('dataConnectorVersionConnectorDefinition')]",
"source": {
"sourceId": "[variables('_solutionId')]",
"name": "[variables('_solutionName')]",
"kind": "Solution"
},
"author": {
"name": "[variables('_solutionAuthor')]"
},
"support": {
"name": "[variables('_solutionAuthor')]",
"tier": "[variables('_solutionTier')]"
},
"dependencies": {
"criteria": [
{
"version": "[variables('dataConnectorVersionConnections')]",
"contentId": "[variables('_dataConnectorContentIdConnections')]",
"kind": "ResourcesDataConnector"
}
]
}
}
},
// resource 4 section here
// resource section 4 - contentTemplates
{
"type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates",
"apiVersion": "2023-04-01-preview",
"name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/', variables('dataConnectorTemplateNameConnections'), variables('dataConnectorVersionConnections'))]",
"location": "[parameters('workspace-location')]",
"dependsOn": [
"[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]"
],
"properties": {
"contentId": "[variables('_dataConnectorContentIdConnections')]",
"displayName": "[concat(variables('_solutionName'), variables('dataConnectorTemplateNameConnections'))]",
"contentKind": "ResourcesDataConnector",
"mainTemplate": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "[variables('dataConnectorVersionConnections')]",
"parameters":
// These parameters are used by the data connector primarily as properties for the administrator to enter in the UI when configuring the connector
{
"connectorDefinitionName": {
"defaultValue": "connectorDefinitionName",
"type": "string",
"minLength": 1
},
"workspace": {
"defaultValue": "[parameters('workspace')]",
"type": "string"
},
"dcrConfig": {
"defaultValue": {
"dataCollectionEndpoint": "data collection Endpoint",
"dataCollectionRuleImmutableId": "data collection rule immutableId"
},
"type": "object"
}
// Enter additional parameters, for example:
//"domainname": {
// "defaultValue": "domain name",
// "type": "string",
// "minLength": 1
//},
//"apikey": {
// "defaultValue": "",
// "type": "securestring",
// "minLength": 1
//}
},
"variables": {
"_dataConnectorContentIdConnections": "[variables('_dataConnectorContentIdConnections')]"
},
"resources": [
{
"name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('DataConnector-', variables('_dataConnectorContentIdConnections')))]",
"apiVersion": "2022-01-01-preview",
"type": "Microsoft.OperationalInsights/workspaces/providers/metadata",
"properties": {
"parentId": "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/dataConnectors', variables('_dataConnectorContentIdConnections'))]",
"contentId": "[variables('_dataConnectorContentIdConnections')]",
"kind": "ResourcesDataConnector",
"version": "[variables('dataConnectorVersionConnections')]",
"source": {
"sourceId": "[variables('_solutionId')]",
"name": "[variables('_solutionName')]",
"kind": "Solution"
},
"author": {
"name": "[variables('_solutionAuthor')]"
},
"support": {
"name": "[variables('_solutionAuthor')]",
"tier": "[variables('_solutionTier')]"
}
}
},
{
"name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/', 'MyDataConnector')]", // Replace the last part of the name with your data connector name
// To create several connections using this template, make the name dynamic. For example, use the 'concat' function to add the connector name with a GUID using the 'guid' function.
"apiVersion": "2022-12-01-preview",
"type": "Microsoft.OperationalInsights/workspaces/providers/dataConnectors",
"location": "[parameters('workspace-location')]",
"kind": "RestApiPoller",
"properties":
{
// Enter your data connector properties here. If you want to use UI parameters remember to escape the parameter like this: "[[parameters('paramName')]"
// Use parameters as needed. For example:
// "dataType": "My product security event API",
// "response": {
// "eventsJsonPaths": [
// "$"
// ],
// "format": "json"
// },
// "paging": {
// "pagingType": "LinkHeader"
// },
// "connectorDefinitionName": "[[parameters('connectorDefinitionName')]",
// "auth": {
// "apiKeyName": "Authorization",
// "ApiKey": "[[parameters('apikey')]",
// "apiKeyIdentifier": "SSWS",
// "type": "APIKey"
//} ,
// "request": {
// "apiEndpoint": "[[concat('https://',parameters('domainname'),'/api/v1/logs')]",
// "rateLimitQPS": 10,
// "queryWindowInMin": 5,
// "httpMethod": "GET",
// "retryCount": 3,
// "timeoutInSeconds": 60,
// "headers": {
// "Accept": "application/json",
// "User-Agent": "My-Data-Source"
// },
// "startTimeAttributeName": "since",
// "endTimeAttributeName": "until"
// },
// "dcrConfig": {
// "dataCollectionEndpoint": "[[parameters('dcrConfig').dataCollectionEndpoint]",
// "dataCollectionRuleImmutableId": "[[parameters('dcrConfig').dataCollectionRuleImmutableId]",
// "streamName": "Custom-ExampleConnectorAlerts_CL" //This input stream should be the same as the inputStream property configured for the DataCollectionRule
// },
// "isActive": true
}
}
]
},
"packageKind": "Solution",
"packageVersion": "[variables('_solutionVersion')]",
"packageName": "[variables('_solutionName')]",
"contentProductId": "[concat(substring(variables('_solutionId'), 0, 50),'-','rdc','-', uniqueString(concat(variables('_solutionId'),'-','ResourcesDataConnector','-',variables('_dataConnectorContentIdConnections'),'-', variables('dataConnectorVersionConnections'))))]",
"packageId": "[variables('_solutionId')]",
"contentSchemaVersion": "3.0.0",
"version": "[variables('_solutionVersion')]"
}
},
// resource 5 section here
// resource section 5 - contentPackages
{
"type": "Microsoft.OperationalInsights/workspaces/providers/contentPackages",
"name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/', variables('_solutionId'))]",
"location": "[parameters('workspace-location')]",
"apiVersion": "2023-04-01-preview",
"properties": {
"version": "[variables('_solutionVersion')]",
"kind": "Solution",
"contentSchemaVersion": "3.0.0",
"contentId": "[variables('_solutionId')]",
"source": {
"kind": "Solution",
"name": "[variables('_solutionName')]",
"sourceId": "[variables('_solutionId')]"
},
"author": {
"name": "[variables('_solutionAuthor')]"
},
"support": {
"name": "[variables('_solutionAuthor')]"
},
"dependencies": {
"operator": "AND",
"criteria": [
{
"kind": "DataConnector",
"contentId": "[variables('dataConnectorVersionConnectorDefinition')]",
"version": "[variables('_dataConnectorContentIdConnectorDefinition')]"
}
]
},
"firstPublishDate": "2023-12-05",
"providers": [
"[variables('_solutionAuthor')]"
],
"contentKind": "Solution",
"packageId": "[variables('_solutionId')]",
"contentProductId": "[concat(substring(variables('_solutionId'), 0, 50),'-','sl','-', uniqueString(concat(variables('_solutionId'),'-','Solution','-',variables('_solutionId'),'-', variables('_solutionVersion'))))]",
"displayName": "[variables('_solutionName')]",
"publisherDisplayName": "[variables('_solutionId')]",
"descriptionHtml": "test",
"icon": "[variables('_packageIcon')]"
}
}
// that's the end!
]
}
Verwante onderwerpen
Meer informatie hierover kunt u lezen in