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.
Architektura CCF (Codeless Connector Framework) poskytuje partnerům, pokročilým uživatelům a vývojářům možnost vytvářet vlastní konektory pro příjem dat do Služby Microsoft Sentinel.
Konektory vytvořené pomocí CCF jsou plně SaaS bez požadavků na instalace služeb. Zahrnují také monitorování stavu a plnou podporu z Microsoft Sentinelu.
Pomocí následujícího postupu vytvořte konektor CCF a připojte zdroj dat ke službě Microsoft Sentinel.
- Sestavení datového konektoru
- Vytvoření šablony ARM
- Nasazení konektoru
- Připojte Microsoft Sentinel ke zdroji dat a začněte ingestovat data.
V tomto článku se dozvíte, jak provést jednotlivé kroky a poskytneme ukázkový konektor bez kódu, který sestavíme během postupu.
Pokud jste partner pro vývoj softwaru a potřebujete podporu k vytvoření datového konektoru CCF, požádejte o pomoc partnery AzureSentinelPartner@microsoft.com Microsoft Sentinelu.
Jak se tento CCF liší od předchozí verze?
Počáteční verze CCF byla oznámena v lednu 2022. Od té doby jsme vylepšili platformu a starší verze se už nedoporučuje. Tato nová verze CCF má následující klíčová vylepšení:
Lepší podpora pro různé typy ověřování a stránkování
Podporuje standardní pravidla shromažďování dat (DCR).
Části konfigurace uživatelského rozhraní a připojení konektoru bez kódu jsou teď oddělené. To umožňuje vytvářet konektory s více připojeními, která nebyla dříve možná.
Požadavky
Než začnete vytvářet konektor, porozumíte zdroji dat a tomu, jak se Microsoft Sentinel potřebuje připojit.
Koncový bod shromažďování dat (DCE)
DCE je požadavek na DCR. Při nasazení DCR v pracovním prostoru Log Analytics je vytvořeno pouze jedno DCE. Každý DCR nasazený pro pracovní prostor Microsoft Sentinelu používá stejný DCE. Další informace o tom, jak vytvořit jeden nebo jestli potřebujete nový, najdete v tématu Koncové body shromažďování dat ve službě Azure Monitor.
Schéma výstupních tabulek
Je důležité porozumět tvaru datového streamu a polím, která chcete zahrnout do výstupní tabulky. Odkazujte na dokumentaci ke zdroji dat nebo analyzujte dostatečné příklady výstupu.
Projděte si následující komponenty a ověřte jejich podporu v referenčních informacích k rozhraní API datového konektoru:
Struktura požadavků a odpovědí HTTP pro zdroj dat
Ověřování vyžadované zdrojem dat
Pokud například váš zdroj dat vyžaduje token podepsaný certifikátem, dokumentace k rozhraní API datového konektoru určuje, že se ověřování certifikátů nepodporuje.Možnosti stránkování zdroje dat
Testování rozhraní API
Doporučujeme otestovat komponenty pomocí nástroje pro testování rozhraní API, jako je jeden z následujících kroků:
- Visual Studio Code s rozšířením z Webu Visual Studio Marketplace
- PowerShell Invoke-RestMethod
- Microsoft Edge – nástroj konzoly sítě
- Bruno
- curl
Upozornění
V situacích, kdy máte citlivá data, jako jsou přihlašovací údaje, tajné kódy, přístupové tokeny, klíče rozhraní API a další podobné informace, nezapomeňte použít nástroj, který chrání vaše data pomocí potřebných funkcí zabezpečení, funguje offline nebo místně, nesynchronizuje vaše data do cloudu a nevyžaduje, abyste se přihlásili k online účtu. Tímto způsobem snížíte riziko zveřejnění citlivých dat veřejnosti.
Sestavení datového konektoru
Návod
Pokud jste nezávislý dodavatel softwaru (ISV) a potřebujete podporu při vytváření integrace Microsoft Sentinelu pomocí architektury konektoru Microsoft Sentinel Codeless, tým Microsoft App Assure vám může pomoct. Pokud chcete zapojit tým App Assure, pošlete e-mail na azuresentinelpartner@microsoft.comadresu .
K sestavení datového konektoru CCF jsou potřeba čtyři komponenty.
- Definice výstupní tabulky
- Pravidlo shromažďování dat (DCR)
- Uživatelské rozhraní datového konektoru
- Pravidla připojení datového konektoru
Každá komponenta obsahuje oddíl, který podrobně popisuje proces vytvoření a ověření. Vezměte JSON z každé komponenty k finálnímu balení šablony ARM.
Definice výstupní tabulky
Návod
Tento krok přeskočte, pokud se vaše data ingestují jenom do standardních tabulek Log Analytics. Mezi příklady standardních tabulek patří CommonSecurityLog a ASimDnsActivityLogs. Další informace o úplném seznamu podporovaných standardních datových typů najdete v tématu Podpora transformace dat pro vlastní datové konektory.
Pokud zdroj dat neodpovídá schématu standardní tabulky, máte dvě možnosti:
- Vytvoření vlastní tabulky pro všechna data
- Vytvoření vlastní tabulky pro některá data a rozdělení odpovídajících dat do standardní tabulky
Pomocí uživatelského rozhraní Log Analytics můžete použít jednoduchou metodu k vytvoření vlastní tabulky včetně DCR. Pokud vytvoříte vlastní tabulku pomocí rozhraní TABLE API nebo jiné programové metody, přidejte příponu _CL ručně do názvu tabulky. Další informace najdete v tématu Vytvoření vlastní tabulky.
Další informace o rozdělení dat na více než jednu tabulku najdete v ukázkových datech a ukázkové vlastní tabulce vytvořené pro tato data.
Pravidlo shromažďování dat
Pravidla shromažďování dat (DCR) definují proces shromažďování dat ve službě Azure Monitor. Pravidla shromažďování dat určují, jaká data se mají shromažďovat, jak tato data transformovat a kam se mají tato data odesílat.
- Na datový konektor se nasadí jenom jeden řadič domény.
- DCR musí mít odpovídající DCE ve stejném regionu.
- Po nasazení datového konektoru CCF se řadič domény vytvoří, pokud ještě neexistuje.
Nejnovější informace o dcR najdete v těchto článcích:
Kurz demonstrující vytvoření DCE, včetně použití ukázkových dat k vytvoření vlastní tabulky a DCR, najdete v kurzu: Odeslání dat do protokolů služby Azure Monitor pomocí rozhraní API pro příjem protokolů (Azure Portal). Použijte proces uvedený v tomto kurzu k ověření, zda se data správně nahrála do vaší tabulky pomocí DCR.
Pokud chcete zjistit, jak vytvořit komplexní DCR s více toky dat, přečtěte si ukázkovou část DCR.
Uživatelské rozhraní datového konektoru
Tato komponenta vykreslí uživatelské rozhraní datového konektoru v galerii datových konektorů Microsoft Sentinelu. Každý datový konektor může mít pouze jednu definici uživatelského rozhraní.
Sestavte uživatelské rozhraní datového konektoru pomocí API Data Connector Definition. Použijte referenci definic datového konektoru jako doplněk pro podrobnější vysvětlení prvků rozhraní API.
Poznámky:
- Vlastnost
kindkonektoru pro dotazování rozhraní API by měla být vždyCustomizable. - Vzhledem k tomu, že se jedná o konektor pro dotazování API, nastavte typ
connectivityCriterianahasDataConnectors -
instructionStepsPříklad obsahuje tlačítko typuConnectionToggleButton. Toto tlačítko pomáhá aktivovat nasazení pravidel datového konektoru na základě zadaných parametrů připojení.
Použijte testovací nástroj API k zavolání rozhraní API definic datových konektorů pro vytvoření uživatelského rozhraní datového konektoru, pro jeho ověření v galerii datových konektorů.
Pokud se chcete naučit z příkladu, podívejte se na ukázkovou část s definicemi datového konektoru.
Pravidla datového připojení
V současné době existují tři druhy pravidel datového připojení pro definování datového konektoru CCF.
-
RestApiPollerDruh umožňuje přizpůsobit stránkování, autorizaci a očekávanou datovou část požadavků a odpovědí pro váš zdroj dat. Další informace najdete v tématu Referenční informace k pravidlům připojení datového konektoru RestApiPoller. -
GCPDíky automatické konfiguraci stránkování a očekávaných datových částí pro zdroj dat Google Cloud Platform (GCP) můžete zkrátit dobu vývoje. Další informace najdete v referenčních informacích k pravidlům připojení datového konektoru GCP. -
StorageAccountBlobContainerTyp umožňuje importovat ze zdroje dat objektů Blob v Azure Storage. Další informace najdete v referenčních informacích k rozhraní API konektorů objektů blob služby Azure Storage.
Pomocí nástroje pro testování API zavolejte rozhraní API datového konektoru a vytvořte datový konektor, který kombinuje pravidla pro připojení a předchozí komponenty. Ověřte, že je konektor připojený v uživatelském rozhraní.
Zabezpečení důvěrného vstupu
Jakékoli ověřování, které datový konektor CCF používá, proveďte tyto kroky, abyste zajistili zabezpečení důvěrných informací. Cílem je předat přihlašovací údaje z šablony ARM do CCF, aniž by v historii nasazení zůstaly čitelné důvěrné objekty.
Vytvořit štítek
Definice datového konektoru vytvoří prvek uživatelského rozhraní, který zobrazí výzvu k zadání přihlašovacích údajů zabezpečení. Pokud se například váš datový konektor ověřuje u zdroje protokolů pomocí OAuth, obsahují pokyny v části definice datového konektoru typ OAuthForm. Tím se šablona ARM nastaví tak, aby se zobrazila výzva k zadání přihlašovacích údajů.
"instructions": [
{
"type": "OAuthForm",
"parameters": {
"UsernameLabel": "Username",
"PasswordLabel": "Password",
"connectButtonLabel": "Connect",
"disconnectButtonLabel": "Disconnect"
}
}
],
Ukládání důvěrných vstupů
Část šablony nasazení ARM poskytuje místo pro správce, který nasazuje datový konektor, aby zadal heslo. Slouží securestring k zachování důvěrných informací zabezpečených v objektu, který není po nasazení čitelný. Další informace najdete v tématu Doporučení zabezpečení pro parametry.
"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
}
}
Použití objektů securestring
CcF nakonec využívá objekty přihlašovacích údajů v části datového konektoru.
"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"
}
},
Poznámka:
Zvláštní syntaxe objektu "ClientSecret": "[[parameters('Password')]", přihlašovacích údajů není překlep!
Pokud chcete vytvořit šablonu nasazení, která také používá parametry, musíte tyto parametry v této části uvést s dodatečným počátečním znakem[. To umožňuje parametrům přiřadit hodnotu na základě interakce uživatele s konektorem.
Další informace naleznete v tématu Řídicí znaky ve výrazech šablony.
Vytvoření šablony nasazení
Šablonu Azure Resource Management (ARM) můžete ručně zabalit pomocí příkladů kódu šablony jako vodítko. Tyto ukázky kódu jsou rozdělené oddíly šablony ARM, které je nutné spojit dohromady.
Pokud vytváříte datový konektor CCF (Google Cloud Platform), zabalte šablonu nasazení pomocí ukázkové šablony GCP CCF. Informace o tom, jak vyplnit šablonu GCP CCF, najdete v referenčních informacích k pravidlům připojení datového konektoru GCP.
Kromě ukázkových šablon se publikovaná řešení dostupná v centru obsahu Microsoft Sentinel používají pro své datové konektory CCF. V následujících řešeních si projděte další příklady, jak spojit komponenty do šablony ARM.
RestApiPoller Příklady datových konektorů CCF
- Zabezpečení prohlížeče Ermes
- Palo Alto Prisma Cloud CWPP
- Sophos Endpoint Protection
- Pracovní den
- Atlassian Jira
- Jednotné přihlašování Okta
GCP Příklady datových konektorů CCF
Nasazení konektoru
Nasaďte konektor bez kódu jako vlastní šablonu.
Návod
Odstraňte prostředky, které jste vytvořili v předchozích krocích. DCR a vlastní tabulka jsou vytvořeny s nasazením. Pokud tyto prostředky před nasazením neodeberete, je obtížnější šablonu ověřit.
- Zkopírujte obsah šablony nasazení ARM.
- Postupujte podle pokynů k úpravám a nasazení šablony z článku Rychlý start: Vytvoření a nasazení šablon ARM pomocí webu Azure Portal.
Udržujte izolaci sítě pro zdroj protokolování
Pokud zdroj protokolování vyžaduje izolaci sítě, nakonfigurujte seznam povolených veřejných IP adres používaných ccF.
Virtuální sítě Azure používají značky služeb k definování řízení přístupu k síti. Pro CCF je tato značka služby Scuba.
Aktuální rozsah IP adres přidružený ke značce Potápění najdete v tématu Použití rozhraní API zjišťování značek služeb.
Ověření konektoru bez kódu
Zobrazte konektor bez kódu v galerii datových konektorů. Otevřete datový konektor a vyplňte všechny parametry ověřování potřebné pro připojení. Po úspěšném připojení se vytvoří DCR a vlastní tabulky. Zobrazte si prostředek DCR ve vaší skupině prostředků a všechny vlastní tabulky z pracovního prostoru pro analýzu protokolů.
Poznámka:
Než se data začnou přijímat, může to trvat až 30 minut.
Příklad
Každý krok při sestavování konektoru bez kódu je znázorněn v následujících ukázkových částech.
- Ukázková data
- Příklad vlastní tabulky
- Příklad pravidla shromažďování dat
- Příklad definice uživatelského rozhraní datového konektoru
- Příklady pravidel datového připojení
- Použití ukázkových dat s ukázkovou šablonou
Abychom si ukázali složitý zdroj dat s příjmem dat do více než jedné tabulky, tento příklad obsahuje schéma výstupní tabulky a DCR s více výstupními streamy. Příklad DCR je spojuje spolu s transformacemi KQL. Příklady definic uživatelského rozhraní datového konektoru a pravidel připojení pokračují ze stejného ukázkového zdroje dat. Nakonec šablona řešení používá všechny tyto ukázkové komponenty k zobrazení kompletního způsobu vytvoření ukázkového datového konektoru CCF.
Příklad dat
Zdroj dat vrátí následující JSON při připojování ke svému koncovému bodu.
[
{
"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"
}
]
Tato odpověď obsahuje eventTypeUpozornění a soubor. Události souboru se mají ingestovat do normalizované standardní tabulky AsimFileEventLogs, zatímco události upozornění se mají ingestovat do vlastní tabulky.
Příklad vlastní tabulky
Další informace o struktuře této tabulky najdete v tématu Rozhraní API pro tabulky. Názvy vlastních tabulek protokolů by měly mít příponu _CL .
{
"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"
}
]
}
}
}
Příklad pravidla shromažďování dat
Následující DCR definuje jeden proud Custom-ExampleConnectorInput pomocí ukázkového zdroje dat a transformuje výstup do dvou tabulek.
- První tok dat směruje
eventType= výstrahu na vlastníExampleConnectorAlerts_CLtabulku. - druhý tok dat směruje
eventType= soubor do normalizované standardní tabulky.ASimFileEventLogs
Další informace o struktuře tohoto příkladu naleznete v tématu Struktura pravidla shromažďování dat.
Pokud chcete v testovacím prostředí vytvořit toto DCR, postupujte podle rozhraní API pravidel shromažďování dat. Prvky příkladu v {{double curly braces}} indikují proměnné, které vyžadují hodnoty pro snadné použití s testovacím nástrojem rozhraní API. Při vytváření tohoto prostředku v šabloně ARM se proměnné vyjádřené zde vyměňují za parametry.
{
"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"
}
]
}
}
Příklad definice uživatelského rozhraní datového konektoru
Tento příklad se nachází v referenčních informacích o definicích datového konektoru.
Příklad pravidel připojení datového konektoru
Tento příklad se nachází v referenčních informacích k datovým konektorům.
Příklad šablony ARM
Sestavte šablonu nasazení ARM s následující strukturou, která obsahuje 4 části komponent JSON potřebné k sestavení datového konektoru CCF:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"resources": [],
}
Spojte jednotlivé části pomocí editoru podporujícího JSON, jako je Visual Studio Code, abyste minimalizovali chyby syntaxe, jako jsou čárky a zavírací závorky a kulaté závorky.
Pokud chcete vést proces vytváření šablon, komentáře se zobrazí v metadatechdescription nebo jako inline komentáře se zápisem //. Další informace najdete v tématu Osvědčené postupy pro šablony ARM – komentáře.
Zvažte použití testovací sady nástrojů pro šablony ARM (arm-ttk) k ověření šablony, kterou vytváříte. Další informace najdete v tématu arm-ttk.
Příklad šablony ARM – parametry
Další informace najdete v tématu Parametry v šablonách ARM.
Upozornění
Používejte securestring pro všechna hesla a tajné kódy v objektech čitelných po nasazení prostředků.
Další informace najdete v tématu Zabezpečení důvěrných vstupů a doporučení zabezpečení pro parametry.
{
"$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
}
Příklad šablony ARM – proměnné
Tyto doporučené proměnné pomáhají šablonu zjednodušit. Podle potřeby použijte více nebo méně. Další informace najdete v tématu Proměnné v šablonách ARM.
"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
Příklad šablony ARM – prostředky
V této příručce šablony je 5 prostředků nasazení ARM, které obsahují 4 komponenty sestavení datového konektoru CCF.
- contentTemplates (nadřazený prostředek)
- dataConnectorDefinitions – Další informace najdete v tématu o uživatelském rozhraní datového konektoru.
- metadata
-
contentTemplates
- metadata
- RestApiPoller – Další informace najdete v tématu Pravidla datového připojení.
- 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!
]
}
Související obsah
Další informace najdete v
- Informace o řešeních Microsoft Sentinel
- Referenční informace k šabloně ARM datového konektoru