Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Codeless Connector Framework (CCF) gir partnere, avanserte brukere og utviklere muligheten til å opprette egendefinerte koblinger for inntak av data til Microsoft Sentinel.
Koblinger som opprettes ved hjelp av CCF, er fullstendig SaaS, uten krav til tjenesteinstallasjoner. De inkluderer også helseovervåking og full støtte fra Microsoft Sentinel.
Bruk følgende fremgangsmåte for å opprette CCF-koblingen og koble datakilden til Microsoft Sentinel
- Bygg datakoblingen
- Opprett ARM-malen
- Distribuer koblingen
- Koble Microsoft Sentinel til datakilden, og begynn å ta inn data
Denne artikkelen viser deg hvordan du fullfører hvert trinn og gir et eksempel på en kodeløs kobling for å bygge underveis.
Hvis du er en partner for programvareutvikling og trenger støtte for å bygge en CCF-datakobling, kan du kontakte partnere Microsoft Sentinel AzureSentinelPartner@microsoft.com for å få hjelp.
Hvordan er denne KOPIF-filen forskjellig fra den forrige versjonen?
Den første versjonen av CCF ble annonsert i januar 2022. Siden da har vi forbedret plattformen, og den eldre utgivelsen anbefales ikke lenger. Denne nye versjonen av CCF har følgende viktige forbedringer:
Bedre støtte for ulike godkjennings- og pagineringstyper.
Støtter standard datainnsamlingsregler (DCR-er).
Brukergrensesnittet og tilkoblingskonfigurasjonsdelene av den kodeløse koblingen er separate nå. Dette gjør det mulig å opprette koblinger med flere tilkoblinger som ikke var mulig tidligere.
Forutsetninger
Før du bygger en kobling, må du forstå datakilden og hvordan Microsoft Sentinel trenger å koble til.
Endepunkt for datainnsamling (DCE)
En DCE er et krav for en DCR. Bare én DCE opprettes per DCR-distribusjon for arbeidsområdet for logganalyse. Hver DCR som distribueres for et Microsoft Sentinel arbeidsområde, bruker samme DCE. Hvis du vil ha mer informasjon om hvordan du oppretter en, eller om du trenger en ny, kan du se Datainnsamlingsendepunkter i Azure Monitor.
Skjema for utdatatabellen(e).
Det er viktig å forstå formen på datastrømmen og feltene du vil inkludere i utdatatabellen. Referer til datakildedokumentasjonen, eller analyser tilstrekkelige utdataeksempler.
Undersøk følgende komponenter, og bekreft støtte for dem i API-referansen for Data Connector:
HTTP-forespørsels- og svarstruktur til datakilden
Godkjenning kreves av datakilden.
Hvis datakilden for eksempel krever et token signert med et sertifikat, angir API-referansen for datakoblingen at sertifisering ikke støttes.Alternativer for paginering til datakilden
Testing av API-er
Vi anbefaler at du tester komponentene med et API-testverktøy som ett av følgende:
- Visual Studio Code med en utvidelse fra Visual Studio Marketplace
- PowerShell Invoke-RestMethod
- Microsoft Edge – nettverkskonsollverktøy
- Bruno
- Curl
Forsiktig!
For scenarioer der du har sensitive data, for eksempel legitimasjon, hemmeligheter, tilgangstokener, API-nøkler og annen lignende informasjon, må du passe på å bruke et verktøy som beskytter dataene dine med de nødvendige sikkerhetsfunksjonene, fungerer frakoblet eller lokalt, synkroniserer ikke dataene dine til skyen og krever ikke at du logger på en nettkonto. På denne måten reduserer du risikoen ved å eksponere sensitive data for offentligheten.
Bygg datakoblingen
Tips
Hvis du er en uavhengig programvareleverandør (ISV) og trenger støtte når du bygger en Microsoft Sentinel-integrering ved hjelp av Microsoft Sentinel Codeless Connector Framework, kan Microsoft App Assure-teamet kanskje hjelpe. Hvis du vil engasjere App Assure-teamet, sender du en e-postmelding til azuresentinelpartner@microsoft.com.
Det kreves fire komponenter for å bygge CCF-datakoblingen.
- Utdatatabelldefinisjon
- Datainnsamlingsregel (DCR)
- Brukergrensesnitt for datakobling
- Tilkoblingsregler for datakobling
Hver komponent har en inndeling som beskriver prosessen for å opprette og validere. Ta JSON fra hver komponent for den endelige emballasjen til ARM-malen.
Utdatatabelldefinisjon
Tips
Hopp over dette trinnet hvis dataene bare blir inntatt til standard Log Analytics-tabeller. Eksempler på standardtabeller inkluderer CommonSecurityLog og ASimDnsActivityLogs. Hvis du vil ha mer informasjon om den fullstendige listen over støttede standard datatyper, kan du se Støtte for datatransformasjon for egendefinerte datakoblinger.
Hvis datakilden ikke samsvarer med skjemaet til en standardtabell, har du to alternativer:
- Opprette en egendefinert tabell for alle dataene
- Opprette en egendefinert tabell for noen data og dele samsvarende data ut til en standardtabell
Bruk brukergrensesnittet for log analytics for å opprette en egendefinert tabell sammen med en DCR. Hvis du oppretter den egendefinerte tabellen ved hjelp av Tabell-API-en eller en annen programmatisk metode, legger du til suffikset _CL manuelt i tabellnavnet. Hvis du vil ha mer informasjon, kan du se Opprette en egendefinert tabell.
Hvis du vil ha mer informasjon om hvordan du deler dataene til mer enn én tabell, kan du se eksempeldataene og den egendefinerte eksempeltabellen som er opprettet for disse dataene.
Regel for datainnsamling
Datainnsamlingsregler (DCR-er) definerer datainnsamlingsprosessen i Azure Monitor. DCR-er angir hvilke data som skal samles inn, hvordan de transformeres og hvor dataene skal sendes.
- Det er bare én DCR som distribueres per datakobling.
- En DCR må ha en tilsvarende DCE i samme område.
- Når CCF-datakoblingen distribueres, opprettes DCR hvis den ikke allerede finnes.
Referer til den nyeste informasjonen om DCR-er i disse artiklene:
Hvis du vil ha en opplæring som demonstrerer opprettelsen av en DCE, inkludert bruk av eksempeldata for å opprette den egendefinerte tabellen og DCR, kan du se Opplæring: Send data til Azure overvåk logger med Logs-inntaks-API (Azure Portal). Bruk prosessen i denne opplæringen til å bekrefte at dataene er riktig inntatt i tabellen med DCR.
Hvis du vil forstå hvordan du oppretter en kompleks DCR med flere dataflyter, kan du se eksempeldelen dcr.
Brukergrensesnitt for datakobling
Denne komponenten gjengir brukergrensesnittet for datakoblingen i Microsoft Sentinel datakoblingsgalleri. Hver datakobling kan bare ha én grensesnittdefinisjon.
Bygg brukergrensesnittet for datakoblingen med datakoblingsdefinisjons-API-en. Bruk datakoblingsdefinisjonsreferansen som et tillegg for å forklare API-elementene mer detaljert.
Notater:
- Egenskapen
kindfor API-avspørringskoblingen må alltid væreCustomizable. - Siden dette er en type API-avspørringskobling, angir du
connectivityCriteriatypen tilhasDataConnectors - Eksemplet
instructionStepsinkluderer en knapp av typenConnectionToggleButton. Denne knappen bidrar til å utløse distribusjon av datakoblingsregler basert på de angitte tilkoblingsparameterne.
Bruk et API-testverktøy til å kalle API-en for datakoblingsdefinisjoner for å opprette brukergrensesnittet for datakoblinger for å validere det i datakoblingsgalleriet.
Hvis du vil lære av et eksempel, kan du se eksempeldelen for referanseeksempler for datakoblingsdefinisjoner.
Datatilkoblingsregler
Det er for øyeblikket tre typer datatilkoblingsregler som er mulig for å definere CCF-datakoblingen.
-
RestApiPollermed typen kan du tilpasse nyttelaster for sideveksling, autorisasjon og forventet forespørsel/svar for datakilden. Hvis du vil ha mer informasjon, kan du se Referanse for RestApiPoller-datakoblingstilkoblingsregler. -
GCPmed kind kan du redusere utviklingstiden ved automatisk å konfigurere sideveksling og forventede responsnyttelaster for Datakilden for Google Cloud Platform (GCP). Hvis du vil ha mer informasjon, kan du se referanse for tilkoblingsregler for GCP-datakobling -
StorageAccountBlobContainer-typen lar deg ta inn fra en Azure Storage Blob-datakilde. Hvis du vil ha mer informasjon, kan du se Azure API-referanse for Storage Blob-koblinger.
Bruk et API-testverktøy til å kalle datakoblings-API-en for å opprette datakoblingen som kombinerer tilkoblingsreglene og tidligere komponenter. Kontroller at koblingen nå er koblet til i brukergrensesnittet.
Sikre konfidensielle inndata
Uansett hvilken godkjenning som brukes av CCF-datakoblingen, må du utføre disse trinnene for å sikre at konfidensiell informasjon holdes sikker. Målet er å overføre legitimasjon fra ARM-malen til CCF uten å forlate lesbare konfidensielle objekter i distribusjonsloggen.
Opprett etikett
Datakoblingsdefinisjonen oppretter et brukergrensesnittelement for å be om sikkerhetslegitimasjon. Hvis datakoblingen for eksempel godkjennes til en loggkilde med OAuth, inneholder definisjonsdelen for datakoblingen OAuthForm typen i instruksjonene. Dette konfigurerer ARM-malen til å be om legitimasjonen.
"instructions": [
{
"type": "OAuthForm",
"parameters": {
"UsernameLabel": "Username",
"PasswordLabel": "Password",
"connectButtonLabel": "Connect",
"disconnectButtonLabel": "Disconnect"
}
}
],
Lagre konfidensielle inndata
En del av ARM-distribusjonsmalen inneholder et sted der administratoren distribuerer datakoblingen for å skrive inn passordet. Brukes securestring til å holde konfidensiell informasjon sikret i et objekt som ikke kan leses etter distribusjon. Hvis du vil ha mer informasjon, kan du se Sikkerhetsanbefalinger for parametere.
"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
}
}
Bruke de sikrede objektene
Til slutt bruker CCF legitimasjonsobjektene i datakoblingsdelen.
"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"
}
},
Obs!
Den merkelige syntaksen for legitimasjonsobjektet er "ClientSecret": "[[parameters('Password')]", ikke en skrivefeil!
Hvis du vil opprette distribusjonsmalen som også bruker parametere, må du fjerne parameterne i den inndelingen med en ekstra start[. Dette gjør at parameterne kan tilordne en verdi basert på brukersamhandlingen med koblingen.
Hvis du vil ha mer informasjon, kan du se Escape-tegn for maluttrykk.
Opprett distribusjonsmalen
Pakk en mal for Azure Resource Management (ARM) manuelt ved hjelp av eksemplet på malkodeeksempler som veiledning. Disse kodeeksemplene er delt på ARM-malinndelinger som du må spleise sammen.
Hvis du oppretter en KOPIF-datakobling for Google Cloud Platform (GCP), pakker du distribusjonsmalen ved hjelp av eksemplet GCP CCF-mal. Hvis du vil ha informasjon om hvordan du fyller ut GCP CCF-malen, kan du se referanse for tilkoblingsregler for GCP-datakobling.
I tillegg til eksempelmalene bruker publiserte løsninger som er tilgjengelige i den Microsoft Sentinel innholdshuben CCF for sine datakoblinger. Se gjennom følgende løsninger som flere eksempler på hvordan du kan sy komponentene sammen til en ARM-mal.
RestApiPoller Eksempler på CCF-datakobling
- Ermes Browser Security
- Palo Alto Prisma Cloud CWPP
- Sophos Endpoint Protection
- Arbeidsdag
- Atlassian Jira
- Okta enkel pålogging
GCP Eksempler på CCF-datakobling
Distribuer koblingen
Distribuer den kodeløse koblingen som en egendefinert mal.
Tips
Slett ressurser du opprettet i tidligere trinn. DCR og egendefinert tabell opprettes med distribusjonen. Hvis du ikke fjerner disse ressursene før du distribuerer, er det vanskeligere å bekrefte malen.
- Kopier innholdet i ARM-distribusjonsmalen.
- Følg instruksjonene for å redigere og distribuere malen fra artikkelen Hurtigstart: Opprett og distribuer ARM-maler ved hjelp av Azure Portal.
Vedlikehold isolering av nettverk for loggingskilde
Hvis loggingskilden krever nettverksisolasjon, konfigurerer du en tillatelsesliste over offentlige IP-adresser som brukes av CCF.
Azure virtuelle nettverk bruker tjenestekoder til å definere kontroller for nettverkstilgang. For CCF er denne tjenestekoden Scuba.
Hvis du vil finne gjeldende IP-område som er knyttet til Scuba-tjenestekoden , kan du se Bruke API-en for søk etter tjenestekode.
Bekreft den kodeløse koblingen
Vis den kodeløse koblingen i datakoblingsgalleriet. Åpne datakoblingen og fullfør eventuelle godkjenningsparametere som kreves for å koble til. Når du har koblet til, opprettes DCR og egendefinerte tabeller. Vis DCR-ressursen i ressursgruppen og eventuelle egendefinerte tabeller fra arbeidsområdet for logganalyse.
Obs!
Det kan ta opptil 30 minutter å se at dataene begynner å innta.
Eksempel
Hvert trinn i byggingen av den kodeløse koblingen representeres i de følgende eksempeldelene.
- Eksempeldata
- Eksempel på egendefinert tabell
- Eksempel på datainnsamlingsregel
- Eksempel på definisjon av brukergrensesnitt for datakobling
- Eksempelregler for datatilkobling
- Bruke eksempeldata med eksempelmal
Dette eksemplet inneholder et utdatatabellskjema og en DCR med flere utdatastrømmer for å demonstrere en kompleks datakilde med inntak til mer enn én tabell. DCR-eksemplet setter disse sammen sammen med KQL-transformeringer. Grensesnittdefinisjonen og eksemplene på tilkoblingsregler for datakobling fortsetter fra det samme eksemplet på datakilde. Til slutt bruker løsningsmalen alle disse eksempelkomponentene til å vise ende-til-ende hvordan du oppretter eksemplet CCF-datakobling.
Eksempeldata
En datakilde returnerer følgende JSON når du kobler til endepunktet.
[
{
"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"
}
]
Dette svaret inneholder eventTypevarsel og fil. Filhendelsene skal tas inn i den normaliserte standardtabellen, AsimFileEventLogs, mens varslingshendelsene skal inninntakes i en egendefinert tabell.
Eksempel på egendefinert tabell
Hvis du vil ha mer informasjon om strukturen i denne tabellen, kan du se Tabell-API. Egendefinerte loggtabellnavn må ha et _CL suffiks.
{
"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"
}
]
}
}
}
Eksempel på datainnsamlingsregel
Følgende DCR definerer en enkelt strøm Custom-ExampleConnectorInput ved hjelp av eksempeldatakilden og transformerer utdataene til to tabeller.
- Den første dataflyten dirigerer
eventType= Varsel til den egendefinerteExampleConnectorAlerts_CLtabellen. - den andre dataflyten dirigerer
eventType= Fil til den normaliserte standardtabellenASimFileEventLogs.
Hvis du vil ha mer informasjon om strukturen i dette eksemplet, kan du se Struktur for en datainnsamlingsregel.
Hvis du vil opprette denne DCR-en i et testmiljø, følger du API-en for datainnsamlingsregler. Elementer i {{double curly braces}} eksemplet angir variabler som krever verdier for brukervennlighet med et API-testverktøy. Når du oppretter denne ressursen i ARM-malen, byttes variablene som uttrykkes her, for parametere.
{
"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"
}
]
}
}
Eksempel på definisjon av brukergrensesnitt for datakobling
Dette eksemplet er plassert i datakoblingsdefinisjonsreferansen.
Eksempel på tilkoblingsregler for datakobling
Dette eksemplet er plassert i datakoblingsreferansen.
Eksempel på ARM-mal
Bygg ARM-distribusjonsmalen med følgende struktur, som inkluderer de fire delene av JSON-komponenter som kreves for å bygge CCF-datakoblingen:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"resources": [],
}
Sy inndelingene sammen med et JSON-bevisst redigeringsprogram som Visual Code for å minimere syntaksfeil som komma og høyre hakeparenteser og parenteser.
Kommentarer vises i metadataenedescription eller linjebundet med kommentarmerknad for å veilede prosessen for // malbygging. Hvis du vil ha mer informasjon, kan du se anbefalte fremgangsmåter for ARM-mal – kommentarer.
Vurder å bruke ARM-maltestverktøysettet (arm-ttk) til å validere malen du bygger. Hvis du vil ha mer informasjon, kan du se arm-ttk.
Eksempel på ARM-mal – parametere
Hvis du vil ha mer informasjon, kan du se Parametere i ARM-maler.
Advarsel
Brukes securestring for alle passord og hemmeligheter i objekter som kan leses etter ressursdistribusjon.
Hvis du vil ha mer informasjon, kan du se Sikre konfidensielle inndata og sikkerhetsanbefalinger for parametere.
{
"$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
}
Eksempel på ARM-mal – variabler
Disse anbefalte variablene bidrar til å forenkle malen. Bruk mer eller mindre etter behov. Hvis du vil ha mer informasjon, kan du se Variabler i ARM-maler.
"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
Eksempel på ARM-mal – ressurser
Det finnes fem ARM-distribusjonsressurser i denne malveiledningen som huser de fire komponentene for CCF-datakoblingsbygging.
-
contentTemplates (en overordnet ressurs)
- Metadata
- dataCollectionRules – Hvis du vil ha mer informasjon, kan du se regelen for datainnsamling.
- tabeller – Hvis du vil ha mer informasjon, kan du se utdatatabelldefinisjon.
- dataConnectorDefinitions – Hvis du vil ha mer informasjon, kan du se brukergrensesnittet for Data connector.
- Metadata
-
contentTemplates
- Metadata
- RestApiPoller – Hvis du vil ha mer informasjon, kan du se datatilkoblingsregler.
- 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!
]
}
Beslektet innhold
Hvis du vil ha mer informasjon, kan du se