このガイドでは、Logic App(従量課金)、Data Collection Endpoint(DCE)、Data Collection Rule(DCR)、および Log Analytics ワークスペース内のカスタムテーブルを使用して、Axur プラットフォームのフィードを Microsoft Sentinel に取り込む方法を説明します。
注意: 本チュートリアルは、すでに Axur プラットフォームへのアクセス権と必要な API キーをお持ちであることを前提としています。
前提条件
Logic Apps、DCE、DCR、および Log Analytics リソースを作成する権限を持つ Azure サブスクリプション。
Axur プラットフォームの API キーおよびフィード ID。
コストと請求に関する考慮事項
重要: 本統合を Microsoft Azure サブスクリプションに展開・実行すると、費用が発生する可能性があります。すべての費用は Microsoft によってご利用のサブスクリプションに請求され、ユーザーの責任となります。Axur は Azure の請求、管理、または費用の責任を負いません。
主なコスト要因:
Logic Apps(従量課金): トリガー/実行ごとおよびアクションごとに課金されます。詳細は Azure Logic Apps の価格 を参照してください。
ログの取り込み(Azure Monitor / Log Analytics): 取り込まれた GB ごとおよび無料期間を超えるデータ保持に応じて課金されます。詳細は Azure Monitor の価格 および Log Analytics の価格 を参照してください。
Microsoft Sentinel: Sentinel 対応ワークスペースに取り込まれる GB ごとに追加の分析料金が発生し、オプション機能による料金もあります。詳細は Microsoft Sentinel の価格 を参照してください。
コスト管理のヒント:
再収集間隔を長くし、フィードフィルターを厳しく設定して、取り込み量を制限します。
テスト用/準備用サブスクリプションを使用し、Azure Cost Management で予算とコストアラートを設定します。
Log Analytics ワークスペースで取り込み量を確認し、必要に応じてフィルター、スケジュール、データ形式を調整します。
Dica: Um glossário de termos do Azure usados neste tutorial está disponível no final do documento.
1) Criar o Feed da Plataforma Axur
Crie uma Chave de API e um Feed diretamente na Plataforma Axur. Mantenha ambos os valores à mão para as próximas etapas.
Gerar uma Chave de API
Na Plataforma Axur, vá para Configuração de Chaves de API.
Crie uma nova chave de API e copie o valor da Chave de API de forma segura.
Nota: O feed retorna apenas os dados que o usuário da chave de API tem permissão para acessar.
Criar o Feed e copiar seu ID
Na Plataforma Axur, vá para API & Integrations → Feeds.
Crie um novo feed de acordo com seu caso de uso (por exemplo, phishing, abuso de marca, vazamentos de credenciais), definindo os filtros desejados.
Após salvar, abra o feed recém-criado. Copie apenas o ID do Feed da URL e salve-o para mais tarde.
(Opcional) Validar o feed via API Use curl para confirmar se o feed retorna dados usando sua Chave de API e ID do Feed:
curl -sS \
-H "Authorization: Bearer YOUR_AXUR_API_KEY" \
-H "Accept: application/json" \
"https://api.axur.com/gateway/1.0/api/integration-feed/feeds/feed/YOUR_FEED_ID" | jq '.'Em API & Integrations → Feeds, você também pode monitorar o status do feed ao longo do tempo (por exemplo, carimbo de data/hora da última solicitação).
Se nenhum evento for retornado, verifique os filtros do feed e as permissões do usuário da chave de API.
A partir deste ponto (Etapa 2+), toda a configuração é realizada na nuvem do Microsoft Azure usando o portal Azure.
Opção 1: Implantar via modelo personalizado
Se você preferir uma implantação plug-and-play via Portal Azure, use este modelo personalizado. Ele cria: Log Analytics Workspace (e habilita o Microsoft Sentinel), Data Collection Endpoint (DCE), Tabela personalizada (baseada em DCR), Data Collection Rule (DCR) com a transformação KQL, Logic App (Consumo) com identidade gerenciada e a atribuição de função IAM na DCR.
Como implantar (copiar e colar):
No Portal Azure, procure por
Deploy a custom template(Implantar um modelo personalizado).Clique em
Build your own template in the editor(Criar seu próprio modelo no editor).Cole o JSON abaixo →
Save(Salvar).Preencha:
workspaceName,logicAppName,tableName,feedId,apiKey(seguro) e escolha localização/RG →Deploy(Implantar).
Notas: - Parâmetro de permissões: dcrIngestRoleDefinitionIdOptional (opcional). Deixe vazio para usar Monitoring Metrics Publisher (padrão). Para forçar outra função (por exemplo, Monitoring Data Sender), cole seu RoleDefinitionId (GUID). O texto explicativo (ao passar o mouse) explica como recuperá-lo rapidamente via Azure CLI. - Propagação: após a implantação, o registro da DCR/tabela pode levar alguns minutos. As execuções iniciais do Logic App podem falhar com 401/403 ou InvalidOutputTable até que as permissões e a configuração se propaguem. Aguarde 20–30 minutos. - Você pode verificar o Run History (Histórico de Execuções) no Logic App para ver se está sendo executado com sucesso. - Após a implantação, pule para a seção Validação abaixo (as Etapas manuais 2–7 não são necessárias se você usou este modelo).
JSON do modelo:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
},
"workspaceName": {
"type": "string",
"defaultValue": "wk-axur-integration"
},
"logicAppName": {
"type": "string",
"defaultValue": "la-axur-ingest"
},
"tableName": {
"type": "string",
"defaultValue": "AxurIntegration"
},
"prefix": {
"type": "string",
"defaultValue": "axur-sentinel"
},
"feedId": {
"type": "string",
"defaultValue": "GET_FROM_AXUR_PLATFORM_FEED_ID"
},
"apiKey": {
"type": "securestring",
"defaultValue": ""
},
"recurrenceFrequency": {
"type": "string",
"defaultValue": "Minute",
"allowedValues": [ "Minute", "Hour", "Day" ]
},
"recurrenceInterval": {
"type": "int",
"defaultValue": 5,
"minValue": 1
},
"dcrIngestRoleDefinitionIdOptional": {
"type": "string",
"defaultValue": "",
"metadata": {
"description": "Optional. Paste a RoleDefinitionId (GUID) to use for DCR ingest (e.g., Monitoring Data Sender). Leave empty to fallback to Monitoring Metrics Publisher."
}
}
},
"variables": {
"streamName": "[concat('Custom-', parameters('tableName'), '_CL')]"
},
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces",
"apiVersion": "2022-10-01",
"name": "[parameters('workspaceName')]",
"location": "[parameters('location')]",
"properties": {
"retentionInDays": 30,
"features": {
"enableDataExport": true
}
},
"sku": {
"name": "PerGB2018"
}
},
{
"type": "Microsoft.OperationsManagement/solutions",
"apiVersion": "2015-11-01-preview",
"name": "[concat('SecurityInsights(', parameters('workspaceName'), ')')]",
"location": "[parameters('location')]",
"dependsOn": [
"[resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspaceName'))]"
],
"plan": {
"name": "[concat('SecurityInsights(', parameters('workspaceName'), ')')]",
"publisher": "Microsoft",
"product": "OMSGallery/SecurityInsights",
"promotionCode": ""
},
"properties": {
"workspaceResourceId": "[resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspaceName'))]"
}
},
{
"type": "Microsoft.Insights/dataCollectionEndpoints",
"apiVersion": "2022-06-01",
"name": "[concat(parameters('prefix'), '-dce')]",
"location": "[parameters('location')]",
"properties": {
"networkAcls": {
"publicNetworkAccess": "Enabled"
}
}
},
{
"type": "Microsoft.OperationalInsights/workspaces/tables",
"apiVersion": "2022-10-01",
"name": "[concat(parameters('workspaceName'), '/', parameters('tableName'), '_CL')]",
"dependsOn": [
"[resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspaceName'))]"
],
"properties": {
"tableType": "DataCollectionRule",
"schema": {
"name": "[concat(parameters('tableName'), '_CL')]",
"columns": [
{ "name": "TimeGenerated", "type": "datetime" },
{ "name": "last_update_date", "type": "datetime" },
{ "name": "open_date", "type": "datetime" },
{ "name": "ticket_reference", "type": "string" },
{ "name": "ticket_key", "type": "string" },
{ "name": "customer_key", "type": "string" },
{ "name": "collector", "type": "string" },
{ "name": "detection_type", "type": "string" },
{ "name": "status", "type": "string" },
{ "name": "assets", "type": "dynamic" },
{ "name": "attachments", "type": "dynamic" },
{ "name": "ticket_raw", "type": "dynamic" },
{ "name": "detection_raw", "type": "dynamic" },
{ "name": "feed_meta", "type": "dynamic" },
{ "name": "feed_id", "type": "string" }
]
}
}
},
{
"type": "Microsoft.Insights/dataCollectionRules",
"apiVersion": "2022-06-01",
"name": "[concat(parameters('prefix'), '-dcr')]",
"location": "[parameters('location')]",
"dependsOn": [
"[resourceId('Microsoft.Insights/dataCollectionEndpoints', concat(parameters('prefix'), '-dce'))]",
"[resourceId('Microsoft.OperationalInsights/workspaces/tables', parameters('workspaceName'), concat(parameters('tableName'), '_CL'))]"
],
"properties": {
"dataCollectionEndpointId": "[resourceId('Microsoft.Insights/dataCollectionEndpoints', concat(parameters('prefix'), '-dce'))]",
"destinations": {
"logAnalytics": [
{
"name": "la",
"workspaceResourceId": "[resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspaceName'))]"
}
]
},
"dataSources": {
"customLogs": [
{
"name": "custom",
"streams": [
"[variables('streamName')]"
]
}
]
},
"dataFlows": [
{
"streams": [
"[variables('streamName')]"
],
"destinations": [Capturas de tela:
Opção 2: Implantação manual
Siga as etapas abaixo para provisionar cada recurso do Azure manualmente via portal.
(Opcional) No Azure: Criar um Grupo de Recursos
A criação de um Grupo de Recursos (RG) dedicado antes de provisionar recursos ajuda na organização, controle de acesso e gerenciamento do ciclo de vida.
No portal Azure:
Procure por
Resource groups(Grupos de recursos) →Create(Criar).Selecione a
Subscription(Assinatura) de destino e escolha um nome para oResource group(Grupo de recursos) (por exemplo,rg-sentinel-axur-prod).Escolha uma
Region(Região) alinhada com o local onde você planeja criar o Logic App, DCE, DCR e Log Analytics →Review + create(Revisar + criar) →Create(Criar).
Você selecionará este RG nas etapas seguintes ao criar o Logic App, DCE e Workspace.
2) No Azure: Criar o Logic App (Consumo)
Crie um novo Logic App (Consumo). Habilite a identidade gerenciada atribuída pelo sistema para que ele possa se autenticar na ingestão do Azure Monitor.
No portal Azure:
Procure e selecione
Logic apps→Add(Adicionar).
Opção de hospedagem
Durante a criação, o Azure mostra uma “Hosting option” (Opção de hospedagem) para Logic Apps:
Consumption(Consumo) (multi-tenant/serverless, faturado por ação) ouStandard(Padrão) (single-tenant no App Service, runtime/recursos e preços diferentes).Para este tutorial, selecione
Consumption(Consumo).Saiba mais: consulte a documentação da Microsoft para planos e hospedagem de Logic Apps: https://learn.microsoft.com/azure/logic-apps/logic-apps-overview#plans-and-hosting e a visão geral de single-tenant: https://learn.microsoft.com/azure/logic-apps/single-tenant-overview
Básicos: escolha a
Subscription(Assinatura) correta (para faturamento/governança), selecione seuResource group(Grupo de recursos) (ou crie um conforme acima), defina umLogic app name(Nome do Logic App) e escolha umaRegion(Região) (mantenha a mesma região que você usará para o Log Analytics). DefinaPlan(Plano) comoConsumption(Consumo) →Review + create(Revisar + criar) →Create(Criar).Após a implantação, vá para o recurso do Logic App.
Habilitar Identidade Gerenciada:
Identity(Identidade) →System assigned(Atribuída ao sistema) →Status: On(Status: Ativado) →Save(Salvar).
Crie o fluxo de trabalho para extrair o feed da Axur e enviá-lo para a ingestão do Azure Monitor usando a Identidade Gerenciada.
No Logic App, abra Development Tools (Ferramentas de Desenvolvimento) → Logic App Code view (Exibição de Código do Logic App) e cole a definição abaixo, depois salve. Por enquanto, deixe os “parameters” como estão. Iremos preenchê-los mais tarde.
{
"definition": {
"$schema": "https://schema.management.azure.com/schemas/2016-06-01/workflowdefinition.json#",
"triggers": {
"Recurrence": {
"recurrence": {
"frequency": "Minute",
"interval": 1
},
"evaluatedRecurrence": {
"frequency": "Minute",
"interval": 1
},
"type": "Recurrence"
}
},
"actions": {
"HTTP_GET_Feed": {
"runAfter": {},
"type": "Http",
"inputs": {
"uri": "https://api.axur.com/gateway/1.0/api/integration-feed/feeds/feed/@{parameters('feed_id')}",
"method": "GET",
"headers": {
"Authorization": "Bearer @{parameters('api_token')}",
"Accept": "application/json"
}
}
},
"Parse_JSON": {
"runAfter": {
"HTTP_GET_Feed": [
"Succeeded"
]
},
"type": "ParseJson",
"inputs": {
"content": "@body('HTTP_GET_Feed')",
"schema": {
"type": "object",
"properties": {
"feedData": {
"type": "object"
},
"collectionData": {
"type": "object",
"properties": {
"tickets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ticket": {
"type": "object"
},
"detection": {
"type": "object"
},
"attachments": {
"type": "array"
},
"texts": {
"type": "array"
}
}
}
}
}
}
}
}
}
},
"Select_Tickets": {
"runAfter": {
"Parse_JSON": [
"Succeeded"
]
},
"type": "Select",
"inputs": {
"from": "@body('Parse_JSON')?['collectionData']?['tickets']",
"select": {
"TimeGenerated": "@item()?['ticket']?['last-update.date']",
"last_update_date": "@item()?['ticket']?['last-update.date']",
"open_date": "@item()?['detection']?['open.date']",
"ticket_reference": "@item()?['ticket']?['reference']",
"ticket_key": "@item()?['ticket']?['ticketKey']",
"customer_key": "@item()?['ticket']?['customerKey']",
"collector": "@item()?['ticket']?['creation.collector']",
"detection_type": "@item()?['detection']?['type']",
"status": "@item()?['detection']?['status']",
"assets": "@item()?['detection']?['assets']",
"attachments": "@item()?['attachments']",
"ticket_raw": "@item()?['ticket']",
"detection_raw": "@item()?['detection']",
"feed_meta": "@body('Parse_JSON')?['feedData']",
"feed_id": "@{parameters('feed_id')}"
}
}
},
"HTTP_POST_to_Sentinel": {
"runAfter": {
"Select_Tickets": [
"Succeeded"
]
},
"type": "Http",
"inputs": {
"uri": "@{parameters('dce_ingestion_base_url')}/dataCollectionRules/@{parameters('dcr_immutable_id')}/streams/@{parameters('stream_name')}?api-version=2023-01-01",
"method": "POST",
"headers": {
"Content-Type": "application/json"
},
"body": "@body('Select_Tickets')",
"authentication": {
"type": "ManagedServiceIdentity",
"audience": "https://monitor.azure.com"
}
}
}
},
"outputs": {},
"parameters": {
"feed_id": {
"type": "String"
},
"api_token": {
"type": "SecureString"
},
"dce_ingestion_base_url": {
"type": "String"
},
"dcr_immutable_id": {
"type": "String"
},
"stream_name": {
"type": "String"
},
"$connections": {
"type": "Object",
"defaultValue": {}
}
}
},
"parameters": {
"feed_id": { "value": "YOUR_FEED_ID" },
"api_token": { "value": "YOUR_AXUR_API_KEY" },
"dce_ingestion_base_url": { "value": "YOUR_DCE_INGEST_URL" },
"dcr_immutable_id": { "value": "YOUR_DCR_IMMUTABLE_ID" },
"stream_name": { "value": "Custom-YOUR_TABLE_NAME" },
"$connections": { "type": "Object", "value": {} }
}
}Capturas de tela:
3) No Azure: Criar o Data Collection Endpoint (DCE)
Crie um DCE na mesma região do seu Log Analytics Workspace. Copie a URL do endpoint de ingestão (URL base).
No portal Azure:
Procure por
Data collection endpoints(Endpoints de coleta de dados) →Create(Criar).Básicos: selecione a
Subscription(Assinatura) correta, escolha seuResource group(Grupo de recursos) (preferencialmente o mesmo do Logic App), defina umName(Nome) e escolha aRegion(Região) (para corresponder à região do seu Log Analytics) →Review + create(Revisar + criar) →Create(Criar).Após a implantação, abra o DCE. Em
Overview(Visão geral), copie a URL base doIngestion (Data Collection) endpoint(Endpoint de ingestão de dados); você a colará comodce_ingestion_base_urlno Logic App.
4) No Azure: Criar o Log Analytics Workspace e habilitar o Microsoft Sentinel
Crie ou identifique um Log Analytics Workspace conectado ao Microsoft Sentinel.
No portal Azure:
Procure por
Log Analytics workspaces→Create(Criar) (ou selecione um existente).Básicos: selecione a
Subscription(Assinatura) correta, escolha seuResource group(Grupo de recursos) (idealmente o mesmo usado para Logic App/DCE), defina umName(Nome) e escolha aRegion(Região) (mantenha consistente com o DCE e Logic App) →Review + create(Revisar + criar) →Create(Criar).Habilitar Sentinel: vá para
Microsoft Sentinel→Create(Criar) → escolha o workspace criado/selecionado acima →Add(Adicionar).
5) No Azure: Criar a Tabela personalizada (cria automaticamente a DCR)
Crie uma tabela de logs personalizada e defina o esquema e a transformação para corresponder ao payload do Logic App. O Azure criará automaticamente uma Data Collection Rule (DCR) anexada a esta tabela.
No portal Azure:
Abra seu
Log Analytics workspace→ clique no workspace criado →Settings(Configurações) →Tables(Tabelas) →Create(Criar) → selecioneCustom log (DCR-based)(Log personalizado (baseado em DCR)).Nomeie a tabela (por exemplo,
AxurTickets). Nos Logs, a tabela aparecerá com o sufixo_CL(por exemplo,AxurTickets_CL).Quando solicitado, selecione o DCE que você criou para o roteamento de ingestão.
Em
Schema and transformations(Esquema e transformações):Clique em
Upload sample data(Carregar dados de amostra), copie o JSON de amostra abaixo para um arquivo (por exemplo,sample_output.json) e faça o upload:
[
{
"TimeGenerated": "2025-09-11T13:57:30Z",
"last_update_date": "2025-09-11T13:57:30Z",
"open_date": "2025-09-11T13:57:09Z",
"ticket_reference": "https://example.com/path/sample-1",
"ticket_key": "abc123",
"customer_key": "CUSTOMER_X",
"collector": "urlscan",
"detection_type": "phishing",
"status": "closed",
"assets": [
"BRAND123"
],
"attachments": [
{
"name": "screenshot_example_com_01.jpg",
"url": "https://api.axur.com/gateway/1.0/api/files/file/screenshot_example_com_01.jpg"
},
{
"name": "html_example_com_01.html",
"url": "https://api.axur.com/gateway/1.0/api/files/file/html_example_com_01.html"
},
{
"name": "whois_example_com_01.txt",
"url": "https://api.axur.com/gateway/1.0/api/files/file/whois_example_com_01.txt"
}
],
"ticket_raw": {
"reference": "https://example.com/path/sample-1",
"ticketKey": "abc123",
"customerKey": "CUSTOMER_X",
"creation.collector": "urlscan",
"last-update.date": "2025-09-11T13:57:30Z",
"creation.collection": "10000001",
"creation.originator": "collector",
"creation.date": "2023-12-07T02:01:36Z"
},
"detection_raw": {
"creation.user": "3",
"close.date": "2025-09-11T13:57:30Z",
"resolution.reason": "dns-down",
"open.date": "2025-09-11T13:57:09Z",
"assets": [
"BRAND123"
],
"type": "phishing",
"resolution": "discarded",
"status": "closed"
},
"feed_meta": {
"id": "11111111-1111-1111-1111-111111111111",
"title": "Sample feed",
"url": "https://api.axur.com/gateway/1.0/api/integration-feed/feeds/feed/11111111-1111-1111-1111-111111111111",
"lastDataRetrieved": "sample",
"createdAt": 1700000000000,
"lastRequest": 1700000100000,
"isActive": true,
"customerKey": "CUSTOMER_X",
"params": "open.date=ge:2025-09-05",
"eventDate": "open.date",
"nextPage": 2,
"lastDateRetrieved": "2025-09-11T13:57:09",
"feedType": "ticket",
"applyOnDescendants": false
},
"feed_id": "11111111-1111-1111-1111-111111111111"
},
{
"TimeGenerated": "2025-09-11T13:57:11Z",
"last_update_date": "2025-09-11T13:57:11Z",
"open_date": "2025-09-11T13:57:09Z",
"ticket_reference": "https://example.org/contact",
"ticket_key": "def456",
"customer_key": "CUSTOMER_X",
"collector": "google websearch",
"detection_type": "fraudulent-brand-use",
"status": "closed",
"assets": [
"BRAND123"
],
"attachments": [
{
"name": "whois_example_org_01.txt",
"url": "https://api.axur.com/gateway/1.0/api/files/file/whois_example_org_01.txt"
},
{
"name": "html_example_org_01.html",
"url": "https://api.axur.com/gateway/1.0/api/files/file/html_example_org_01.html"
},
{
"name": "screenshot_example_org_01.jpg",
"url": "https://api.axur.com/gateway/1.0/api/files/file/screenshot_example_org_01.jpg"
}
],
"ticket_raw": {
"reference": "https://example.org/contact",
"ticketKey": "def456",
"customerKey": "CUSTOMER_X",
"creation.collector": "google websearch",
"last-update.date": "2025-09-11T13:57:11Z",
"creation.collection": "10000002",
"creation.originator": "collector",
"creation.date": "2023-09-08T00:46:02Z"
},
"detection_raw": {
"creation.user": "3",
"close.date": "2025-09-11T13:57:11Z",
"resolution.reason": "dns-down",
"open.date": "2025-09-11T13:57:09Z",
"assets": [
"BRAND123"
],
"type": "fraudulent-brand-use",
"resolution": "discarded",
"status": "closed"
},
"feed_meta": {
"id": "22222222-2222-2222-2222-222222222222",
"title": "Sample feed",
"url": "https://api.axur.com/gateway/1.0/api/integration-feed/feeds/feed/22222222-2222-2222-2222-222222222222",
"lastDataRetrieved": "sample",
"createdAt": 1700000000000,
"lastRequest": 1700000100000,
"isActive": true,
"customerKey": "CUSTOMER_X",
"params": "open.date=ge:2025-09-05",
"eventDate": "open.date",
"nextPage": 2,
"lastDateRetrieved": "2025-09-11T13:57:09",
"feedType": "ticket",
"applyOnDescendants": false
},
"feed_id": "22222222-2222-2222-2222-222222222222"
},
{
"TimeGenerated": "2025-09-11T13:57:27Z",
"last_update_date": "2025-09-11T13:57:27Z",
"open_date": "2025-09-11T13:57:09Z",
"ticket_reference": "https://shop.example.net/",
"ticket_key": "ghi789",
"customer_key": "CUSTOMER_X",
"collector": "urlscan",
"detection_type": "phishing",
"status": "closed",
"assets": [
"BRAND123"
],
"attachments": [
{
"name": "whois_example_net_01.txt",
"url": "https://api.axur.com/gateway/1.0/api/files/file/whois_example_net_01.txt"
},
{
"name": "screenshot_example_net_01.jpg",
"url": "https://api.axur.com/gateway/1.0/api/files/file/screenshot_example_net_01.jpg"
},
{
"name": "html_example_net_01.html",
"url": "https://api.axur.com/gateway/1.0/api/files/file/html_example_net_01.html"
}
],
"ticket_raw": {
"reference": "https://shop.example.net/",
"ticketKey": "ghi789",
"customerKey": "CUSTOMER_X",
"creation.collector": "urlscan",
"last-update.date": "2025-09-11T13:57:27Z",
"creation.collection": "10000003",
"creation.originator": "collector",
"creation.date": "2023-12-11T15:23:20Z",
"tags": [
"MOBILE INSPECTION"
]
},
"detection_raw": {
"creation.user": "3",
"close.date": "2025-09-11T13:57:27Z",
"resolution.reason": "dns-down",
"open.date": "2025-09-11T13:57:09Z",
"assets": [
"BRAND123"
],
"type": "phishing",
"resolution": "discarded",
"status": "closed"
},
"feed_meta": {
"id": "33333333-3333-3333-3333-333333333333",
"title": "Sample feed",
"url": "https://api.axur.com/gateway/1.0/api/integration-feed/feeds/feed/33333333-3333-3333-3333-333333333333",
"lastDataRetrieved": "sample",
"createdAt": 1700000000000,
"lastRequest": 1700000100000,
"isActive": true,
"customerKey": "CUSTOMER_X",
"params": "open.date=ge:2025-09-05",
"eventDate": "open.date",
"nextPage": 2,
"lastDateRetrieved": "2025-09-11T13:57:09",
"feedType": "ticket",
"applyOnDescendants": false
},
"feed_id": "33333333-3333-3333-3333-333333333333"
}
]
O Azure inferirá o esquema a partir da amostra. Revise os tipos de campo e ajuste se necessário (por exemplo, garanta que open_date e last_update_date sejam datetime).
Em Transform and filter (Transformar e filtrar), cole a transformação Kusto abaixo, clique em RUN, verifique os dados e clique em Apply (Aplicar).
Use esta projeção Kusto para normalizar os campos:
source
| extend
last_update_date = todatetime(last_update_date),
open_date = todatetime(open_date)
| project
TimeGenerated,
last_update_date,
open_date,
ticket_reference,
ticket_key,
customer_key,
collector,
detection_type,
status,
assets,
attachments,
ticket_raw,
detection_raw,
feed_meta,
feed_id
O Azure criará uma DCR anexada à tabela. Anote o nome do stream (geralmente Custom-<TableName>) e copie o ID imutável da DCR.
6) No Azure: Atribuir IAM na DCR
Conceda permissão à Identidade Gerenciada do Logic App na DCR para enviar dados.
Etapas:
Vá para a DCR →
Access control (IAM)(Controle de acesso (IAM)) →Add role assignment(Adicionar atribuição de função).Selecione a função: prefira
Monitoring Data Sender. Se não estiver disponível em seu tenant, useMonitoring Metrics Publishercomo alternativa.Next (Avançar) → Members (Membros) → Selecione a identidade gerenciada do Logic App (atribuída ao sistema).
Review + assign (Revisar + atribuir). Aguarde 1–2 minutos para a propagação.
7) No Azure: Preencher os parâmetros do Logic App
Com a DCR e o DCE criados, defina todos os parâmetros necessários no Logic App: dce_ingestion_base_url, dcr_immutable_id, stream_name, feed_id, api_token.
Onde definir:
No Logic App, abra
Workflow(Fluxo de trabalho) →Parameters(Parâmetros) (ouDevelopment Tools(Ferramentas de Desenvolvimento) →Logic App Code view(Exibição de Código do Logic App) e edite o blocoparameters), em seguida, insira os valores abaixo e salve.
Valores a fornecer:
URL base de ingestão do DCE (em
Overview(Visão geral) do DCE →Ingestion (Data Collection) endpoint).ID imutável da DCR (em
Properties(Propriedades) da DCR).Nome do stream (
Custom-<TableName>, da tabela personalizada/DCR).feed_id:o ID do Feed que você copiou da Plataforma Axur.api_token:sua Chave de API da Axur (armazenada como um parâmetro SecureString no Logic App).
Após concluir todas as etapas manuais, prossiga para a seção Validação para verificar se a integração está funcionando corretamente.
Validação
Após executar o Logic App (seja via modelo ou implantação manual), aguarde alguns minutos. Se o feed tiver eventos, procure a tabela personalizada em Logs:
Nos Logs do Sentinel, execute uma consulta como:
YOUR_TABLE_NAME_CL| take 10 (por exemplo,AxurIntegration_CL).Pode levar até ~10 minutos para que os eventos apareçam nos logs após serem coletados do feed.
Você pode verificar o
Run History(Histórico de Execuções) no Logic App para ver se está sendo executado com sucesso.
Dicas de solução de problemas:
Verifique se a atribuição de IAM foi propagada.
Garanta que a identidade gerenciada do Logic App esteja habilitada.
Confirme se a região do DCE/DCR corresponde à do Log Analytics Workspace.
Verifique se
stream_namecorresponde à tabela personalizada criada (prefixoCustom-).Inspecione o histórico de execuções do Logic App para erros HTTP e especificamente a ação
HTTP_POST_to_Sentinel.
Glossário
Subscription (Assinatura)
Um contêiner de faturamento e governança no Azure. Todos os recursos criados sob ele são faturados para esta assinatura e seguem suas cotas e políticas.
Escolha a assinatura onde sua equipe de segurança/operações espera gerenciar e pagar por esses recursos.
Resource Group (RG) (Grupo de Recursos)
Um contêiner lógico dentro de uma assinatura para organizar recursos relacionados (por exemplo, Logic App, DCE, DCR, Log Analytics).
Útil para aplicar permissões como um conjunto e gerenciar o ciclo de vida (excluir o RG exclui todos os recursos contidos).
Recomendações para este tutorial
Faturamento/governança: Certifique-se de que está implantando na assinatura correta para propriedade de custos e conformidade com políticas.
Consistência de região: Mantenha o Logic App, DCE, DCR e Log Analytics Workspace na mesma região sempre que possível.
Higiene do grupo de recursos: Use um RG dedicado (por exemplo,
rg-sentinel-axur-<env>) para simplificar o controle de acesso e a limpeza.Nomeação e tags: Aplique nomes e tags consistentes (por exemplo,
env,owner,costCenter) para rastreamento e atribuição de custos.Ambientes: Valide em uma assinatura/RG de teste/preparação antes de promover para produção.
Region (Região)
A localização geográfica onde os recursos do Azure são executados. Mantenha todos os componentes (Logic App, DCE, DCR, Log Analytics Workspace) co-localizados quando possível para reduzir a latência e problemas.
Logic App (Consumption) (Logic App (Consumo))
Um serviço de fluxo de trabalho do Azure faturado por execução e ação. Usado aqui para extrair dados do feed da Axur e enviá-los para a ingestão do Azure Monitor.
Managed Identity (System-assigned) (Identidade Gerenciada (Atribuída ao sistema))
Uma identidade vinculada ao recurso do Logic App, usada para autenticar-se com segurança em serviços do Azure (por exemplo, Azure Monitor) sem segredos.
Data Collection Endpoint (DCE)
O endpoint de ingestão do Azure Monitor para o qual você envia dados. Você copiará sua URL base de ingestão para o parâmetro do Logic App.
Data Collection Rule (DCR) and Immutable ID (Data Collection Rule (DCR) e ID Imutável)
Uma regra que define como os dados são coletados e roteados para uma tabela do Log Analytics, criada quando você define a tabela personalizada. A DCR tem um ID imutável exigido pela API de ingestão.
Stream name (
Custom-<TableName>) (Nome do stream (Custom-<NomeDaTabela>))O stream da DCR associado à sua tabela personalizada. Use este nome de stream exato nos parâmetros do Logic App.
Log Analytics Workspace and custom table (Log Analytics Workspace e tabela personalizada)
O Workspace armazena logs; as tabelas personalizadas criadas via logs personalizados baseados em DCR aparecem nas Consultas com o sufixo
_CL(por exemplo,AxurTickets_CL).
Microsoft Sentinel
SIEM/SOAR sobre o Log Analytics. Habilitar o Sentinel em um workspace pode introduzir encargos analíticos adicionais.
Kusto Query Language (KQL)
A linguagem de consulta para Log Analytics. A transformação que você adiciona na criação da tabela molda os dados de entrada; posteriormente, você consulta com KQL em
Logs.
IAM role on the DCR (Função IAM na DCR)
Conceda à identidade gerenciada do Logic App a função
Monitoring Data Senderna DCR (ouMonitoring Metrics Publishercomo alternativa) para que ele possa enviar dados.
Parâmetros de fluxo de trabalho usados aqui
feed_id:seu ID do Feed da Axur.api_token:sua Chave de API da Axur.dce_ingestion_base_url:URL base do DCE.dcr_immutable_id:o ID imutável da DCR de destino.stream_name:o stream da DCR (por exemplo,Custom-AxurTickets).
ご不明点があれば、いつでも [email protected] までお気軽にご連絡ください 😊






















