Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu kılavuz, Kodsuz Bağlayıcı Çerçevesi (CCF) Anında İletme (önizleme) kullanarak Microsoft Sentinel için anında iletme tabanlı kodsuz bağlayıcıları anlamanıza, oluşturmanıza ve dağıtmanıza yardımcı olur.
CCF itme nedir?
CCF Anında İletme bağlayıcıları, uygulamalarınızın gerçek zamanlı olarak güvenlik olaylarını doğrudan Microsoft Sentinel'e göndermesini sağlar. API'lerden düzenli aralıklarla veri getiren geleneksel yoklama tabanlı bağlayıcıların aksine, gönderme bağlayıcıları sisteminizde olaylar oluştuğunda verileri Sentinel'e göndermenize olanak sağlar.
CCF Push Bildirimi birkaç temel avantaj sağlar.
- Uygulama denetimli veri akışı: Uygulamanız veri gönderme zamanlarını ve nasıl yapılacağını denetler ve akıllı toplu işlem stratejilerine ve iyileştirilmiş ağ kullanımına olanak tanır.
- Gerçek zamanlı alım: Yoklama aralıklarını beklemeden, olaylar gerçekleştiğinde verileri hemen gönderin.
- Basitleştirilmiş mimari: Sentinel'in yoklaması için API uç noktalarının korunması gerekmez.
- Şablon tabanlı sağlama: Dağıtım; DCR'ler, özel tablolar, Entra uygulama kaydı ve istemci gizli dizileri için ARM şablonları oluşturur; gönderen uygulamanızda yapılandırabileceğiniz bağlantı ayrıntılarını alırsınız.
- Güvenli kimlik doğrulaması: Güvenli veri gönderimi için OAuth 2.0 ile Microsoft Entra uygulamalarını kullanır.
Prerequisites
- Başlamadan önce paketleme araçları için Azure-Sentinel GitHub deposuna erişiminiz olmalıdır.
- Microsoft Entra izinleri:
- Microsoft Entra Id'de uygulama kaydı oluşturma izni. Genellikle Entra ID Uygulama Geliştiricisi rolünü veya daha üstünü gerektirir.
- Gizli bilgilerle uygulama oluşturma izni. Bu izni vermezseniz, bağlayıcı güvenlik nedenlerinden dolayı başarısız olur.
- Yayımcı, Microsoft Entra uygulamasından belirteçleri almak için uygun role sahip olmalıdır. Bu belirteçler, bağlayıcının nihai olarak verilerini gönderdiği uç nokta olan Veri Toplama Uç Noktasına (DCE) yönelik isteklerin kimliğini doğrulamak için gereklidir. Sağlayıcı tarafından belirteçler alınamıyorsa, veriler DCE'ye gönderilemez.
- Microsoft Azure izinleri:
- Veri toplama kuralında (DCR) İzleme Ölçümleri Yayımcısı rolü atama izni. Genellikle Azure RBAC Sahibi veya Kullanıcı Erişimi Yöneticisi rolü gerektirir.
CCF itme nasıl çalışır?
İtme modeli ve çekme modeli
Gönderme ve çekme verileri alma modelleri arasındaki farkı anlamak, senaryonuz için doğru bağlayıcı türünü seçmenize yardımcı olur.
CCF çekme bağlayıcıları - Yoklama tabanlı:
Çekme modelinde, Microsoft Sentinel verileri almak için API'nizi düzenli aralıklarla sorgular.
- Microsoft Sentinel, yapılandırılmış bir zamanlamaya göre veri kaynağı API'nize bağlantılar başlatır.
- Veriler, her beş dakikada bir gibi düzenli yoklama aralıklarına ulaşır.
- Genel olarak erişilebilen bir API uç noktası tutmanız gerekir.
- Sentinel'in yoklama altyapısı, veri toplama işlemini yönetir.
CCF anında iletme bağlayıcıları - Olay temelli:
Gönderme modelinde uygulamanız verileri doğrudan Microsoft Sentinel'e gönderir:
- Uygulamanız, olaylar gerçekleştiğinde veri göndermeyi başlatır.
- Veriler, olaylar oluşturulduklarında neredeyse gerçek zamanlı olarak alınır.
- API uç noktasını korumanız gerekmez.
- Uygulamanız toplu işlemi, zamanlamayı ve veri akışı iyileştirmesini denetler.
Anında iletme veri akışı
CCF anında iletme veri akışı beş ana adımdan oluşur:
Bağlayıcıyı Microsoft Sentinel'de dağıtırsınız.
Azure otomatik olarak aşağıdaki kaynakları oluşturur:
- Kimlik bilgileriyle Microsoft Entra uygulaması
- Veri Toplama Kuralı (DCR) - verilerinizi işlemeyi tanımlar
- Veri Toplama Uç Noktası (DCE) - Verileri gönderdiğiniz URL
- Özel günlük tablosu - verilerinizin depolandığı yer
- Rol atamaları - Entra uygulaması için izinler
Aşağıdaki bağlantı ayrıntılarını alırsınız:
- Kiracı Kimliği
- Uygulama (İstemci) Kimliği
- İstemci Parolası
- DCE URI'si (uç nokta URL'si)
- DCR Sabit Kimliği
- Stream Adı
Uygulamanız aşağıdaki verileri gönderir:
- CCF tarafından oluşturulan Entra uygulaması kimlik bilgilerini kullanarak OAuth 2.0 belirtecini alır. Daha fazla bilgi için bkz . OAuth 2.0 istemci kimlik bilgileri akışı
- Olayları tablo şemanızla eşleşen JSON olarak biçimlendirin
- DCE uç noktasına POST eder veriyi
Azure verileri işler ve depolar:
- DCR'ler verileri dönüştürür (isteğe bağlı KQL dönüştürmeleri)
- Veriler Log Analytics'teki özel tabloya yazılır
- Veriler Sentinel'deki sorgular, analizler ve uyarılar için kullanılabilir
CCF artefaktlar gönderme
CCF Push bağlayıcı çözümü dört ana bileşenden oluşur:
- Özel tablo tanımı
- Veri toplama kuralı (DCR)
- Bağlayıcı tanımı (UI)
- Anında İletme Bağlayıcısı Yapılandırması
Özel tablo tanımı
Bu nedir: Log Analytics'te verilerinizin yapısını tanımlayan şema.
Önemli gereksinimler:
- Tablo adı,
_CL(özel günlük son eki) ile bitmelidir. - Bir
TimeGeneratedsütun (tarih saat türü) içermelidir. - Sütun türleri: string, int, long, real, bool, datetime, dynamic, guid.
- API'nin
2025-07-01veya daha üzeri bir sürümünü kullanın. - Daha fazla bilgi için bkz. Azure İzleyici Günlüklerinde özel tablo oluşturma.
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"
}
]
}
}
}
Veri toplama kuralı (DCR)
Bu nedir: Azure İzleyici'nin verilerinizi nasıl alıp işlediğini tanımlar. Daha fazla bilgi için bkz. Azure İzleyici'de veri toplama kuralları.
Ne yapar:
- Giriş akışı adını belirtir (uygulamanızın veri gönderirken kullandığı ad)
- Verileri şekillendirmek ve zenginleştirmek için isteğe bağlı KQL dönüşümlerini tanımlar
- Verileri hedef tabloya yönlendirir
- Veri Toplama Uç Noktasına (DCE) bağlantılar
Önemli bileşenler:
-
streamDeclarations: Gelen verilerin yapısını tanımlar (uygulamanızın gönderdiğiyle eşleşmelidir) -
destinations: Verilerin gittiği yer (Log Analytics çalışma alanınız) -
dataFlows: Giriş akışından çıkış tablosuna dönüştürme işlem hattı -
dataCollectionEndpointId: Veri alımı için DCE bağlantıları
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
- Akış adı ön ek ile
Custom-başlamalıdır. -
transformKqldoğrudan"source"geçiş için olabilir veya veri dönüştürme için KQL mantığını içerebilir. -
outputStreamtablonuzun adı,Custom-ön eki ve_CLson ekiyle eşleşmelidir.
Bağlayıcı tanımı (UI)
Bağlayıcı tanımı, bağlayıcının Microsoft Sentinel veri bağlayıcısı galerisinde nasıl görüneceğini denetler. Daha fazla bilgi için bkz. Veri Bağlayıcısı Tanımları API başvurusu.
Bağlayıcı tanımı şunları içerir:
- Bağlayıcı başlığı, açıklaması ve markası
- Çalışma alanı erişimi ve Entra izinleri gibi gerekli önkoşullar ve izinler
- Dağıtım için yönerge adımları
- Kullanıcılara bağlantı ayrıntılarını görüntülemek için kullanıcı arabirimi denetimleri
Anahtar kullanıcı arabirimi öğeleri:
-
DeployPushConnectorButton: Otomatik kaynak dağıtımlarını tetikler -
CopyableLabel: Dağıtımdan sonra bağlantı ayrıntılarını görüntüler (parametre kullanırfillWith) -
Markdown: Biçimlendirilmiş yönergeler ve bağlam sağlar -
IsConnectedQuery: Bağlayıcı bağlantısını son verilere göre doğrular
Örnek yapı (netlik için kısaltılır):
{
"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
-
idiçindekiconnectorUiConfigbenzersiz olmalı ve veri bağlayıcı yapılandırmasındaki başvurularla eşleşmelidir. -
IsConnectedQueryüretim bağlayıcıları (son verileri doğrulamak için) veyahasDataConnectorsdaha basit doğrulama için kullanın. - içindeki
fillWithCopyableLabelparametreler dağıtımdan sonra otomatik olarak doldurulur. - Akış adı gibi sabit değerler,
valueyerinefillWithparametresini kullanır.
Push bağlayıcı yapılandırması
Anında iletme bağlayıcısı yapılandırması, bağlayıcı tanımını dağıtılan kaynaklara bağlayan veri bağlayıcısı örneğidir.
İtmeli bağlayıcı yapılandırması
- Bağlayıcı tanımını (UI) dağıtılan DCR ve Entra uygulamasına bağlar
- Kimlik doğrulama ayrıntılarını (uygulama kimliği, hizmet sorumlusu kimliği) depolar
- DCR yapılandırmasını kaydeder (uç nokta, sabit kimlik, akış adı)
- Kullanıcı arabiriminin kullanıcılara bağlantı ayrıntılarını almasını ve görüntülemesini sağlar
Önemli özellikler:
-
connectorDefinitionName: Bağlayıcı tanımınızdaki ileideşleşmelidir -
dcrConfig: DCR uç noktasını, kural kimliğini ve akış adını içerir -
auth: Entra uygulama kimliğini ve hizmet sorumlusu kimliğini içerir -
kind: İtme bağlayıcıları için "İtme" olmalıdır
Örnek:
{
"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
- Bağlayıcı
connectorDefinitionName, tanımınidile tam olarak eşleşmelidir. - ,
streamNameDCR'nizde bildirilen akışla eşleşmelidir. - Bu kaynak, kullanıcılar DeployPushConnector düğmesini seçtiğinde dağıtım sırasında otomatik olarak oluşturulur.
İlk push bağlayıcınızı oluşturma
Bu örnekte, uygulamanızdan Sentinel'e güvenlik uyarıları gönderen basit bir anında iletme bağlayıcısı oluşturacaksınız.
Hedef: Uygulamanızdan Sentinel'e gerçek zamanlı olarak güvenlik uyarıları gönderme
Uygulamanız olay yapısını gönderir:
{
"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"
}
Anında iletme bağlayıcısı oluşturmak için adım adım kılavuz
Azure-Sentinel Deposunu kopyalama
Resmi Azure-Sentinel deposunu yerel makinenize çatallayın ve kopyalayın. Bu depo paketleme araçlarını içerir ve standart çözüm yapısını sağlar.
Depoyu kopyalama
git clone https://github.com/<YOUR_FORK>/Azure-Sentinel.gitÇözümler dizinine gidin
cd Azure-Sentinel/Solutions
Depo yapısı şunları içerir:
- Araçlar/Create-Azure-Sentinel-Solution/V3/
- createSolutionV3.ps1 paketleme betiğini içerir
- Çözümler/ Bağlayıcı çözümünüzü oluşturacağınız yer
Çözüm Klasör Yapınızı Oluşturun Standart adlandırma kuralını izleyerek Çözümler/ klasöründe yeni bir çözüm dizini oluşturun. Çözüm dizinleri oluşturma (Azure-Sentinel/Solutions/'dan)
mkdir ContosoSecurityAlerts cd ContosoSecurityAlerts mkdir Data mkdir "Data Connectors" mkdir "Data Connectors/ContosoSecurityAlerts_ccf"Klasör yapınız aşağıdaki gibi görünür:
Azure-Sentinel/
└── Çözümler/
└── ContosoSecurityAlerts/
├── Veri/
└── Veri Bağlayıcıları/
└── ContosoSecurityAlerts_ccf/Tablonuzu Tanımlama
ContosoSecurityAlerts_ccf klasöründe, özel tablo tanımınızla table.json adlı bir dosya oluşturun:
{ "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" } ] } } }DCR oluşturma
ContosoSecurityAlerts_ccf klasöründe, giriş akışını tanımlayan ve verileri tablonuza yönlendiren DCR.json adlı bir dosya oluşturun:
{ "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'))]" } }Bağlayıcı Tanımını Oluşturma
ContosoSecurityAlerts_ccf klasöründe, kullanıcıların Sentinel'de bağlayıcıyla nasıl etkileşim kuracağını tanımlayan connectorDefinition.json adlı bir dosya oluşturun:
{ "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" } } ] } ] } } }Veri Bağlayıcısı Yapılandırmasını Oluşturma
ContosoSecurityAlerts_ccf klasöründe, bağlayıcı tanımını dağıtılan kaynaklara bağlayan dataConnector.json adlı bir dosya oluşturun:
{ "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": [ "$" ] } } }Çözüm Meta Veri Dosyaları Oluşturma
Solution_ContosoSecurityAlerts.json Veri klasöründe çözüm ayrıntılarınızla oluşturun
Solution_ContosoSecurityAlerts.json:{ "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
Kritik alan gereksinimleri:
-
BasePath: Azure-Sentinel deposunun gerçek yerel yolunuza güncelleyin -
Metadata:SolutionMetadata.json(6B. Adımda oluşturulmuş) referans gösterilmelidir -
Version: Anlamsal sürüm oluşturma, örneğin,3.0.0 -
TemplateSpec: Her zamantrueiçin Content Hub çözümleri -
Is1Pconnector: İş ortağı/özel bağlayıcılar içinfalseolarak kurulacak şekilde ayarlayın
-
Çözüm kökünde SolutionMetadata.json oluşturma
ContosoSecurityAlerts klasöründe çözüm kök dizininde (Veri klasörüyle aynı düzeyde) SolutionMetadata.json oluşturun:
{ "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" } }Content Hub paketlemesi için SolutionMetadata.json dosyası gerekir:
- Paketleme aracı bu dosyayı çözüm kökünde bekler
- Content Hub dağıtımı için market meta verilerini içerir
Çözüm kökünde ReleaseNotes.md oluşturma
Sürüm Değiştirme Tarihi (DD-MM-YYYY) Değişiklik Geçmişi 3.0.0 DD-MM-YYYY Örnek çözüm
Doğrulama denetim listesi
Sonraki adıma geçmeden önce şunları doğrulayın:
- Klasör adında boşluk yok, örneğin
ContosoSecurityAlerts -
NameSolution_ContosoSecurityAlerts.json alanındaki alan, klasör adıyla tam olarak eşleşir -
SolutionMetadata.jsonçözüm kökünde var (Veri klasöründe yok) -
BasePathgerçek yerel Azure-Sentinel depo yolunu gösterir -
Metadataalanı "SolutionMetadata.json" dosyasına referans veriyor -
publisherIdveofferIdiki dosya arasında eşleşir
Çözüm yapınızı doğrulama
Klasör yapınızın gerekli düzen ile tüm dosyaları yerinde eşleştirdiğini onaylayın:
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 6Çözümünüzü paketleme
ARM dağıtım şablonunu oluşturmak için createSolutionV3.ps1 paketleme aracını kullanın.
# 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.ps1Betik otomatik olarak:
- Veri/ klasör yapınızı doğrular
- Bağlayıcı nesneleri işler
Beklenen çıkış:
Paketleme betiği, başarısız arm-ttk (Azure Resource Manager Şablonu Araç Seti) doğrulamasını gösterir. CCF Anında İletme bağlayıcıları için bu hata beklenir ve normaldir:
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!Geçerli dosyaları onaylayan üç JSON doğrulama iletisi görürseniz paketleme başarılı oldu. CCF Push bağlayıcıları için
arm-ttkhatasını yoksayabilirsiniz.Daha fazla bilgi için Azure-Sentinel Çözüm Araçları belgelerine bakın.
Çözüm paketini dağıtma
Oluşturulan ARM şablonunu (Paket/mainTemplate.json) Azure aboneliğinize dağıtın.
- Azure portalında Özel şablon dağıtma araması yapın
- Düzenleyicide Kendi şablonunuzu derleyin'i seçin
-
Dosya yükle'yi seçin ve çıkış klasörünüzden seçin
Package/mainTemplate.json - Kaydet seçeneğini seçin
- Dağıtım parametrelerini doldurun:
- Abonelik: Azure aboneliğiniz
- Kaynak Grubu: Sentinel çalışma alanınızı içeren kaynak grubu
- Bölge: Sentinel çalışma alanınızla aynı bölge
- Çalışma alanı: Log Analytics çalışma alanınızın adı
- Gözden geçir ve oluştur'u ve ardından Oluştur'u seçin
Bu dağıtım bağlayıcıyı Microsoft Sentinel veri bağlayıcıları galerinizde kullanılabilir hale getirir.
Ayrıntılı adımlar için bkz. [Hızlı Başlangıç: Azure portalını kullanarak ARM şablonları oluşturma ve dağıtma](/azure/azure-resource-manager/templates/ quickstart-create-templates-use-the-portal).
Veri bağlayıcısını etkinleştirme
Çözüm paketini dağıtdıktan sonra bağlayıcının kaynakları sağlamasına ve kimlik bilgileri oluşturmasına olanak tanıyın.
- Azure portalında Microsoft Sentinel çalışma alanınıza gidin
- Yapılandırma>Verileri bağlayıcılarına gidin
- Contoso Güvenlik Uyarıları (Anında İletme) için arama yapın ve seçin
- Bağlayıcı sayfasını aç'ı seçin
- Contoso Güvenlik Uyarıları bağlayıcısını dağıt düğmesini seçin
- Dağıtımın tamamlanmasını bekleyin (kimlik bilgileriyle özel tablo, DCR, DCE, Entra uygulaması oluşturur)
- Görüntülenen bağlantı ayrıntılarını kopyalayın:
- Kiracı Kimliği
- Uygulama (İstemci) Kimliği
- İstemci Parolası
- Veri Toplama Uç Noktası URI'si
- Veri Toplama Kuralı Değişmez Kimlik
- Akış Adı:
Custom-ContosoSecurityAlerts
Uygulamanızı yapılandırma
Uygulama kodunuzu 10. Adım'da yer alan kimlik bilgileri ve kaynak ayrıntılarıyla güncelleştirin. Kod, Azure İzleyici ile kimlik doğrulaması yapmak için OAuth 2.0 istemci kimlik bilgileri akışını kullanır.
Caution
Kimlik bilgilerinizi koruyun: Kimlik bilgilerini (Kiracı Kimliği, Uygulama Kimliği, İstemci Gizli Anahtarı) doğrudan uygulama kodunuzda sabit kodlamayın veya kaynak denetimine işlemeyin. Aşağıdakiler gibi güvenli kimlik bilgileri depolama çözümleri kullanın:
- Üretim uygulamaları için Azure Key Vault
- Ortam değişkenleri veya yapılandırma dosyaları (kaynak denetiminden hariç)
- Uygun durumlarda yönetilen kimlikler
- Gizlilik yönetimi araçları, durağan durumdaki kimlik bilgilerini şifreler.
Python Örnek Uygulama Kodu:
Aşağıdaki örnekte <Your-Tenant-ID> gibi yer tutucu değerler kullanılmaktadır. Bu değerleri gerçek kimlik bilgilerinize güvenli referanslarla değiştirin.
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!")Verilerinizi sorgulama
Uyarı gönderdikten sonra Sentinel'de sorgu oluşturun. İlk alım için 5-10 dakika izin verin.
// 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
İlgili içerik
CCF Anında İletme bağlayıcılarını anladığınıza göre aşağıdaki adımları uygulayın:
- Veri şemanızı tasarlama - Göndermek istediğiniz olayları ve bunların alanlarını belirleyin.
- Bağlayıcı yapıtları oluşturma - Dört JSON dosyasını (tablo, DCR, bağlayıcı tanımı, veri bağlayıcısı) oluşturun.
- Çözüm yapısını düzenleme - Düzgün adlandırma ile Veri/ ve Veri Bağlayıcıları/ klasörlerini ayarlayın.
-
Çözümünüzü paketleme - Dağıtım şablonları oluşturmak için kullanın
createSolutionV3.ps1. - Dağıtma ve test etme - Sentinel çalışma alanınıza dağıtın ve veri akışını doğrulayın.
- Uygulamanızla tümleştirme - Olayları gerçek zamanlı olarak göndermek için kod ekleyin.
- Uyarılar ve çalışma kitapları oluşturma - Verilerinizi güvenlik izleme için kullanın.
Ek kaynaklar
CCF belgeleri
- Kodsuz bağlayıcı oluşturma (CCF Pull) - Sorgulama tabanlı bağlayıcılar.
- Veri Bağlayıcısı Tanımları API başvurusu - KULLANıCı arabirimi yapılandırma kılavuzu.
- Veri bağlayıcısı bağlantı kuralları başvurusu - Anket bağlayıcıları için bağlantı kuralları.
Azure İzleyici ve veri toplama
- Azure İzleyici Günlükleri Alma API'si - Veri göndermek için temel API.
- Azure İzleyici'de veri toplama kuralları - DCR'leri anlama.
- Veri toplama kuralının yapısı - DCR yapı ayrıntıları.
- Azure İzleyici - DCE yapılandırmasında veri toplama uç noktaları .
- Öğretici: Günlük alımı API'siyle Azure İzleyici Günlüklerine veri gönderme - Adım adım öğretici.
- Özel tablo oluşturma - Özel tablo oluşturma kılavuzu.
Kimlik doğrulaması ve güvenlik
- OAuth 2.0 istemci kimlik bilgileri akışı - Uygulamadan hizmete kimlik doğrulaması nasıl çalışır?
- Microsoft kimlik platformu erişim belirteçleri - OAuth belirteçlerini anlama.
- Microsoft Entra Id'de uygulama kaydetme - Microsoft Entra Id'de bir uygulamayı kaydetme.
- Azure AD uygulama kaydı için en iyi yöntemler - Entra uygulama güvenliği.
- Azure Resource Manager (ARM) şablonlarını kullanarak Azure rolleri atama - Şablonları kullanarak rol atama.
- ARM şablonu güvenlik önerileri - Dağıtım şablonlarının güvenliğini sağlama.
- Azure İzleyici hizmet sınırları - Hız sınırları ve kotalar.
Microsoft Sentinel
- Microsoft Sentinel çözümleri hakkında - Bağlayıcıları çözüm olarak paketleme.
- Veri bağlayıcılarınızın durumunu izleme - Sistem durumu izleme.
- Veri bağlayıcıları için ARM şablonu başvurusu - Tam API başvurusu.
Yardım alın
- ISV iş ortaklarının tümleştirme oluşturması için şu bağlantılara başvurun: azuresentinelpartner@microsoft.com
- Teknik sorular için Microsoft Soru-Cevap'ı 'azure-sentinel' etiketiyle kullanın.