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.
Tämän oppaan avulla voit ymmärtää, luoda ja ottaa käyttöön push-pohjaisia koodittomia liittimiä Microsoft Sentinel käyttämällä CCF(Codeless Connector Framework) Pushia (esikatselu).
Mikä on CCF-työntö?
CCF Push -yhdistimien avulla sovelluksesi voivat lähettää suojaustapahtumia suoraan Microsoft Sentinel reaaliaikaisesti. Toisin kuin perinteiset kyselypohjaiset liittimet, jotka noutavat tietoja säännöllisesti ohjelmointirajapinnoista, push-liittimien avulla voit lähettää tietoja Sentinel, kun järjestelmässä tapahtuu tapahtumia.
CCF Push tarjoaa useita keskeisiä etuja:
- Sovelluksen ohjaama tiedonkulku: Sovelluksesi valvoo, milloin ja miten tietoja lähetetään, ottamalla käyttöön älykkäät erästrategiat ja optimoidun verkon käytön.
- Reaaliaikainen tietojen käsittely: Lähetä tiedot heti tapahtumien tapahtumisen jälkeen odottamatta kyselyjen aikavälejä.
- Yksinkertaistettu arkkitehtuuri: Sentinel kyselyä varten ei tarvitse säilyttää ohjelmointirajapinnan päätepisteitä.
- Mallipohjainen valmistelu: Käyttöönotto luo ARM-malleja dcr-pyyntöjä, mukautettuja taulukoita, Entra sovelluksen rekisteröintiä ja asiakassalaisuuksia varten . Saat lähetyssovelluksessa määritettävät yhteystiedot.
- Suojattu todennus: Käyttää Microsoft Entra-sovelluksia OAuth 2.0:n kanssa suojattuun tietojen lähettämiseen.
Ennakkovaatimukset
- Ennen kuin aloitat, sinulla on oltava pääsy Azure-Sentinel GitHub-säilöön paketointityökaluja varten.
- Microsoft Entra käyttöoikeudet:
- Sovelluksen rekisteröinnin luontioikeus Microsoft Entra ID. Yleensä tarvitaan Entra ID Application Developer -rooli tai uudempi rooli.
- Salaista sovellusta luotaessa. Jos et myönnä tätä käyttöoikeutta, liitin epäonnistuu tietoturvasyistä.
- Julkaisijalla on oltava tarvittava rooli tunnusten noutamiseen Microsoft Entra sovelluksesta. Näitä tunnuksia tarvitaan pyyntöjen todentamiseen tietojen keräämisen päätepisteeseen (DCE), joka on päätepiste, johon yhdistin lopulta työntää tietojaan. Jos toimittaja ei voi noutaa tunnuksia, tietoja ei voi lähettää DCE:hen.
- Microsoft Azure käyttöoikeudet:
- Oikeus määrittää valvontamittarien julkaisijan rooli tiedonkeräyssäännölle (DCR). Yleensä tarvitaan Azure RBAC-omistajan tai käyttöoikeuksien järjestelmänvalvojan rooli.
Miten CCF-työntö toimii
Push-malli vs. pull-malli
Push- ja pull-tietojen käsittelymallien välisen eron ymmärtäminen auttaa valitsemaan skenaariollesi oikean liitintyypin.
CCF-pull-yhdistimet – kyselypohjainen:
Pull-mallissa Microsoft Sentinel säännöllisesti kyselyitä ohjelmointirajapintaasi tietojen noutamiseksi:
- Microsoft Sentinel käynnistää yhteydet tietolähteen ohjelmointirajapintaan määritetyn aikataulun mukaisesti.
- Tietoja saapuu säännöllisin väliajoin, esimerkiksi viiden minuutin välein.
- Sinun on ylläpidettävä julkisesti käytettävää ohjelmointirajapinnan päätepistettä.
- Sentinel kyselyinfrastruktuuri hallitsee tiedonkeräysprosessia.
CCF-push-liittimet – tapahtumapohjainen:
Push-mallissa sovelluksesi lähettää tiedot suoraan Microsoft Sentinel:
- Sovelluksesi käynnistää tietojen lähettämisen tapahtumien tapahtuessa.
- Tiedot saapuvat lähes reaaliaikaisesti, kun tapahtumia luodaan.
- Sinun ei tarvitse ylläpitää ohjelmointirajapinnan päätepistettä.
- Sovelluksesi hallitsee erän, ajoituksen ja tiedonkulun optimointia.
Push-tietovuo
CCF:n push-tietovuo koostuu viidestä päävaihetta:
Ota liitin käyttöön Microsoft Sentinel.
Azure luo automaattisesti seuraavat resurssit:
- Microsoft Entra sovellus tunnistetiedoilla
- Tietojen keräämissääntö (DCR) – määrittää, miten tietoja käsitellään
- Tietojen keräämisen päätepiste (DCE) – URL-osoite, johon lähetät tietoja
- Mukautettu lokitaulukko - johon tiedot on tallennettu
- Roolimääritykset – Entra sovelluksen käyttöoikeudet
Saat seuraavat yhteystiedot:
- Vuokraajan tunnus
- Sovelluksen (asiakkaan) tunnus
- Asiakasohjelman salasana
- DCE URI (päätepisteen URL-osoite)
- DCR:n muuttumaton tunnus
- Stream nimi
Sovelluksesi lähettää seuraavat tiedot:
- Noutaa OAuth 2.0 -tunnuksen käyttämällä CCF:n luomia Entra sovelluksen tunnistetietoja. Lisätietoja on artikkelissa OAuth 2.0 -asiakkaan tunnistetietojen kulku
- Muotoilee tapahtumat JSON-muotoon, joka vastaa taulukon rakennetta
- POSTs-tiedot DCE-päätepisteeseen
Azure käsittelee ja tallentaa tietoja:
- DcR-muutokset muuntavat tiedot (valinnaiset KQL-muunnokset)
- Tiedot kirjoitetaan mukautettuun taulukkoon Log Analyticsissa
- Tiedot ovat käytettävissä kyselyille, analytiikalle ja hälytyksille Sentinel
CCF push -artefaktit
CCF Push -liitinratkaisu koostuu neljästä pääkomponentista:
- Mukautetun taulukon määritys
- Tiedonkeruusääntö (DCR)
- Liittimen määritys (UI)
- Push-yhdistimen määritys
Mukautetun taulukon määritys
Mikä se on: Rakenne, joka määrittää tietosi rakenteen Log Analyticsissa.
Tärkeimmät vaatimukset:
- Taulukon nimen lopussa on oltava
_CL(mukautettu lokin jälkiliite). - Sarakkeen
TimeGenerated(datetime-tyyppi) on oltava mukana. - Saraketyypit: merkkijono, kokonaisluku, pitkä, todellinen, totuusarvo, päivämäärä/aika, dynaaminen, GUID-tunnus.
- Käytä ohjelmointirajapinnan versiota tai uudempaa versiota
2025-07-01. - Lisätietoja on artikkelissa Mukautetun taulukon luominen valvontalokien Azure.
Esimerkki:
{
"name": "ContosoSecurityAlerts_CL",
"type": "Microsoft.OperationalInsights/workspaces/tables",
"apiVersion": "2025-07-01",
"properties": {
"schema": {
"name": "ContosoSecurityAlerts_CL",
"columns": [
{
"name": "TimeGenerated",
"type": "datetime"
},
{
"name": "EventSeverity",
"type": "string"
},
{
"name": "EventType",
"type": "string"
},
{
"name": "UserName",
"type": "string"
},
{
"name": "SourceIP",
"type": "string"
},
{
"name": "DeviceId",
"type": "string"
},
{
"name": "AlertMessage",
"type": "string"
}
]
}
}
}
Tiedonkeruusääntö (DCR)
Mikä se on: Määrittää, miten Azure tietojen valvonta ja käsittely. Lisätietoja on Azure Monitorin tietojenkeruusääntöjen ohjeartikkelissa.
Mitä se tekee:
- Määrittää syötevirran nimen (mitä sovelluksesi käyttää tietoja lähetettäessä)
- Määrittää valinnaiset KQL-muunnokset tietojen muotoiluun ja täydentämiseen
- Reitittää tiedot kohdetaulukkoon
- Linkit tietojen keräämisen päätepisteeseen (DCE)
Avainosat:
-
streamDeclarations: Määrittää saapuvien tietojen rakenteen (sen on vastattava sovelluksen lähettämiä tietoja) -
destinations: Tietojen sijainti (Log Analytics -työtila) -
dataFlows: Muunnosputki syötevirrasta tulostaulukkoon -
dataCollectionEndpointId: Linkit tietojen käsittelystä DCE:hen
Esimerkki:
{
"name": "ContosoSecurityAlertsPushDCR",
"apiVersion": "2021-09-01-preview",
"type": "Microsoft.Insights/dataCollectionRules",
"location": "[parameters('workspace-location')]",
"properties": {
"streamDeclarations": {
"Custom-ContosoSecurityAlerts": {
"columns": [
{
"name": "EventSeverity",
"type": "string"
},
{
"name": "EventType",
"type": "string"
},
{
"name": "UserName",
"type": "string"
},
{
"name": "SourceIP",
"type": "string"
},
{
"name": "DeviceId",
"type": "string"
},
{
"name": "AlertMessage",
"type": "string"
}
]
}
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "[variables('workspaceResourceId')]",
"name": "clv2ws1"
}
]
},
"dataFlows": [
{
"streams": [
"Custom-ContosoSecurityAlerts"
],
"destinations": [
"clv2ws1"
],
"transformKql": "source | extend TimeGenerated = now()",
"outputStream": "Custom-ContosoSecurityAlerts_CL"
}
],
"dataCollectionEndpointId": "[concat('/subscriptions/',parameters('subscription'),'/resourceGroups/',parameters('resourceGroupName'),'/providers/Microsoft.Insights/dataCollectionEndpoints/',parameters('workspace'))]"
}
}
Tärkeää
- Stream nimen alussa on oltava
Custom-etuliite. -
transformKqlvoi olla vain"source"läpivientiä varten tai sisällyttää KQL-logiikan tietojen muuntamiseen. -
outputStreamtaulukon nimenCustom-on vastattava etuliitettä ja_CLjälkiliitettä.
Liittimen määritys (UI)
Liittimen määritys määrittää, miltä liitin näyttää Microsoft Sentinel-tietoyhdistimien valikoimassa. Lisätietoja on kohdassa Tietoyhdistimen määritysten ohjelmointirajapinnan viite.
Liittimen määritelmä sisältää seuraavat:
- Liittimen otsikko, kuvaus ja brändäys
- Tarvittavat edellytykset ja käyttöoikeudet, kuten työtilan käyttöoikeus ja Entra käyttöoikeudet
- Käyttöönoton ohjeet
- Käyttöliittymän ohjausobjektit, joiden avulla voit näyttää yhteyden tiedot käyttäjille
Käyttöliittymän tärkeimmät elementit:
-
DeployPushConnectorButton: Käynnistää automatisoidun resurssien käyttöönoton -
CopyableLabel: Näyttää yhteyden tiedot käyttöönoton jälkeen (käyttääfillWithparametria) -
Markdown: Sisältää muotoiltuja ohjeita ja kontekstin -
IsConnectedQuery: Vahvistaa yhdistimen yhteyden viimeisimpien tietojen perusteella
Esimerkkirakenne (lyhenne selkeydestä):
{
"name": "ContosoSecurityAlertsPush",
"apiVersion": "2022-09-01-preview",
"type": "Microsoft.SecurityInsights/dataConnectorDefinitions",
"location": "[parameters('workspace-location')]",
"kind": "Customizable",
"properties": {
"connectorUiConfig": {
"id": "ContosoSecurityAlertsPush",
"title": "Contoso Security Alerts (Push)",
"publisher": "Contoso Corporation",
"descriptionMarkdown": "The [Contoso Security Alerts](https://www.contoso.com/) connector provides the capability to push real-time security alerts from your Contoso application directly into Microsoft Sentinel using the Codeless Connector Framework (CCF) Push pattern. This connector ingests alert severity, event types, user information, and network details into a custom Log Analytics table for analysis, alerting, and visualization.",
"graphQueries": [
{
"metricName": "Security Alerts",
"legend": "ContosoSecurityAlerts_CL",
"baseQuery": "ContosoSecurityAlerts_CL"
}
],
"sampleQueries": [
{
"description": "All security alerts",
"query": "ContosoSecurityAlerts_CL\n | sort by TimeGenerated desc"
},
{
"description": "Critical and High severity alerts",
"query": "ContosoSecurityAlerts_CL\n | where EventSeverity in ('Critical', 'High')\n | sort by TimeGenerated desc"
}
],
"dataTypes": [
{
"name": "ContosoSecurityAlerts_CL",
"lastDataReceivedQuery": "ContosoSecurityAlerts_CL\n| summarize Time = max(TimeGenerated)\n| where isnotempty(Time)"
}
],
"connectivityCriteria": [
{
"type": "IsConnectedQuery",
"value": [
"ContosoSecurityAlerts_CL\n| summarize LastLogReceived = max(TimeGenerated)\n| project IsConnected = LastLogReceived > ago(7d)"
]
}
],
"availability": {
"status": 1
},
"permissions": {
"resourceProvider": [
{
"provider": "Microsoft.OperationalInsights/workspaces",
"permissionsDisplayText": "read and write permissions are required.",
"providerDisplayName": "Workspace",
"scope": "Workspace",
"requiredPermissions": {
"write": true,
"read": true,
"delete": true
}
}
],
"customs": [
{
"name": "Microsoft Entra",
"description": "Permission to create an app registration in Microsoft Entra ID. Typically requires Entra ID Application Developer role or higher."
},
{
"name": "Microsoft Azure",
"description": "Permission to assign Monitoring Metrics Publisher role on data collection rule (DCR). Typically requires Azure RBAC Owner or User Access Administrator role."
}
]
},
"instructionSteps": [
{
"title": "1. Create ARM Resources and Provide the Required Permissions",
"description": "This connector enables your Contoso application to push security alerts directly to Microsoft Sentinel via the Azure Monitor Ingestion API.",
"instructions": [
{
"type": "Markdown",
"parameters": {
"content": "#### Automated Configuration and Secure Data Ingestion with Entra Application \nClicking on \"Deploy\" will trigger the creation of a Log Analytics table and a Data Collection Rule (DCR). \nIt will then create an Entra application, link the DCR to it, and set the entered secret in the application. This setup enables data to be sent securely to the DCR using an Entra token."
}
},
{
"type": "DeployPushConnectorButton",
"parameters": {
"label": "Deploy Contoso Push connector resources",
"applicationDisplayName": "Contoso Security Alerts Push Connector Application"
}
}
]
},
{
"title": "2. Configure Your Contoso Application",
"description": "Use the following parameters to configure your Contoso application to push security alerts to the workspace.",
"instructions": [
{
"type": "CopyableLabel",
"parameters": {
"label": "Tenant ID (Directory ID)",
"fillWith": [
"TenantId"
]
}
},
{
"type": "CopyableLabel",
"parameters": {
"label": "Entra App Registration Application ID",
"fillWith": [
"ApplicationId"
],
"placeholder": "Deploy push connector to get the App Registration Application ID"
}
},
{
"type": "CopyableLabel",
"parameters": {
"label": "Entra App Registration Secret",
"fillWith": [
"ApplicationSecret"
],
"placeholder": "Deploy push connector to get the App Registration Secret"
}
},
{
"type": "CopyableLabel",
"parameters": {
"label": "Data Collection Endpoint Uri",
"fillWith": [
"DataCollectionEndpoint"
],
"placeholder": "Deploy push connector to get the Data Collection Endpoint Uri"
}
},
{
"type": "CopyableLabel",
"parameters": {
"label": "Data Collection Rule Immutable ID",
"fillWith": [
"DataCollectionRuleId"
],
"placeholder": "Deploy push connector to get the Data Collection Rule Immutable ID"
}
},
{
"type": "CopyableLabel",
"parameters": {
"label": "Stream Name",
"value": "Custom-ContosoSecurityAlerts"
}
},
{
"type": "Markdown",
"parameters": {
"content": "#### Configure Contoso Application\nUpdate your Contoso application configuration with the above credentials to enable security alert push to Microsoft Sentinel.\n\nExample configuration:\njson\n{\n \"azure\": {\n \"tenant_id\": \"<Tenant ID>\",\n \"client_id\": \"<Application ID>\",\n \"client_secret\": \"<Application Secret>\",\n \"dce_endpoint\": \"<Data Collection Endpoint Uri>\",\n \"dcr_immutable_id\": \"<Data Collection Rule Immutable ID>\",\n \"stream_name\": \"Custom-ContosoSecurityAlerts\"\n }\n}\n"
}
}
]
}
]
}
}
}
Tärkeää
- Kohteen
idconnectorUiConfigon oltava yksilöllinen ja vastattava viittauksia tietoyhdistimen määrityksissä. - Käytä
IsConnectedQuerytuotantoyhdistimiä (vahvistaa viimeisimmät tiedot) taihasDataConnectorsyksinkertaisempaa vahvistusta varten. - Kohteen
fillWithparametritCopyableLabeltäytetään automaattisesti käyttöönoton jälkeen. - Kiinteät arvot, kuten virran nimi, käyttävät parametria -
valueparametrinfillWithsijaan.
Push-yhdistimen määritys
Push-yhdistimen määritys on tietoliittimen esiintymä, joka linkittää liittimen määrityksen käyttöön otettuihin resursseihin.
Push-yhdistimen määritys
- Linkittää liittimen määrityksen käyttöön otettuun DCR- ja Entra sovellukseen
- Tallentaa todennustiedot (sovellustunnus, palvelun päänimen tunnus)
- Tallentaa DCR-määritykset (päätepiste, muuttumaton tunnus, virran nimi)
- Ottaa käyttöön käyttöliittymän, joka noutaa ja näyttää yhteyden tiedot käyttäjille
Tärkeimmät ominaisuudet:
-
connectorDefinitionName: On vastattavaidliittimen määritystä -
dcrConfig: Sisältää DCR-päätepisteen, säännön tunnuksen ja virran nimen -
auth: Sisältää Entra sovellustunnuksen ja palvelun päänimen tunnuksen -
kind: On oltava push-liitinten push-muotoinen
Esimerkki:
{
"name": "ContosoSecurityAlertsPushDCR",
"apiVersion": "2021-09-01-preview",
"type": "Microsoft.Insights/dataCollectionRules",
"location": "[parameters('workspace-location')]",
"properties": {
"streamDeclarations": {
"Custom-ContosoSecurityAlerts": {
"columns": [
{
"name": "EventSeverity",
"type": "string"
},
{
"name": "EventType",
"type": "string"
},
{
"name": "UserName",
"type": "string"
},
{
"name": "SourceIP",
"type": "string"
},
{
"name": "DeviceId",
"type": "string"
},
{
"name": "AlertMessage",
"type": "string"
}
]
}
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "[variables('workspaceResourceId')]",
"name": "clv2ws1"
}
]
},
"dataFlows": [
{
"streams": [
"Custom-ContosoSecurityAlerts"
],
"destinations": [
"clv2ws1"
],
"transformKql": "source | extend TimeGenerated = now()",
"outputStream": "Custom-ContosoSecurityAlerts_CL"
}
],
"dataCollectionEndpointId": "[concat('/subscriptions/',parameters('subscription'),'/resourceGroups/',parameters('resourceGroupName'),'/providers/Microsoft.Insights/dataCollectionEndpoints/',parameters('workspace'))]"
}
}
Tärkeää
- -
connectorDefinitionNamekohteen on vastattava tarkalleen liittimen määrityksenidkohdetta . - Kohteen
streamNameon vastattava DCR:ssä määritettyä virtaa. - Tämä resurssi luodaan automaattisesti käyttöönoton aikana, kun käyttäjät valitsevat DeployPushConnector-painikkeen .
Ensimmäisen push-liittimen luominen
Tässä esimerkissä luot yksinkertaisen palveluliittimen, joka lähettää suojausilmoituksia sovelluksestasi Sentinel.
Tavoite: Lähetä suojaushälytyksiä sovelluksesta reaaliaikaisesti Sentinel
Sovelluksesi lähettää tapahtumarakenteen:
{
"TimeGenerated": "2025-11-21T10:30:00Z",
"EventSeverity": "Medium",
"EventType": "LoginAlert",
"UserName": "alice@contoso.com",
"SourceIP": "192.168.1.100",
"DeviceId": "device-12345",
"AlertMessage": "Multiple failed login attempts detected"
}
Vaiheittaiset ohjeet push-liittimen luomiseen
Kloonaa Azure-Sentinel säilö
Kloonaa sitten virallinen Azure-Sentinel säilö paikalliseen tietokoneeseen. Tämä säilö sisältää pakkaustyökalut ja vakioratkaisurakenteen.
Kloonaa säilö
git clone https://github.com/<YOUR_FORK>/Azure-Sentinel.gitSiirry ratkaisujen hakemistoon
cd Azure-Sentinel/Solutions
Säilön rakenne sisältää seuraavat:
- Työkalut/Create-Azure-Sentinel-Solution/V3/
- Sisältää createSolutionV3.ps1-pakkauskomentosarjan
- Ratkaisut/ Missä luot liitinratkaisusi
Luo ratkaisukansiorakenne Luo uusi ratkaisuhakemisto Ratkaisut/kansioon vakionimeämiskäytännön mukaisesti. Ratkaisuhakemistojen luominen (Azure-Sentinel/Ratkaisut/)
mkdir ContosoSecurityAlerts cd ContosoSecurityAlerts mkdir Data mkdir "Data Connectors" mkdir "Data Connectors/ContosoSecurityAlerts_ccf"Kansiorakenne näyttää seuraavalta:
Azure Sentinel/
└-ratkaisut/
└?? ContosoSecurityAlerts/
├?? Tiedot/
└uu tietoliittimet/
ContosoSecurityAlerts_ccf/Määritä taulukko
Luo ContosoSecurityAlerts_ccf-kansioon tiedosto nimeltä table.json käyttäen mukautettua taulukkomääritystä:
{ "name": "ContosoSecurityAlerts_CL", "type": "Microsoft.OperationalInsights/workspaces/tables", "apiVersion": "2025-07-01", "properties": { "schema": { "name": "ContosoSecurityAlerts_CL", "columns": [ { "name": "TimeGenerated", "type": "datetime" }, { "name": "EventSeverity", "type": "string" }, { "name": "EventType", "type": "string" }, { "name": "UserName", "type": "string" }, { "name": "SourceIP", "type": "string" }, { "name": "DeviceId", "type": "string" }, { "name": "AlertMessage", "type": "string" } ] } } }Luo DCR
Luo ContosoSecurityAlerts_ccf-kansioon tiedosto nimeltä DCR.json, joka määrittää syötevirran ja reitittää tiedot taulukkoon:
{ "name": "ContosoSecurityAlertsPushDCR", "apiVersion": "2021-09-01-preview", "type": "Microsoft.Insights/dataCollectionRules", "location": "[parameters('workspace-location')]", "properties": { "streamDeclarations": { "Custom-ContosoSecurityAlerts": { "columns": [ { "name": "EventSeverity", "type": "string" }, { "name": "EventType", "type": "string" }, { "name": "UserName", "type": "string" }, { "name": "SourceIP", "type": "string" }, { "name": "DeviceId", "type": "string" }, { "name": "AlertMessage", "type": "string" } ] } }, "destinations": { "logAnalytics": [ { "workspaceResourceId": "[variables('workspaceResourceId')]", "name": "clv2ws1" } ] }, "dataFlows": [ { "streams": [ "Custom-ContosoSecurityAlerts" ], "destinations": [ "clv2ws1" ], "transformKql": "source | extend TimeGenerated = now()", "outputStream": "Custom-ContosoSecurityAlerts_CL" } ], "dataCollectionEndpointId": "[concat('/subscriptions/',parameters('subscription'),'/resourceGroups/',parameters('resourceGroupName'),'/providers/Microsoft.Insights/ dataCollectionEndpoints/',parameters('workspace'))]" } }Liittimen määrityksen luominen
Luo ContosoSecurityAlerts_ccf-kansioon tiedosto nimeltä connectorDefinition.json, joka määrittää, miten käyttäjät käyttävät liitintä Sentinel:
{ "name": "ContosoSecurityAlertsPush", "apiVersion": "2022-09-01-preview", "type": "Microsoft.SecurityInsights/dataConnectorDefinitions", "location": "[parameters('workspace-location')]", "kind": "Customizable", "properties": { "connectorUiConfig": { "id": "ContosoSecurityAlertsPush", "title": "Contoso Security Alerts (Push)", "publisher": "Contoso Corporation", "descriptionMarkdown": "The [Contoso Security Alerts](https://www.contoso.com/) connector provides the capability to push real-time security alerts from your Contoso application directly into Microsoft Sentinel using the Codeless Connector Framework (CCF) Push pattern. This connector ingests alert severity, event types, user information, and network details into a custom Log Analytics table for analysis, alerting, and visualization.", "graphQueries": [ { "metricName": "Security Alerts", "legend": "ContosoSecurityAlerts_CL", "baseQuery": "ContosoSecurityAlerts_CL" } ], "sampleQueries": [ { "description": "All security alerts", "query": "ContosoSecurityAlerts_CL\n | sort by TimeGenerated desc" }, { "description": "Critical and High severity alerts", "query": "ContosoSecurityAlerts_CL\n | where EventSeverity in ('Critical', 'High')\n | sort by TimeGenerated desc" } ], "dataTypes": [ { "name": "ContosoSecurityAlerts_CL", "lastDataReceivedQuery": "ContosoSecurityAlerts_CL\n| summarize Time = max(TimeGenerated)\n| where isnotempty(Time)" } ], "connectivityCriteria": [ { "type": "IsConnectedQuery", "value": [ "ContosoSecurityAlerts_CL\n| summarize LastLogReceived = max(TimeGenerated)\n| project IsConnected = LastLogReceived > ago(7d)" ] } ], "availability": { "status": 1 }, "permissions": { "resourceProvider": [ { "provider": "Microsoft.OperationalInsights/workspaces", "permissionsDisplayText": "read and write permissions are required.", "providerDisplayName": "Workspace", "scope": "Workspace", "requiredPermissions": { "write": true, "read": true, "delete": true } } ], "customs": [ { "name": "Microsoft Entra", "description": "Permission to create an app registration in Microsoft Entra ID. Typically requires Entra ID Application Developer role or higher." }, { "name": "Microsoft Azure", "description": "Permission to assign Monitoring Metrics Publisher role on data collection rule (DCR). Typically requires Azure RBAC Owner or User Access Administrator role." } ] }, "instructionSteps": [ { "title": "1. Create ARM Resources and Provide the Required Permissions", "description": "This connector enables your Contoso application to push security alerts directly to Microsoft Sentinel via the Azure Monitor Ingestion API.", "instructions": [ { "type": "Markdown", "parameters": { "content": "#### Automated Configuration and Secure Data Ingestion with Entra Application \nClicking on \"Deploy\" will trigger the creation of a Log Analytics table and a Data Collection Rule (DCR). \nIt will then create an Entra application, link the DCR to it, and set the entered secret in the application. This setup enables data to be sent securely to the DCR using an Entra token." } }, { "type": "DeployPushConnectorButton", "parameters": { "label": "Deploy Contoso Push connector resources", "applicationDisplayName": "Contoso Security Alerts Push Connector Application" } } ] }, { "title": "2. Configure Your Contoso Application", "description": "Use the following parameters to configure your Contoso application to push security alerts to the workspace.", "instructions": [ { "type": "CopyableLabel", "parameters": { "label": "Tenant ID (Directory ID)", "fillWith": [ "TenantId" ] } }, { "type": "CopyableLabel", "parameters": { "label": "Entra App Registration Application ID", "fillWith": [ "ApplicationId" ], "placeholder": "Deploy push connector to get the App Registration Application ID" } }, { "type": "CopyableLabel", "parameters": { "label": "Entra App Registration Secret", "fillWith": [ "ApplicationSecret" ], "placeholder": "Deploy push connector to get the App Registration Secret" } }, { "type": "CopyableLabel", "parameters": { "label": "Data Collection Endpoint Uri", "fillWith": [ "DataCollectionEndpoint" ], "placeholder": "Deploy push connector to get the Data Collection Endpoint Uri" } }, { "type": "CopyableLabel", "parameters": { "label": "Data Collection Rule Immutable ID", "fillWith": [ "DataCollectionRuleId" ], "placeholder": "Deploy push connector to get the Data Collection Rule Immutable ID" } }, { "type": "CopyableLabel", "parameters": { "label": "Stream Name", "value": "Custom-ContosoSecurityAlerts" } }, { "type": "Markdown", "parameters": { "content": "#### Configure Contoso Application\nUpdate your Contoso application configuration with the above credentials to enable security alert push to Microsoft Sentinel.\n\nExample configuration:\njson\n{\n \"azure\": {\n \"tenant_id\": \"<Tenant ID>\",\n \"client_id\": \"<Application ID>\",\n \"client_secret\": \"<Application Secret>\",\n \"dce_endpoint\": \"<Data Collection Endpoint Uri>\",\n \"dcr_immutable_id\": \"<Data Collection Rule Immutable ID>\",\n \"stream_name\": \"Custom-ContosoSecurityAlerts\"\n }\n}\n" } } ] } ] } } }Luo tietoyhdistimen määritys
Luo ContosoSecurityAlerts_ccf-kansioon tiedosto nimeltä dataConnector.json, joka linkittää liittimen määrityksen käyttöön otettuihin resursseihin:
{ "name": "ContosoSecurityAlertsPushConnectorPolling", "apiVersion": "2024-09-01", "type": "Microsoft.SecurityInsights/dataConnectors", "kind": "Push", "properties": { "connectorDefinitionName": "ContosoSecurityAlertsPush", "dcrConfig": { "streamName": "Custom-ContosoSecurityAlerts", "dataCollectionEndpoint": "[[parameters('dcrConfig').dataCollectionEndpoint]", "dataCollectionRuleImmutableId": "[[parameters('dcrConfig').dataCollectionRuleImmutableId]" }, "auth": { "type": "Push", "AppId": "[[parameters('auth').appId]", "ServicePrincipalId": "[[parameters('auth').servicePrincipalId]" }, "request": { "RetryCount": 1 }, "response": { "eventsJsonPaths": [ "$" ] } } }Ratkaisun metatietojen Files luominen
Solution_ContosoSecurityAlerts.json Luo
Solution_ContosoSecurityAlerts.jsonTiedot-kansiossa ratkaisusi tiedoilla:{ "Name": "ContosoSecurityAlerts", "Author": "Contoso Corporation - support@contoso.com", "Logo": "<svg width=\"75px\" height=\"75px\" viewBox=\"0 0 75 75\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"75\" height=\"75\" fill=\"#FF6B35\"/><text x=\"37. 5\" y=\"45\" font-family=\"Arial\" font-size=\"18\" fill=\"white\" text-anchor=\"middle\" font-weight=\"bold\">CONTOSO</text></svg>", "Description": "The Contoso Security Alerts solution provides real-time security alert ingestion from your Contoso application into Microsoft Sentinel using the Codeless Connector Framework (CCF) Push pattern. Your application pushes alert severity, event types, user information, and network details directly to Azure Monitor for analysis, alerting, and visualization.", "Data Connectors": [ "Data Connectors/ContosoSecurityAlerts_ccf/connectorDefinition.json" ], "BasePath": "C:\\GitHub\\Azure-Sentinel\\Solutions\\ContosoSecurityAlerts", "Version": "1.0.0", "Metadata": "SolutionMetadata.json", "TemplateSpec": true, "Is1PConnector": false }Tärkeää
Kriittiset kenttävaatimukset:
-
BasePath: Päivitä todelliseen paikalliseen polkuusi Azure-Sentinel säilöön -
Metadata: On viitattavaSolutionMetadata.json(luotu vaiheessa 6B) -
Version: Semanttinen versiointi, esimerkiksi3.0.0 -
TemplateSpec: Ainatruesisältökeskuksen ratkaisuille -
Is1Pconnector: Määritä -falsearvo kumppanille/mukautetuille liittimille
-
SolutionMetadata.json luominen ratkaisun pääkansiossa
Luo ContosoSecurityAlerts-kansiossa SolutionMetadata.json ratkaisun päähakemistoon (sama taso kuin Tiedot-kansio):
{ "publisherId": "contoso", "offerId": "contoso-security-alerts", "firstPublishDate": "2025-01-01", "lastPublishDate": "2025-01-01", "providers": [ "Contoso" ], "categories": { "domains": [ "Security - Threat Protection", "Security - Cloud Security" ] }, "support": { "name": "Contoso Corporation", "tier": "Partner", "link": "https://www.contoso.com/support" } }Tarvitset SolutionMetadata.json -tiedoston sisältökeskuksen pakkaamista varten:
- Pakkaustyökalu odottaa tätä tiedostoa ratkaisun pääkansiossa
- Se sisältää Marketplacen metatietoja sisältökeskuksen jakelua varten
ReleaseNotes.md luominen ratkaisun pääkansiossa
Versio Muokkauspäivämäärä (PP-KK-VVVV) Muutoshistoria 3.0.0 PP-KK-VVVV Esimerkkiratkaisu
Kelpoisuustarkistusluettelo
Ennen kuin jatkat seuraavaan vaiheeseen, tarkista seuraavat:
- Kansion nimessä ei ole välilyöntejä, esimerkiksi
ContosoSecurityAlerts -
NameSolution_ContosoSecurityAlerts.json kenttä vastaa kansion nimeä täsmälleen -
SolutionMetadata.jsonon ratkaisun pääkansiossa (ei Tietokansiossa) -
BasePathviittaa todelliseen paikalliseen Azure-Sentinel säilön polkuun -
Metadatakenttäviittaukset "SolutionMetadata.json" -
publisherIdjaofferIdvastaavat toisiaan molemmissa tiedostoissa
Ratkaisun rakenteen tarkistaminen
Vahvista, että kansiorakenne vastaa vaadittua asettelua ja että kaikki tiedostot ovat paikoillaan:
Azure-Sentinel/ └── Solutions/ └── ContosoSecurityAlerts/ Folder name (no spaces) ├── Data/ │ └── Solution_ContosoSecurityAlerts.json From Step 7A ├── SolutionMetadata.json From Step 7B (at root) ├── ReleaseNotes.md From Step 7C └── Data Connectors/ └── ContosoSecurityAlerts_ccf/ ├── table.json From Step 3 ├── DCR.json From Step 4 ├── connectorDefinition.json From Step 5 └── dataConnector.json From Step 6Pakkaa ratkaisusi
luo ARMcreateSolutionV3.ps1 käyttöönottomalli käyttämällä createSolutionV3.ps1-pakkaustyökalua.
# Navigate to the packaging tools directory (from Azure-Sentinel repository root) cd Tools/Create-Azure-Sentinel-Solution/V3 # Run the packaging tool # When prompted for "Enter solution data folder path:", provide: # <REPO_ROOT>Solutions/ContosoSecurityAlerts/Data (Note! This path is absolute) .\createSolutionV3.ps1Komentosarja automaattisesti:
- Vahvistaa tietojen/kansion rakenteen
- Käsittelee liittimen artefaktit
Odotettu tuloste:
Pakkauskomentosarja näyttää epäonnistuneen arm-ttk-vahvistuksen (Azure Resource Manager Template Toolkit). Tämä virhe on odotettu ja normaali CCF-push-liittimille:
Failed arm-ttk (Test-AzTemplate): Package Failed arm-ttk (Test-AzTemplate) on solutions: Package ************Validating if Package Json files are valid or not*************** File Solutions\ContosoSecurityAlerts\Package\createUiDefinition.json is a valid Json file! File Solutions\ContosoSecurityAlerts\Package\mainTemplate.json is a valid Json file! File Solutions\ContosoSecurityAlerts\Package\testParameters.json is a valid Json file!Pakkaus onnistui, jos näet kolme kelvollista tiedostoa vahvistavaa JSON-vahvistusviestiä. Voit ohittaa
arm-ttkvirheen CCF Push -liittimien kohdalla.Lisätietoja on Azure-Sentinel Solutions Tools -dokumentaatiossa.
Ratkaisupaketin käyttöönotto
Ota luotu ARM-malli (Package/mainTemplate.json) käyttöön Azure-tilauksessasi.
- Tee Azure-portaali hakusanalla Ota käyttöön mukautettu malli
- Valitse Luo oma mallisi editorissa
- Valitse Lataa tiedosto ja valitse
Package/mainTemplate.jsonkohdekansiosta - Valitse Tallenna
- Täytä käyttöönottoparametrit:
- Tilaus: Azure-tilauksesi
- Resurssiryhmä: Sentinel työtilan sisältävä resurssiryhmä
- Alue: Sama alue kuin Sentinel työtilasi
- Työtilan: Log Analytics -työtilasi nimi
- Valitse Tarkista + Luo ja sitten Luo
Tämä käyttöönotto tuo liittimen käytettäväksi Microsoft Sentinel tietoyhdistimien valikoimassa.
Yksityiskohtaiset ohjeet ovat kohdassa [Pikaopas: ARM-mallien luominen ja käyttöönotto käyttämällä Azure-portaali](/azure/azure-resource-manager/templates/ quickstart-create-templates-use-the-portal).
Ota tietoyhdistin käyttöön
Kun olet ottanut ratkaisupaketin käyttöön, ota liitin käyttöön resurssien valmistelemiseksi ja tunnistetietojen luomiseksi.
- Siirry Azure-portaali Microsoft Sentinel-työtilaan
- Siirry kohtaanMääritystietoliittimet>
- Etsi ja valitse Contoso-suojausilmoitukset (Push)
- Valitse Avaa liitin -sivu
- Valitse Ota käyttöön Contoson suojausilmoitukset -liitinpainike
- Odota käyttöönoton valmistumista (luo mukautetun taulukon, DCR:n, DCE:n Entra sovelluksen tunnistetiedoilla)
- Kopioi näkyviin tulevat yhteyden tiedot:
- Vuokraajan tunnus
- Sovelluksen (asiakkaan) tunnus
- Asiakasohjelman salasana
- Tietojen keräämisen päätepisteen URI-tunnus
- Tiedonkeräyssäännön muuttumaton tunnus
- Stream nimi:
Custom-ContosoSecurityAlerts
Sovelluksen määrittäminen
Päivitä sovelluskoodisi tunnistetiedoilla ja resurssitiedoilla vaiheesta 10. Koodi käyttää OAuth 2.0 -asiakkaan tunnistetietojen kulkua todentamiseen Azure Monitorin avulla.
Varoitus
Suojaa tunnistetietosi: Älä koskaan koodata tunnistetietoja (vuokraajatunnus, sovellustunnus, asiakassalaisuus) suoraan sovelluskoodissasi tai vahvista niitä lähteenhallintaan. Käytä suojattuja tunnistetietojen tallennusratkaisuja, kuten:
- Azure Key Vault tuotantosovelluksille
- Ympäristömuuttujat tai määritystiedostot (eivät kuulu lähteenhallintaan)
- Tarvittaessa hallitut käyttäjätiedot
- Salaisten koodien hallintatyökalut, jotka salaavat lepäävät tunnistetiedot
Python-esimerkkisovelluksen koodi:
Seuraavassa esimerkissä käytetään paikkamerkkiarvoja, kuten <Your-Tenant-ID>. Korvaa nämä arvot turvallisilla viittauksilla todellisiin tunnistetietoihisi.
import requests import json from datetime import datetime, timezone # Connection details from Step 11 tenant_id = "<Your-Tenant-ID>" app_id = "<Your-Application-ID>" app_secret = "<Your-Client-Secret>" dce_uri = "<Your-DCE-URI>" dcr_immutable_id = "<Your-DCR-Immutable-ID>" stream_name = "Custom-ContosoSecurityAlerts" **Get OAuth token** token_url = f"https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token" token_data = { "client_id": app_id, "scope": "https://monitor.azure.com//.default", "client_secret": app_secret, "grant_type": "client_credentials" } token_response = requests.post(token_url, data=token_data) access_token = token_response.json()["access_token"] # Create event matching your table schema event = [{ "TimeGenerated": datetime.now(timezone.utc).isoformat(), "EventSeverity": "Medium", "EventType": "LoginAlert", "UserName": "alice@contoso.com", "SourceIP": "192.168.1.100", "DeviceId": "device-12345", "AlertMessage": "Multiple failed login attempts detected" }] # Send to Sentinel headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/json" } upload_url = f"{dce_uri}/dataCollectionRules/{dcr_immutable_id}/streams/{stream_name}?api-version=2023-01-01" response = requests.post(upload_url, headers=headers, json=event) print(f"Status: {response.status_code}") print("Security alert sent to Sentinel!")Kyselyn tekeminen tiedoista
Kun ilmoitukset on lähetetty, tee kysely Sentinel. Ensimmäinen käsittely 5–10 minuuttia.
// View all recent alerts ContosoSecurityAlerts_CL | where TimeGenerated > ago(1h) | order by TimeGenerated desc // High severity alerts ContosoSecurityAlerts_CL | where EventSeverity == "High" | project TimeGenerated, EventType, UserName, SourceIP, AlertMessage // Alert summary by severity ContosoSecurityAlerts_CL | where TimeGenerated > ago(7d) | summarize Count=count() by EventSeverity
Seuraavat vaiheet
Nyt kun ymmärrät CCF Push -yhdistimet, toimi seuraavasti:
- Suunnittele tietorakenne – Tunnista lähetettävät tapahtumat ja niiden kentät.
- Liittimen artefaktien luominen : luo neljä JSON-tiedostoa (taulukko, DCR, liittimen määritys, tietoliitin).
- Järjestä ratkaisun rakenne : määritä data/ ja tietoyhdistimet/ kansiot asianmukaisella nimeämisellä.
-
Pakkaa ratkaisusi – Käytä
createSolutionV3.ps1käyttöönottomallien luomiseen. - Käyttöönotto ja testaus– Ota käyttöön Sentinel työtilassa ja vahvista tiedonkulku.
- Integrointi sovellukseen – Lisää koodi, jos haluat lähettää tapahtumia reaaliaikaisesti.
- Luo ilmoituksia ja työkirjoja – Käytä tietoja suojauksen valvontaan.
Lisäresurssit
CCF-dokumentaatio
- Koodittoman liittimen (CCF Pull) luominen – kyselypohjaiset liittimet.
- Tietoyhdistimen määritysten ohjelmointirajapinnan viittaus – käyttöliittymän määritysopas.
- Tietoyhdistimen yhteyssääntöjen viitetiedot – kyselyliitinten yhteyssäännöt.
Azure Valvonta ja tiedonkeruu
- Azure Valvoa lokien käsittely -ohjelmointirajapintaa ( Core API) tietojen lähettämistä varten.
- Azure Monitor – Tietoja dcr-toiminnoista.
- Tiedonkeräyssäännön rakenne – DCR-rakenteen tiedot.
- Tietojen keräämisen päätepisteet Azure Monitor – DCE -määrityksessä.
- Opetusohjelma: Tietojen lähettäminen Azure valvontalokeihin Lokien käsittely -ohjelmointirajapinnan avulla – Vaiheittainen opetusohjelma.
- Luo mukautettu taulukko – Mukautetun taulukon luomisen opas.
Todentaminen ja suojaus
- OAuth 2.0 -asiakkaan tunnistetietojen kulku – Miten sovellusten välinen todennus toimii.
- Microsoftin käyttäjätietoympäristö käyttöoikeustietueita – Tietoja OAuth-tunnuksista.
- Rekisteröi sovellus Microsoft Entra ID – Miten sovellus rekisteröidään Microsoft Entra ID.
- Sovellusten Azure AD rekisteröinnin parhaat käytännöt – Entra sovelluksen suojaukseen.
- Määritä Azure roolit Azure Resource Manager (ARM) -mallien avulla – Määritä rooleja mallien avulla.
- ARM-mallin suojaussuositukset – Käyttöönottomallien suojaaminen.
- Azure Valvo palvelurajoituksia – Hintarajoitukset ja kiintiöt.
Microsoft Sentinel
- Tietoja Microsoft Sentinel ratkaisuista : paketointiliittimet ratkaisuina.
- Valvo tietoliittimien kuntoa – kunnon valvonta.
- ARM-malliviittaus tietoyhdistimille – täydellinen ohjelmointirajapintaviittaus.
Ohjeiden hakeminen
- Jos ISV-kumppanit rakentavat integrointeja, ota yhteyttä: azuresentinelpartner@microsoft.com
- Jos sinulla on teknisiä kysymyksiä, käytä Microsoft Q&A :ta tunnisteella "azure-sentinel".