Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tato příručka vám pomůže pochopit, sestavit a nasadit konektory bez kódu založené na push modelu pro Microsoft Sentinel pomocí architektury Codeless Connector Framework (CCF) Push (náhled).
Co je CCF push?
Konektory CCF Push umožňují aplikacím odesílat události zabezpečení přímo do Microsoft Sentinelu v reálném čase. Na rozdíl od tradičních konektorů založených na dotazování, které pravidelně načítají data z rozhraní API, umožňují nabízené konektory odesílat data do služby Sentinel, když se v systému vyskytují události.
CcF Push nabízí několik klíčových výhod:
- Tok dat řízený aplikací: Vaše aplikace řídí, kdy a jak odesílat data, což umožňuje inteligentní strategie dávkování a optimalizované využití sítě.
- Příjem dat v reálném čase: Okamžitě odesílejte data, jakmile dojde k událostem, aniž byste čekali na intervaly dotazování.
- Zjednodušená architektura: Není potřeba udržovat koncové body rozhraní API pro dotazování systémem Sentinel.
- Zřizování založené na šablonách: Nasazení vytvoří šablony ARM pro řadiče domény, vlastní tabulky, registraci aplikace Entra a tajné kódy klienta – obdržíte podrobnosti o připojení ke konfiguraci v odesílající aplikaci.
- Zabezpečené ověřování: Používá aplikace Microsoft Entra s OAuth 2.0 k zabezpečenému odesílání dat.
Předpoklady
- Než začnete, musíte mít přístup k úložišti Azure-Sentinel GitHubu pro nástroje pro balení.
- Oprávnění Microsoft Entra:
- Oprávnění k vytvoření registrace aplikace v Microsoft Entra ID. Obvykle vyžaduje roli Vývojář aplikací v Entra ID nebo vyšší roli.
- Oprávnění k vytvoření aplikace s tajnými kódy Pokud toto oprávnění neudělíte, konektor selže z bezpečnostních důvodů.
- Vydavatel musí mít odpovídající roli pro načtení tokenů z aplikace Microsoft Entra. Tyto tokeny se vyžadují pro ověřování požadavků do koncového bodu shromažďování dat (DCE), což je koncový bod, ve kterém konektor nakonec odešle data. Pokud poskytovatel nemůže načíst tokeny, data se nedají odeslat do DCE.
- Oprávnění Microsoft Azure:
- Oprávnění k přiřazení role vydavatele monitorovacích metrik u pravidla shromažďování dat (DCR). Obvykle vyžaduje Azure roli vlastníka RBAC nebo správce uživatelských přístupů.
Jak funguje push CCF
Model push vs. pull model
Pochopení rozdílu mezi modely příjmu dat push a pull vám pomůže zvolit správný typ konektoru pro váš scénář.
Tahové konektory CCF – na bázi dotazování:
V modelu vyžádání změn Microsoft Sentinel pravidelně dotazuje vaše rozhraní API, aby načítala data:
- Microsoft Sentinel inicializuje připojení k rozhraní API zdroje dat podle nakonfigurovaného plánu.
- Data přicházejí v pravidelných intervalech dotazování, například každých pět minut.
- Musíte udržovat veřejně přístupný koncový bod rozhraní API.
- Infrastruktura dotazování sentinelu spravuje proces shromažďování dat.
Tlačné konektory CCF - Řízené událostmi:
V modelu nabízených oznámení vaše aplikace odesílá data přímo do Microsoft Sentinelu:
- Aplikace zahájí odesílání dat, když dojde k událostem.
- Data přicházejí téměř v reálném čase, protože se generují události.
- Nemusíte udržovat koncový bod rozhraní API.
- Vaše aplikace řídí dávkování, časování a tok dat.
Tok nabízených dat
Tok push dat CCF se skládá z pěti hlavních kroků:
Konektor nasadíte v Microsoft Sentinelu.
Azure automaticky vytvoří následující prostředky:
- Aplikace Microsoft Entra s přihlašovacími údaji
- Pravidlo shromažďování dat (DCR) – definuje, jak zpracovávat data.
- Koncový bod shromažďování dat (DCE) – adresa URL, kam odesíláte data
- Vlastní tabulka protokolů – kde se ukládají vaše data
- Přiřazení rolí – oprávnění pro aplikaci Entra
Zobrazí se následující podrobnosti o připojení:
- Identifikátor nájemce
- ID aplikace (klienta)
- Tajný klíč klienta
- Identifikátor URI DCE (adresa URL koncového bodu)
- Neměnné ID DCR
- Název streamu
Vaše aplikace odešle následující data:
- Získání tokenu OAuth 2.0 pomocí přihlašovacích údajů aplikace Entra, které byly vygenerovány pomocí CCF. Další informace najdete v toku přihlašovacích údajů klienta OAuth 2.0.
- Formátuje události jako JSON odpovídající schématu tabulky.
- Postuje data do koncového bodu DCE
Procesy a ukládání dat v Azure:
- DcRs transformuje data (volitelné transformace KQL)
- Data se zapisuje do vlastní tabulky v Log Analytics.
- Data jsou k dispozici pro dotazy, analýzy a výstrahy ve službě Sentinel.
Artefakty nabízených oznámení CCF
Řešení konektoru CCF Push se skládá ze čtyř hlavních komponent:
- Definice vlastní tabulky
- Pravidlo shromažďování dat (DCR)
- Definice konektoru (UI)
- Konfigurace Push konektoru
Definice vlastní tabulky
Co je to: Schéma, které definuje strukturu vašich dat v Log Analytics.
Klíčové požadavky:
- Název tabulky musí končit
_CL(vlastní přípona protokolu). - Musí obsahovat
TimeGeneratedsloupec (typ datetime). - Typy sloupců: řetězec, int, long, real, bool, datetime, dynamic, guid.
- Použijte verzi
2025-07-01rozhraní API nebo novější. - Další informace najdete v části Vytvoření vlastní tabulky v protokolech služby Azure Monitor.
Example:
{
"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"
}
]
}
}
}
Pravidlo shromažďování dat (DCR)
Co je to: Definuje, jak Azure Monitor ingestuje a zpracovává vaše data. Další informace najdete v tématu Pravidla shromažďování dat ve službě Azure Monitor.
Co to dělá:
- Určuje název vstupního datového proudu (co vaše aplikace používá při odesílání dat).
- Definuje volitelné transformace KQL pro tvarování a rozšiřování dat.
- Směruje data do cílové tabulky.
- Odkazy na koncový bod shromažďování dat (DCE)
Klíčové komponenty:
-
streamDeclarations: Definuje strukturu příchozích dat (musí odpovídat tomu, co vaše aplikace odesílá). -
destinations: Kam data přejdou (váš pracovní prostor služby Log Analytics) -
dataFlows: Kanál transformace ze vstupního datového proudu do výstupní tabulky -
dataCollectionEndpointId: Odkazy na DCE pro příjem dat
Example:
{
"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'))]"
}
}
Important
- Název datového proudu musí začínat předponou
Custom-. -
transformKqlmůže být jednoduše"source"pro průchozí režim nebo zahrnovat logiku KQL pro transformaci dat. -
outputStreammusí odpovídat názvu tabulky sCustom-předponou a_CLpříponou.
Definice konektoru (UI)
Definice konektoru určuje, jak se konektor zobrazí v galerii datových konektorů Microsoft Sentinelu. Další informace najdete v tématu Referenční informace k rozhraní API pro definice datových konektorů.
Definice konektoru zahrnuje:
- Název, popis a značka konektoru
- Požadované předpoklady a oprávnění, například přístup k pracovnímu prostoru a oprávnění Entra
- Pokyny pro nasazení
- Ovládací prvky uživatelského rozhraní pro zobrazení podrobností o připojení uživatelům
Klíčové prvky uživatelského rozhraní:
-
DeployPushConnectorButton: Spouští automatizované nasazení prostředků -
CopyableLabel: Zobrazí podrobnosti o připojení po nasazení (používáfillWithparametr). -
Markdown: Poskytuje formátované pokyny a kontext. -
IsConnectedQuery: Ověřuje připojení konektoru na základě nedávných dat.
Příklad struktury (zkrácená pro přehlednost):
{
"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"
}
}
]
}
]
}
}
}
Important
- Hodnota
idinconnectorUiConfigmusí být jedinečná a musí odpovídat odkazům v konfiguraci datového konektoru. - Slouží
IsConnectedQuerypro produkční konektory (ověřuje nedávná data) nebohasDataConnectorspro jednodušší ověřování. - Parametry v
fillWithjsou vCopyableLabelpo nasazení vyplněny automaticky. - Pevné hodnoty, jako je název datového proudu, používají parametr
valuemístofillWith.
Konfigurace push konektoru
Konfigurace push konektoru je instance datového konektoru, která propojuje definici konektoru s nasazenými prostředky.
Konfigurace push konektoru
- Připojuje definici konektoru (UI) k nasazenému DCR a aplikaci Entra.
- Ukládá podrobnosti o ověřování (ID aplikace, ID hlavního objektu služby)
- Zaznamenává konfiguraci DCR (koncový bod, neměnné ID, název streamu)
- Umožňuje uživatelskému rozhraní načíst a zobrazit podrobnosti o připojení uživatelům.
Vlastnosti klíče:
-
connectorDefinitionName: Musí odpovídat definici konektoruid. -
dcrConfig: Obsahuje koncový bod DCR, ID pravidla a název datového proudu. -
auth: Obsahuje ID aplikace Entra a ID služebního principálu. -
kind: Pro push konektory musí být hodnota "Push".
Příklad:
{
"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'))]"
}
}
Important
- Musí
connectorDefinitionNamepřesně odpovídat definici konektoruid. -
streamNamemusí odpovídat proudu deklarovanému ve vašem DCR. - Tento prostředek se automaticky vytvoří během nasazení, když uživatelé vyberou tlačítko DeployPushConnector .
Sestavení prvního konektoru push
V tomto příkladu vytvoříte jednoduchý push konektor, který odesílá výstrahy zabezpečení z vaší aplikace do Sentinel.
Cílem: Odesílání výstrah zabezpečení z aplikace do Služby Sentinel v reálném čase
Vaše aplikace odešle strukturu událostí:
{
"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"
}
Krok za krokem průvodce vytvořením push konektoru
Klonování úložiště Azure-Sentinel
Fork pak naklonujte oficiální úložiště Azure-Sentinel do místního počítače. Toto úložiště obsahuje nástroje pro balení a poskytuje standardní strukturu řešení.
Klonování úložiště
git clone https://github.com/<YOUR_FORK>/Azure-Sentinel.gitPřejděte do adresáře řešení.
cd Azure-Sentinel/Solutions
Struktura úložiště zahrnuje:
- Nástroje/Create-Azure-Sentinel-Solution/V3/
- Obsahuje skript pro balení createSolutionV3.ps1.
- Řešení / Kde vytvoříte řešení konektoru
Vytvořte strukturu složek vašeho řešení vytvořením nového adresáře řešení ve složce Solutions/ podle standardní konvence pojmenování. Vytváření adresářů řešení (z Azure-Sentinelu, řešení/)
mkdir ContosoSecurityAlerts cd ContosoSecurityAlerts mkdir Data mkdir "Data Connectors" mkdir "Data Connectors/ContosoSecurityAlerts_ccf"Struktura složek vypadá takto:
Azure-Sentinel/
└-- Řešení/
└-- ContosoSecurityAlerts/
├-- Data/
└-- Datové konektory/
└-- ContosoSecurityAlerts_ccf/Definování tabulky
Ve složce ContosoSecurityAlerts_ccf vytvořte soubor s názvem table.json s vlastní definicí tabulky:
{ "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" } ] } } }Vytvoření DCR
Ve složce ContosoSecurityAlerts_ccf vytvořte soubor s názvem DCR.json, který definuje vstupní datový proud a směruje data do tabulky:
{ "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'))]" } }Vytvoření definice konektoru
Ve složce ContosoSecurityAlerts_ccf vytvořte soubor s názvem connectorDefinition.json, který definuje, jak uživatelé komunikují s konektorem ve službě 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" } } ] } ] } } }Vytvoření konfigurace datového konektoru
Ve složce ContosoSecurityAlerts_ccf vytvořte soubor s názvem dataConnector.json, který pro propojení definice konektoru s nasazenými prostředky:
{ "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": [ "$" ] } } }Vytváření souborů metadat řešení
Solution_ContosoSecurityAlerts.json Ve složce Data vytvořte
Solution_ContosoSecurityAlerts.jsonpodrobnosti o řešení:{ "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 }Important
Kritické požadavky na pole:
-
BasePath: Aktualizujte skutečnou místní cestu k úložišti Azure-Sentinel. -
Metadata: Musí odkazovat naSolutionMetadata.json(vytvořený v kroku 6B) -
Version: Sémantická správa verzí, například3.0.0 -
TemplateSpec: Vždytruepro řešení Centrálního úložiště obsahu -
Is1Pconnector: Nastavenífalsepro partnerské nebo vlastní konektory
-
Vytvoření SolutionMetadata.json v kořenovém adresáři řešení
Ve složce ContosoSecurityAlerts vytvořte SolutionMetadata.json v kořenovém adresáři řešení (stejná úroveň jako složka Data):
{ "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" } }Pro balení centra obsahu potřebujete soubor SolutionMetadata.json:
- Nástroj pro balení očekává tento soubor v kořenovém adresáři řešení.
- Obsahuje metadata tržiště pro distribuci Content Hubu.
Vytvoření ReleaseNotes.md v kořenovém adresáři řešení
Verze Datum změny (DD-MM-YYYY) Historie změn 3.0.0 DD-MM-YYYY Ukázkové řešení
Kontrolní seznam pro ověření
Než budete pokračovat k dalšímu kroku, ověřte:
- Název složky neobsahuje mezery, například
ContosoSecurityAlerts -
Namepole v Solution_ContosoSecurityAlerts.json přesně odpovídá názvu složky. -
SolutionMetadata.jsonexistuje v kořenovém adresáři řešení (ne ve složce Data) -
BasePathodkazuje na vaši skutečnou místní cestu k úložišti Azure-Sentinel -
Metadataodkazy na pole "SolutionMetadata.json" -
publisherIdaofferIdse shodují mezi oběma soubory
Ověření struktury řešení
Ověřte, že struktura složek odpovídá požadovanému rozložení se všemi soubory na místě:
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 6Zabalte své řešení
Pomocí nástroje pro balení createSolutionV3.ps1 vygenerujte šablonu nasazení ARM.
# 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.ps1Skript automaticky:
- Ověří strukturu dat nebo složek.
- Procesy artefaktu konektoru
Očekávaný výstup:
Skript balení ukazuje neúspěšnou validaci arm-ttk (Sada nástrojů šablon Azure Resource Manageru). Toto selhání je očekávané a normální pro konektory CCF Push:
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!Balení proběhlo úspěšně, pokud se zobrazí tři ověřovací zprávy JSON potvrzující platné soubory. Ignorujte selhání
arm-ttkkonektorů CCF Push.Další informace najdete v dokumentaci k nástrojům řešení Azure-Sentinel.
Nasazení balíčku řešení
Nasaďte vygenerovanou šablonu ARM (Package/mainTemplate.json) do svého předplatného Azure.
- Na portálu Azure vyhledejte Nasazení vlastní šablony.
- V editoru vyberte Vytvořit vlastní šablonu.
- Vyberte Načíst soubor a vyberte
Package/mainTemplate.jsonz výstupní složky. - Zvolte Uložit.
- Vyplňte parametry nasazení:
- Předplatné: Vaše předplatné Azure
- Skupina prostředků: Skupina prostředků obsahující váš pracovní prostor služby Sentinel
- Oblasti: Stejná oblast jako pracovní prostor služby Sentinel
- Pracovní prostor: Název vašeho pracovního prostoru Log Analytics
- Vyberte Zkontrolovat a vytvořit a potom Vytvořit.
Toto nasazení zpřístupní konektor v galerii datových konektorů Microsoft Sentinelu.
Podrobný postup najdete v tématu [Rychlý start: Vytvoření a nasazení šablon ARM pomocí webu Azure Portal](/azure/azure-resource-manager/templates/ quickstart-create-templates-use-the-portal).
Povolení datového konektoru
Po nasazení balíčku řešení povolte konektor pro zřízení prostředků a generování přihlašovacích údajů.
- Na webu Azure Portal přejděte do svého pracovního prostoru Služby Microsoft Sentinel.
- Přejít na Konfigurace>Datové konektory
- Vyhledejte a vyberte Contoso Security Alerts (Push)
- Vyberte otevřít stránku konektoru
- Vyberte tlačítko Nasadit konektor pro výstrahy zabezpečení společnosti Contoso.
- Počkejte na dokončení nasazení (vytvoří vlastní tabulku, DCR, DCE, aplikaci Entra s přihlašovacími údaji).
- Zkopírujte podrobnosti o připojení, které se zobrazí:
- Identifikátor nájemce
- ID aplikace (klienta)
- Tajný klíč klienta
- Identifikátor URI koncového bodu shromažďování dat
- Neměnné ID pravidla pro shromažďování dat
- Název streamu:
Custom-ContosoSecurityAlerts
Konfigurace aplikace
Upravte kód aplikace pomocí přihlašovacích údajů a podrobností o zdroji z Kroku 10. Tento kód používá tok přihlašovacích údajů klienta OAuth 2.0 k ověření ve službě Azure Monitor.
Caution
Ochrana přihlašovacích údajů: Nikdy nezakódujte přihlašovací údaje (ID tenanta, ID aplikace, tajný klíč klienta) přímo v kódu aplikace nebo je potvrďte do správy zdrojového kódu. Použijte řešení zabezpečeného úložiště přihlašovacích údajů, například:
- Azure Key Vault pro produkční aplikace
- Proměnné prostředí nebo konfigurační soubory (vyloučené ze správy zdrojového kódu)
- Spravované identity tam, kde je to možné
- Nástroje pro správu tajemství, které šifrují pověření uložená v neaktivním stavu.
Ukázkový kód aplikace v Pythonu:
Následující příklad používá zástupné hodnoty, jako je <Your-Tenant-ID>. Tyto hodnoty nahraďte zabezpečenými odkazy na vaše skutečné přihlašovací údaje.
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!")Dotazujte se na data
Po odeslání výstrah odešlete dotaz ve službě Sentinel. Počkejte 5 až 10 minut na první přijetí.
// 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
Související obsah
Teď, když rozumíte konektorům CCF Push, proveďte následující kroky:
- Navrhněte schéma dat – Identifikujte události, které chcete odeslat, a jejich pole.
- Vytvoření artefaktů konektoru – sestavte čtyři soubory JSON (tabulka, DCR, definice konektoru, datový konektor).
- Uspořádání struktury řešení – Nastavte složky Data/ a Data Connectors/ se správnými názvy.
-
Zabalení řešení – slouží
createSolutionV3.ps1ke generování šablon nasazení. - Nasazení a testování – Nasazení do pracovního prostoru služby Sentinel a ověření toku dat
- Integrace s vaší aplikací – Přidejte kód pro odesílání událostí v reálném čase.
- Vytvářejte výstrahy a sešity – používejte data k monitorování zabezpečení.
Dodatečné zdroje
dokumentace CCF
- Vytvoření konektoru bez kódu (CCF Pull) – konektory založené na dotazování
- Referenční informace k rozhraní API pro definice datových konektorů – průvodce konfigurací uživatelského rozhraní
- Referenční pravidla k pravidlům připojení datového konektoru – pravidla připojení pro dotazovací konektory.
Azure Monitor a shromažďování dat
- Rozhraní API pro příjem protokolů služby Azure Monitor – základní rozhraní API pro odesílání dat
- Pravidla shromažďování dat ve službě Azure Monitor – Principy pravidel sběru dat
- Struktura pravidla shromažďování dat – podrobnosti struktury DCR
- Koncové body shromažďování dat ve službě Azure Monitor – konfigurace DCE
- Kurz: Odesílání dat do protokolů služby Azure Monitor pomocí rozhraní API pro příjem protokolů – podrobný kurz
- Vytvoření vlastní tabulky – průvodce vytvořením vlastní tabulky
Ověřování a zabezpečení
- Tok přihlašovacích údajů klienta OAuth 2.0 – Jak funguje ověřování z aplikace na službu.
- Přístupové tokeny platformy Microsoft Identity Platform – Principy tokenů OAuth
- Registrace aplikace v Microsoft Entra ID - Jak zaregistrovat aplikaci v Microsoft Entra ID.
- Osvědčené postupy pro registraci aplikací Azure AD – Zabezpečení aplikací Entra
- Přiřazení rolí Azure pomocí šablon Azure Resource Manageru (ARM) – Přiřaďte role pomocí šablon.
- Doporučení k zabezpečení šablon ARM – Zabezpečení šablon nasazení
- Limity služby Azure Monitor – Omezení rychlosti a kvóty
Microsoft Sentinel
- Informace o řešeních Microsoft Sentinel – Balení konektorů jako řešení
- Sledujte stav svých datových konektorů
- Referenční informace k šablonám ARM pro datové konektory – Kompletní referenční informace k rozhraní API
Získání pomoci
- V případě partnerů nezávislých výrobců softwaru vytvářejících integrace kontaktujte: azuresentinelpartner@microsoft.com
- V případě technických otázek použijte Microsoft Q&A se značkou azure-sentinel.