メインコンテンツにスキップ

Microsoft Sentinel との統合

2か月以上前に更新

このガイドでは、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.

  1. Gerar uma Chave de API

    1. Na Plataforma Axur, vá para Configuração de Chaves de API.

    2. Crie uma nova chave de API e copie o valor da Chave de API de forma segura.

    3. Nota: O feed retorna apenas os dados que o usuário da chave de API tem permissão para acessar.

  2. Criar o Feed e copiar seu ID

    1. Na Plataforma Axur, vá para API & Integrations → Feeds.

    2. Crie um novo feed de acordo com seu caso de uso (por exemplo, phishing, abuso de marca, vazamentos de credenciais), definindo os filtros desejados.

    3. Após salvar, abra o feed recém-criado. Copie apenas o ID do Feed da URL e salve-o para mais tarde.

  3. (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 '.'

    1. 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).

    2. 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):

  1. No Portal Azure, procure por Deploy a custom template (Implantar um modelo personalizado).

  2. Clique em Build your own template in the editor (Criar seu próprio modelo no editor).

  3. Cole o JSON abaixo → Save (Salvar).

  4. 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:

  1. Procure por Resource groups (Grupos de recursos) → Create (Criar).

  2. Selecione a Subscription (Assinatura) de destino e escolha um nome para o Resource group (Grupo de recursos) (por exemplo, rg-sentinel-axur-prod).

  3. 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:

  1. Procure e selecione Logic appsAdd (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) ou Standard (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 seu Resource group (Grupo de recursos) (ou crie um conforme acima), defina um Logic app name (Nome do Logic App) e escolha uma Region (Região) (mantenha a mesma região que você usará para o Log Analytics). Defina Plan (Plano) como Consumption (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:

  1. Procure por Data collection endpoints (Endpoints de coleta de dados) → Create (Criar).

  2. Básicos: selecione a Subscription (Assinatura) correta, escolha seu Resource group (Grupo de recursos) (preferencialmente o mesmo do Logic App), defina um Name (Nome) e escolha a Region (Região) (para corresponder à região do seu Log Analytics) → Review + create (Revisar + criar) → Create (Criar).

  3. Após a implantação, abra o DCE. Em Overview (Visão geral), copie a URL base do Ingestion (Data Collection) endpoint (Endpoint de ingestão de dados); você a colará como dce_ingestion_base_url no 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:

  1. Procure por Log Analytics workspacesCreate (Criar) (ou selecione um existente).

  2. Básicos: selecione a Subscription (Assinatura) correta, escolha seu Resource group (Grupo de recursos) (idealmente o mesmo usado para Logic App/DCE), defina um Name (Nome) e escolha a Region (Região) (mantenha consistente com o DCE e Logic App) → Review + create (Revisar + criar) → Create (Criar).

  3. Habilitar Sentinel: vá para Microsoft SentinelCreate (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:

  1. Abra seu Log Analytics workspace → clique no workspace criado → Settings (Configurações) → Tables (Tabelas) → Create (Criar) → selecione Custom log (DCR-based) (Log personalizado (baseado em DCR)).

  2. Nomeie a tabela (por exemplo, AxurTickets). Nos Logs, a tabela aparecerá com o sufixo _CL (por exemplo, AxurTickets_CL).

  3. Quando solicitado, selecione o DCE que você criou para o roteamento de ingestão.

  4. Em Schema and transformations (Esquema e transformações):

  5. 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:

  1. Vá para a DCR → Access control (IAM) (Controle de acesso (IAM)) → Add role assignment (Adicionar atribuição de função).

  2. Selecione a função: prefira Monitoring Data Sender. Se não estiver disponível em seu tenant, use Monitoring Metrics Publisher como alternativa.

  3. Next (Avançar) → Members (Membros) → Selecione a identidade gerenciada do Logic App (atribuída ao sistema).

  4. 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) (ou Development Tools (Ferramentas de Desenvolvimento) → Logic App Code view (Exibição de Código do Logic App) e edite o bloco parameters), 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_name corresponde à tabela personalizada criada (prefixo Custom-).

  • 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 Sender na DCR (ou Monitoring Metrics Publisher como 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] までお気軽にご連絡ください 😊

こちらの回答で解決しましたか?