Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
CCF (Codeless Connector Framework) tarjoaa kumppaneille, kokeneille käyttäjille ja kehittäjille mahdollisuuden luoda mukautettuja liittimiä tietojen Microsoft Sentinel.
CCF:n avulla luodut liittimet ovat täysin SaaS-liittimiä, mutta palveluasennuksia ei vaadita. Niihin sisältyy myös terveyden seuranta ja Microsoft Sentinel täysi tuki.
Luo CCF-liitin seuraavien ohjeiden avulla ja yhdistä tietolähde Microsoft Sentinel
- Luo tietoyhdistin
- ARM-mallin luominen
- Ota liitin käyttöön
- Yhdistä Microsoft Sentinel tietolähteeseen ja aloita tietojen käyttö
Tässä artikkelissa kerrotaan, miten jokainen vaihe suoritetaan, ja annetaan samalla esimerkki koodittomasta liittimestä .
Jos olet ohjelmistokehityskumppani ja tarvitset tukea CCF-tietoliittimen luomiseen, ota yhteyttä Microsoft Sentinel -kumppaneihin osoitteessaAzureSentinelPartner@microsoft.com.
Miten tämä CCF eroaa edellisestä versiosta?
CCF:n alkuperäinen versio julkistettiin tammikuussa 2022. Sen jälkeen olemme parantaneet käyttöympäristöä, eikä vanhaa julkaisua enää suositella. Tässä CCF:n uudessa versiossa on seuraavat keskeiset parannukset:
Parempi tuki eri todennus- ja sivutustyypeille.
Tukee tavallisia tiedonkeruusääntöjä (DCR).
Koodittoman liittimen käyttöliittymän ja yhteyden määritysosat ovat nyt erillisiä. Näin voidaan luoda liittimiä, joissa on useita yhteyksiä, mikä ei ollut aiemmin mahdollista.
Ennakkovaatimukset
Ennen kuin luot liittimen, tutustu tietolähteeseen ja siihen, miten Microsoft Sentinel on muodostettava yhteys.
Tietojen keräämisen päätepiste (DCE)
DCE on dcr-pyyntöä koskeva vaatimus. Vain yksi DCE luodaan lokianalyysin työtilan DCR-käyttöönottoa kohden. Jokainen Microsoft Sentinel työtilassa käyttöönotettu DCR käyttää samaa DCE:tä. Lisätietoja uuden luomisesta tai siitä, tarvitsetko uuden, on kohdassa Tietojen keräämisen päätepisteet Azure Monitorissa.
Tulostustaulukon tai -taulukoiden rakenne.
On tärkeää ymmärtää tietovirran muoto ja kentät, jotka haluat sisällyttää tulostetaulukkoon. Viittaa tietolähteen dokumentaatioon tai analysoi riittävät tulosteesimerkit.
Tutki seuraavia komponentteja ja tarkista niiden tuki Data Connector -ohjelmointirajapintaviittaus -kohdassa:
HTTP-pyyntö- ja vastausrakenne tietolähteeseen
Tietolähteen edellyttämä todennus.
Jos tietolähteesi esimerkiksi edellyttää varmenteella allekirjoitettua tunnusta, tietoyhdistimen ohjelmointirajapintaviittaus määrittää, ettei varmennetodennusta tueta.Tietolähteen sivutusasetukset
Ohjelmointirajapintoja testataan
Suosittelemme testaamaan komponentit ohjelmointirajapinnan testaustyökalulla, jolla on jokin seuraavista:
- Visual Studio Code ja Visual Studio Marketplacen laajennus
- PowerShell Invoke-RestMethod
- Microsoft Edge – Verkkokonsolityökalu
- Bruno
- Curl
Varoitus
Tilanteissa, joissa sinulla on luottamuksellisia tietoja, kuten tunnistetietoja, salaisuuksia, käyttöoikeustunnuksia, ohjelmointirajapinta-avaimia ja muita vastaavia tietoja, varmista, että käytät työkalua, joka suojaa tiedot tarvittavilla suojausominaisuuksilla, toimii offline-tilassa tai paikallisesti, ei synkronoi tietojasi pilvipalveluun eikä edellytä kirjautumista online-tilille. Näin voit vähentää luottamuksellisten tietojen yleisölle altistumisen riskiä.
Luo tietoyhdistin
Vihje
Jos olet itsenäinen ohjelmistotoimittaja (ISV) ja tarvitset tukea, kun luot Microsoft Sentinel-integrointia Microsoft Sentinel Codeless Connector Frameworkin avulla, Microsoft App Assure -tiimi voi ehkä auttaa. Ota yhteyttä App Assure -tiimiin lähettämällä sähköpostia osoitteeseen azuresentinelpartner@microsoft.com.
CCF-tietoliittimen luomiseen tarvitaan neljä osaa.
- Tulostetaulukon määritys
- Tiedonkeruusääntö (DCR)
- Tietoliittimen käyttöliittymä
- Tietoyhdistimen yhteyssäännöt
Kullakin osalla on osio, jossa on yksityiskohtaiset tiedot prosessista, jonka avulla se voidaan luoda ja vahvistaa. Ota JSON kustakin komponentista ARM-mallin lopullista pakkausta varten.
Tulostetaulukon määritys
Vihje
Ohita tämä vaihe, jos tietojasi käytetään vain tavallisissa Log Analytics -taulukoissa. Esimerkkejä vakiotaulukoista ovat CommonSecurityLog ja ASimDnsActivityLogs. Lisätietoja tuetuista vakiotietotyypeistä on kohdassa Mukautettujen tietoliittimien tietojen muunnostuki.
Jos tietolähteesi ei vastaa vakiotaulukon rakennetta, sinulla on kaksi vaihtoehtoa:
- Luo mukautettu taulukko kaikille tiedoille
- Luo mukautettu taulukko joillekin tiedoille ja jaa vaatimusten mukaiset tiedot vakiotaulukkoon
Log Analytics -käyttöliittymän avulla voit luoda mukautetun taulukon yhdessä DCR:n kanssa käyttämällä suoraan eteenpäin -menetelmää. Jos luot mukautetun taulukon käyttämällä Taulukoiden ohjelmointirajapintaa tai muuta ohjelmallista menetelmää, lisää _CL jälkiliite manuaalisesti taulukon nimeen. Lisätietoja on artikkelissa Mukautetun taulukon luominen.
Jos haluat lisätietoja tietojen jakamisesta useampaan kuin yhteen taulukkoon, katso esimerkkitiedot ja esimerkki mukautetusta taulukosta , joka on luotu näitä tietoja varten.
Tiedonkeruusääntö
Tietojen keräämisen säännöt määrittävät tiedonkeruuprosessin Azure Monitorissa. DcR-määritykset määrittävät, mitä tietoja kerätään, miten tiedot muunnetaan ja mihin ne lähetetään.
- Yhdellä tietoyhdistimellä otetaan käyttöön vain yksi DCR.
- Dcr-toiminnolla on oltava vastaava DCE samalla alueella.
- Kun CCF-tietoyhdistin otetaan käyttöön, dcr luodaan, jos sitä ei vielä ole olemassa.
Tutustu dcr-asetusten uusimpiin tietoihin seuraavissa artikkeleissa:
Opetusohjelma, jossa esitellään DCE:n luominen, mukaan lukien mallitietojen käyttäminen mukautetun taulukon ja DCR:n luomiseen, on artikkelissa Opetusohjelma: Tietojen lähettäminen Azure Valvontalokit lokien käsittely -ohjelmointirajapinnan avulla (Azure-portaali). Tämän opetusohjelman prosessin avulla voit varmistaa, että tiedot on otettu oikein taulukkoon DCR:n avulla.
Lisätietoja monimutkaisen DCR:n luomisesta useilla tietovuoilla on DCR-esimerkkiosiossa.
Tietoliittimen käyttöliittymä
Tämä osa hahmontaa tietoliittimen käyttöliittymän Microsoft Sentinel tietoyhdistimien valikoimassa. Jokaisella tietoyhdistimellä voi olla vain yksi käyttöliittymämääritelmä.
Luo tietoliittimen käyttöliittymä Data Connector Definition -ohjelmointirajapinnan avulla. Käytä tietoyhdistimen määritysviittausta lisäosana ohjelmointirajapintaelementtien yksityiskohtaisempaan selittämiseen.
Muistiinpanoja:
- Ohjelmointirajapintakyselyn
kindliittimen ominaisuuden on aina oltavaCustomizable. - Koska tämä on ohjelmointirajapinnan kyselyliitintyyppi, määritä
connectivityCriteriatyypiksihasDataConnectors - Esimerkki
instructionStepssisältää painikkeen, jonka tyyppi onConnectionToggleButton. Tämä painike auttaa käynnistämään tietoyhdistimen sääntöjen käyttöönoton määritettyjen yhteysparametrien perusteella.
Ohjelmointirajapinnan testaustyökalun avulla voit kutsua tietoyhdistimen määritysten ohjelmointirajapintaa tietoliittimen käyttöliittymän luomiseksi, jotta se voidaan vahvistaa tietoyhdistimien valikoimassa.
Jos haluat oppia esimerkistä, katso tietoyhdistimen määritysten viittausesimerkki -osio.
Tietoyhteyssäännöt
Tällä hetkellä CCF-tietoliittimen määrittämiseen voi käyttää kolmenlaisia tietoyhteyssääntöjä.
-
RestApiPollerkind-funktion avulla voit mukauttaa sivutusta, valtuutusta ja tietolähteen odotettuja pyyntö-/vastaustietoja. Lisätietoja on artikkelissa RestApiPoller-tietoyhdistimen yhteyssääntöjen viite. -
GCPkind-funktion avulla voit lyhentää kehitysaikaa määrittämällä sivutuksen ja odotetut vastaustiedot automaattisesti Google Cloud Platform (GCP) -tietolähteelle. Lisätietoja on artikkelissa GCP-tietoyhdistimen yhteyssääntöjen viite -
StorageAccountBlobContainerkind sallii sinun käyttää Azure blob Azure säilön tietolähteestä. Lisätietoja on kohdassa blob Azure tallennustilan blob-yhdistimien ohjelmointirajapintaviittaus.
Ohjelmointirajapinnan testaustyökalun avulla voit kutsua tietoyhdistimen ohjelmointirajapintaa ja luoda tietoliittimen, joka yhdistää yhteyssäännöt ja aiemmat osat. Varmista, että liitin on nyt yhdistetty käyttöliittymässä.
Luottamuksellisen syötteen suojaaminen
Riippumatta siitä, mitä todennusta CCF-tietoyhdistin käyttää, varmista, että luottamukselliset tiedot pysyvät suojattuina. Tavoitteena on välittää ARM-mallin tunnistetiedot CCF:lle jättämättä luettavissa olevia luottamuksellisia objekteja käyttöönottohistoriaasi.
Luo selite
Tietoyhdistimen määritys luo käyttöliittymäelementin suojaustunnistetietojen kysymistä varten. Jos tietoliittimesi esimerkiksi todennetaan lokilähteeseen OAuth-todennusta käyttämällä, tietoyhdistimen määritysosio sisältää OAuthForm -tyypin ohjeissa. Tämä määrittää ARM-mallin tunnistetietojen kysymistä varten.
"instructions": [
{
"type": "OAuthForm",
"parameters": {
"UsernameLabel": "Username",
"PasswordLabel": "Password",
"connectButtonLabel": "Connect",
"disconnectButtonLabel": "Disconnect"
}
}
],
Luottamuksellisen syötteen tallentaminen
ARM-käyttöönottomallin osassa on paikka, jossa järjestelmänvalvoja voi ottaa tietoliittimen käyttöön salasanan syöttämiseksi. Käytä securestring pitämään luottamukselliset tiedot suojattuina objektissa, jota ei voi lukea käyttöönoton jälkeen. Lisätietoja on kohdassa Parametrien suojaussuositukset.
"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
}
}
Securestring-objektien käyttäminen
Lopuksi CCF käyttää tunnistetieto-objekteja tietoyhdistimen osiossa.
"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"
}
},
Huomautus
Tunnistetieto-objektin "ClientSecret": "[[parameters('Password')]", outo syntaksi ei ole kirjoitusvirhe!
Jotta voit luoda käyttöönottomallin, joka käyttää myös parametreja, sinun on poistuttava kyseisen osan parametreista ylimääräisen aloituskohdan avulla[. Näin parametrit voivat määrittää arvon sen perusteella, miten käyttäjä on vuorovaikutuksessa liittimen kanssa.
Lisätietoja on artikkelissa Mallilausekkeiden ohjausmerkit.
Käyttöönottomallin luominen
Pakkaa Azure Resource Management (ARM) -malli manuaalisesti ohjeeksi käyttämällä esimerkkimallikoodimalleja. Nämä koodinäytteet jaetaan ARM-malliosioilla, jotka on liitettävä yhteen.
Jos olet luomassa Google Cloud Platform (GCP) CCF -tietoyhdistintä, pakkaa käyttöönottomalli GCP CCF -mallin avulla. Lisätietoja GCP CCF -mallin täyttämisestä on artikkelissa GCP-tietoliittimen yhteyssääntöjen viite.
Esimerkkimallien lisäksi Microsoft Sentinel sisältökeskuksessa käytettävissä olevat julkaistut ratkaisut käyttävät CCF:ää tietoliittimilleen. Tarkastele seuraavia ratkaisuja uusina esimerkkeinä siitä, miten voit ommella komponentit yhteen ARM-malliin.
RestApiPoller Esimerkkejä CCF-tietoyhdistimestä
- Ermes-selaimen suojaus
- Palo Alto Prisma Cloud CWPP
- Sophos Endpoint Protection
- Työpäivä
- Atlassian Jira
- Okta-kertakirjautuminen
GCP Esimerkkejä CCF-tietoyhdistimestä
Ota liitin käyttöön
Ota kooditon liitin käyttöön mukautettuna mallina.
Vihje
Poista edellisissä vaiheissa luomasi resurssit. Dcr ja mukautettu taulukko luodaan käyttöönoton yhteydessä. Jos et poista näitä resursseja ennen käyttöönottoa, mallin tarkistaminen on vaikeampaa.
- Kopioi ARM-käyttöönottomallin sisältö.
- Noudata Muokkaa ja ota käyttöön mallia -ohjeita artikkelista Pikaopas: ARM-mallien luominen ja käyttöönotto Azure-portaali avulla.
Verkon eristämisen ylläpitäminen kirjauslähdettä varten
Jos lokilähteesi edellyttää verkon eristämistä, määritä CCF:n käyttämien julkisten IP-osoitteiden sallittujen osoitteiden luettelo.
Azure näennäisverkot määrittävät verkkokäytön hallintatoiminnot palvelutunnisteiden avulla. CCF:n osalta kyseinen palvelutunniste on Scuba.
Löydät scuba-palvelutunnisteeseen liittyvän nykyisen IP-alueen ohjeartikkelista Palvelutunnisteiden etsinnän ohjelmointirajapinnan käyttäminen.
Vahvista kooditon liitin
Tarkastele koodaamatonta liitintä tietoyhdistimien valikoimassa. Avaa tietoyhdistin ja täytä yhteyden muodostamisessa tarvittavat todennusparametrit. Kun yhteys on muodostettu, dcr ja mukautetut taulukot luodaan. Tarkastele dcr-resurssia resurssiryhmässäsi ja logs-analytiikan työtilan mukautettuja taulukoita.
Huomautus
Voi kestää jopa 30 minuuttia, ennen kuin tiedot alkavat käyttää.
Esimerkki
Koodittoman liittimen luomisen jokainen vaihe esitetään seuraavissa esimerkkiosioissa.
- Esimerkkitiedot
- Esimerkki mukautetusta taulukosta
- Esimerkki tiedonkeräyssäännöstä
- Esimerkki tietoliittimen käyttöliittymän määrityksestä
- Esimerkkitietoyhteyden säännöistä
- Esimerkkitietojen käyttäminen esimerkkimallin kanssa
Tässä esimerkissä esitellään monimutkainen tietolähde, joka on liitetty useampaan kuin yhteen taulukkoon, tulostetaulukon rakenne ja DCR, jossa on useita tulostevirtoja. Dcr-esimerkissä ne kootaan yhteen KQL-muunnosten kanssa. Tietoyhdistimen käyttöliittymän määritys- ja yhteyssääntöjen esimerkit jatkavat tästä samasta esimerkkitietolähteestä. Lopuksi ratkaisumalli käyttää kaikkia näitä esimerkkiosia näyttääkseen, miten luodaan esimerkki CCF-tietoyhdistin.
Esimerkkitiedot
Tietolähde palauttaa seuraavan JSON:n, kun se muodostaa yhteyden päätepisteeseensä.
[
{
"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"
}
]
Tämä vastaus sisältää eventTypeilmoituksen ja tiedoston. Tiedostotapahtumat on tarkoitus käyttää normalisoituun vakiotaulukkoon , AsimFileEventLogs, kun taas ilmoitustapahtumat käsitellään mukautettuun taulukkoon.
Esimerkki mukautetusta taulukosta
Lisätietoja tämän taulukon rakenteesta on kohdassa Taulukoiden ohjelmointirajapinta. Mukautettujen lokitaulukoiden nimissä on oltava _CL jälkiliite.
{
"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"
}
]
}
}
}
Esimerkki tiedonkeräyssäännöstä
Seuraava DCR määrittää yksittäisen virran Custom-ExampleConnectorInput käyttämällä esimerkkitietolähdettä ja muuntaa tuloksen kahdeksi taulukoksi.
- Ensimmäinen tietovuo ohjaa
eventType= Ilmoituksen mukautettuunExampleConnectorAlerts_CLtaulukkoon. - toinen tietovuo ohjaa
eventType= tiedoston normalisoituun vakiotaulukkoon,ASimFileEventLogs
Lisätietoja tämän esimerkin rakenteesta on kohdassa Tiedonkeräyssäännön rakenne.
Voit luoda tämän dcr:n testiympäristössä noudattamalla tietojen keräämisen sääntöjen ohjelmointirajapintaa. Esimerkin {{double curly braces}} elementit ilmaisevat muuttujia, jotka vaativat arvoja, jotta niitä olisi helppo käyttää ohjelmointirajapinnan testaustyökalulla. Kun luot tämän resurssin ARM-mallissa, tässä ilmaistut muuttujat vaihdetaan parametreihin.
{
"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"
}
]
}
}
Esimerkki tietoliittimen käyttöliittymän määrityksestä
Tämä esimerkki sijaitsee Tietoyhdistimen määritysviittaus -kohdassa.
Esimerkkitietoyhdistimen yhteyssäännöistä
Tämä esimerkki sijaitsee tietoliittimien viittauksessa.
Esimerkki ARM-mallista
Luo ARM-käyttöönottomalli seuraavalla rakenteella, joka sisältää CCF-tietoliittimen luomiseen tarvittavat 4 JSON-osaa:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"resources": [],
}
Ompele osat yhteen JSON-editorin, kuten Visual Coden, kanssa, jotta syntaksivirheet, kuten pilkut ja suljesulkeet ja sulkeet, voidaan minimoida.
Mallin luontiprosessin ohjaamiseksi kommentit näkyvät metatiedoissadescription tai tekstiin sidottuina kommenttimerkinnällä // . Lisätietoja on artikkelissa ARM-mallin parhaat käytännöt – kommentit.
Harkitse ARM-mallitestityökalupaketin (arm-ttk) käyttöä luomasi mallin vahvistamiseksi. Lisätietoja on kohdassa arm-ttk.
Esimerkki ARM-mallista - parametrit
Lisätietoja on artikkelissa ARM-mallien parametrit.
Varoitus
Käytä securestring kaikkiin salasanoihin ja salaisuuksiin objekteissa, jotka voidaan lukea resurssien käyttöönoton jälkeen.
Lisätietoja on kohdassa Luottamuksellisten suojattu syöte ja parametrien suojaussuositukset.
{
"$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
}
Esimerkki ARM-mallista – muuttujat
Nämä suositellut muuttujat auttavat yksinkertaistamaan mallia. Käytä enemmän tai vähemmän tarpeen mukaan. Lisätietoja on artikkelissa ARM-mallien muuttujat.
"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
Esimerkki ARM-mallista – resurssit
Tässä mallioppaassa on viisi ARM-käyttöönottoresurssia, jotka sisältävät 4 CCF-tietoliittimen rakennusosaa.
-
contentTemplates (pääresurssi)
- Metatiedot
- dataCollectionRules – Lisätietoja on kohdassa Tietojen keräämisen sääntö.
- taulukot – Lisätietoja on kohdassa Tulostetaulukon määritys.
- dataConnectorDefinitions – Lisätietoja on kohdassa Tietoliittimen käyttöliittymä.
- Metatiedot
-
contentTemplates
- Metatiedot
- RestApiPoller – Lisätietoja on kohdassa Tietoyhteyssäännöt.
- 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!
]
}
Aiheeseen liittyvä sisältö
Lisätietoja on kohdassa