Desenvolver uma solução SIEM para Microsoft Sentinel

As soluções do Microsoft Sentinel permitem que parceiros e fornecedores independentes de software (ISVs) agrupem um conector de dados com conteúdo de segurança relacionado, como workbooks, regras analíticas, consultas de busca, playbooks e analisadores, em um único pacote instalável. Em seguida, os clientes podem descobrir e implantar essas soluções no hub de conteúdo Microsoft Sentinel e Azure Marketplace.

Note

Se você for um ISV criando uma integração Microsoft Sentinel, a equipe do Microsoft App Assure poderá ajudar durante todo o processo. Para envolver a equipe, envie um email para azuresentinelpartner@microsoft.com.

Phase Activities
Aprender Saiba mais sobre o Sentinel, identificar o que criar, criar contas do editor, configurar seu ambiente
Build Configurar seu ambiente, criar seu conector e o conteúdo da solução
Test Empacotar sua solução, testá-la, enviar uma solicitação de pull e resolver comentários
Publicar Criar uma oferta no Partner Center, testar a versão prévia e entrar em operação
Preview Informe os clientes, resolva problemas de suporte, monitore por quatro semanas
Entrada no mercado Remova o sinalizador de visualização, ouça os clientes, aprimore sua solução

Learn

Antes de começar a criar, você deverá concluir as seguintes etapas:

Build

Na fase de build, você configura seu ambiente de desenvolvimento e, em seguida, cria o conector e o conteúdo da solução.

Prepare seu ambiente

Antes de criar, configure seu ambiente de desenvolvimento para que você possa criar, testar e enviar conteúdo da solução.

Bifurcar e clonar o repositório

Para bifurcar e clonar o repositório Azure-Sentinel, siga estas etapas:

  1. Em GitHub, vá para o repositórioAzure-Sentinel e selecione Fork.

  2. Faça um clone da bifurcação no computador local:

    git clone https://github.com/<your-github-username>/Azure-Sentinel.git
    cd Azure-Sentinel
    
  3. Adicione o repositório remoto upstream de forma que você possa obter as alterações mais recentes:

    git remote add upstream https://github.com/Azure/Azure-Sentinel.git
    

Configurar um workspace de desenvolvimento/teste

Você precisa de um espaço de trabalho funcional do Microsoft Sentinel a fim de desenvolver e validar o conector e o conteúdo antes de enviá-los. Consulte Integrar o Microsoft Sentinel.

Depois que o espaço de trabalho tiver sido provisionado, atribua as seguintes permissões:

  • Microsoft Sentinel Contributor no espaço de trabalho para implantar e gerenciar recursos
  • Colaborador do Log Analytics no espaço de trabalho para criar e gerenciar tabelas personalizadas e regras de coleção de dados (DCRs)
  • Colaborador no grupo de recursos para implantar os modelos do ARM durante o teste

Integrar-se ao portal do Defender

Integre seu workspace ao portal do Defender a fim de validar a instalação da solução, garantir a ingestão perfeita na Plataforma de Operações de Segurança Unificada e testar de ponta a ponta antes da publicação. Para obter mais informações, consulte o Microsoft Sentinel no portal do Microsoft Defender.

Criar uma solução

Uma solução Microsoft Sentinel é uma pasta de arquivos de conteúdo e conectores que a ferramenta de empacotamento monta em um pacote implantável. Crie a estrutura de pastas, adicione os arquivos de empacotamento e, em seguida, crie cada tipo de conteúdo.

Criar sua estrutura de pastas de solução no GitHub

Para configurar a estrutura de pastas da solução, siga estas etapas:

  1. Crie uma nova ramificação e alterne para ela na bifurcação. Use um nome descritivo como add-<YourSolutionName>-solution:

    git checkout -b add-<YourSolutionName>-solution
    
  2. Crie uma pasta com o nome da solução em Solutions/:

    Solutions/<YourSolutionName>/
    ├── Data/
    │   └── Solution_<YourSolutionName>.json
    ├── SolutionMetadata.json
    ├── ReleaseNotes.md
    ├── Data Connectors/
    ├── Workbooks/
    ├── Analytic Rules/
    ├── Hunting Queries/
    ├── Playbooks/
    └── Parsers/
    
    Arquivo / Pasta Obrigatório Conteúdos
    Data/Solution_<YourSolutionName>.json Obrigatório Manifesto da solução que lista todos os arquivos de conteúdo na solução e impulsiona a ferramenta de criação de pacote
    SolutionMetadata.json Obrigatório Publisher e metadados do marketplace: ID de publisher, ID da oferta, categorias e informações de suporte
    ReleaseNotes.md Obrigatório Tabela de histórico de alterações versionado, obrigatória para cada submissão de pacote
    Data Connectors/ Opcional Arquivos JSON do conector ou código Azure Functions para conectores baseados em função
    Workbooks/ Opcional Arquivos JSON do workbook e capturas de tela de pré-visualização em preto e branco
    Analytic Rules/ Opcional Modelos de regra analítica do YAML
    Hunting Queries/ Opcional Modelos de consulta de busca em YAML
    Playbooks/ Opcional Definições de conectores personalizados dos Aplicativos Lógicos do Azure e arquivos JSON de playbook
    Parsers/ Opcional Definições de função/analisador do YAML Kusto

    As subpastas de conteúdo são opcionais. Crie apenas as pastas que se aplicam à sua solução. Você não precisa incluir todos os tipos de conteúdo, mas atender aos requisitos mínimos de conteúdo melhora sua pontuação de qualidade.

    Para obter um exemplo de uma estrutura de pasta completa, abra as Soluções/ pasta no repositório e navegue por algumas das soluções existentes.

Criar os arquivos de empacotamento da solução

Data/Solution_<YourSolutionName>.json

Este arquivo controla a ferramenta V3 de empacotamento. Ele lista todos os arquivos de conteúdo em sua solução e controla como eles são montados em mainTemplate.json. Cada tipo de conteúdo é uma matriz. Adicione uma entrada por arquivo para cada parte do conteúdo que você tem. Para obter mais informações sobre a ferramenta de empacotamento, consulte Empacotar sua solução.

No exemplo a seguir, a solução tem duas regras analíticas, portanto, a "Analytic Rules" matriz tem duas entradas. Se, por exemplo, você não estiver criando playbooks, remova a chave "Playbooks" do arquivo.

{
  "Name": "Contoso MyProduct",
  "Author": "Contoso - support@contoso.com",
  "Logo": "<img src=\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Logos/contoso.svg\" width=\"75px\" height=\"75px\">",
  "Description": "The Contoso MyProduct solution for Microsoft Sentinel enables you to ingest MyProduct logs into Microsoft Sentinel.",
  "BasePath": "C:/GitHub/Azure-Sentinel/Solutions/Contoso MyProduct",
  "Version": "1.0.0",
  "Metadata": "SolutionMetadata.json",
  "TemplateSpec": true,
  "Data Connectors": [
    "Data Connectors/ContosoMyProduct.json"
  ],
  "Workbooks": [
    "Workbooks/ContosoMyProductWorkbook.json"
  ],
  "Analytic Rules": [
    "Analytic Rules/ContosoMyProductSuspiciousLogin.yaml",
    "Analytic Rules/ContosoMyProductDataExfiltration.yaml"
  ],
  "Hunting Queries": [
    "Hunting Queries/ContosoMyProductThreatHunt.yaml"
  ],
  "Parsers": [
    "Parsers/ContosoMyProduct.yaml"
  ],
  "Playbooks": [
    "Playbooks/ContosoMyProduct-EnrichIncident/azuredeploy.json"
  ]
}
Campo Notes
Name Somente caracteres alfanuméricos e espaços. Sem hifens, sublinhados ou símbolos.
Author Formato: Organization - email@domain.com
Logo A marcação <img> HTML apontando para o SVG do logotipo na URL do GitHub não processada em Logos/. Consulte Adicionar seu logotipo para requisitos de arquivo e regras de validação.
BasePath Seu caminho de repositório local para a pasta da solução. Não é usado em tempo de execução.
Version Deve corresponder SolutionMetadata.json e mainTemplate.json.
TemplateSpec Verifique as soluções existentes no repositório quanto ao valor correto para o tipo de conector.
Matrizes de conteúdo Uma entrada por arquivo. Adicione todos os arquivos para um determinado tipo de conteúdo à matriz. Remova a chave completamente se não houver conteúdo desse tipo. Não deixe uma matriz vazia. Os caminhos são relativos a BasePath.

SolutionMetadata.json

Esse arquivo contém os metadados do marketplace e do editor usados durante a certificação do Partner Center.

{
  "publisherId": "contoso",
  "offerId": "contoso-myproduct-sentinel",
  "firstPublishDate": "2026-06-15",
  "lastPublishDate": "2026-06-15",
  "providers": [
    "Contoso"
  ],
  "categories": {
    "domains": [
      "Security - Threat Intelligence"
    ]
  },
  "support": {
    "name": "Contoso",
    "email": "support@contoso.com",
    "tier": "Partner",
    "link": "https://support.contoso.com"
  }
}

publisherId e offerId vêm da oferta do Partner Center. support.tier deve ser "Partner" para soluções ISV. Para obter valores válidos categories.domains , consulte o catálogo de soluções.

Campo Notes
publisherId Sua ID de publicador do Partner Center.
offerId A ID de oferta do Partner Center. Esse valor é definido quando você cria a oferta no Partner Center e não pode ser alterado após a criação. O valor deve corresponder exatamente à ID da Oferta no Partner Center. Uma incompatibilidade causa falha na certificação. Consulte Criar um pacote de uma solução SIEM para o Microsoft Sentinel para saber como o ID da oferta é criado.
firstPublishDate Data no padrão ISO 8601. Defina uma vez e não altere-a após a publicação inicial.
lastPublishDate Atualize para corresponder a cada nova versão.
providers Matriz de nomes de fornecedor/provedor de produtos.
categories.domains Uma ou mais categorias de domínio do catálogo de soluções.
categories.verticals Verticais opcionais do setor. Omita se não for aplicável.
support.tier "Partner"para ISV, "Microsoft" para Microsoft, "Community" para a comunidade.

ReleaseNotes.md

O ReleaseNotes.md arquivo registra o histórico de alterações da solução. Esse arquivo é validado durante as verificações de PR. As entradas ausentes ou malformadas causam a rejeição de PR.

A tabela deve ter exatamente três colunas com esses nomes de cabeçalho exatos (incluindo os marcadores em negrito):

| **Version** | **Date Modified (DD-MM-YYYY)** | **Change History** |
|---|---|---|
| 1.0.1 | 12-06-2026 | Updated analytic rule query to fix false positives. |
| 1.0.0 | 01-06-2026 | Initial solution release. |

Regras de validação

  • Formato de versão: X.Y.Z não inclua um v prefixo. Todas as três partes são necessárias.
  • As versões são listadas em ordem decrescente, com a mais recente na primeira linha.
  • Formato de data: DD-MM-YYYY com hifens (não YYYY-MM-DD)
  • Os cabeçalhos de coluna devem corresponder exatamente, incluindo os marcadores **bold**
  • A célula Histórico de Alterações não deve estar vazia
  • Adicionar uma nova linha para cada incremento de versão, incluindo correções de erros de digitação

A versão em ReleaseNotes.md deve corresponder à versão em SolutionMetadata.json, em Data/Solution_*.json e ao nome do arquivo ZIP do pacote.

Coloque seu logotipo em Logos/<YourProductName>.svg na raiz do repositório. Faça referência a isso em Data/Solution_<YourSolutionName>.json usando uma tag HTML <img> apontando para a URL bruta do GitHub:

"Logo": "<img src=\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Logos/YourProductName.svg\" width=\"75px\" height=\"75px\">"

O arquivo SVG deve atender aos seguintes requisitos:

Verificação Requisito
Formato de arquivo Somente a extensão .svg. PNG, JPEG ou outros formatos não são permitidos.
Tamanho do arquivo ≤ 5 KB
Atributo style= Não permitido. Remova todos os atributos embutidos style="..." dos elementos.
Atributo cls= Não permitido
Namespace xmlns:xlink Não permitido. Remova do elemento raiz <svg>.
Atributo data-name Não permitido. O Ilustrador adiciona esses atributos como nomes de camada. Eles devem ser removidos.
xlink:href Não permitido. Use caminhos SVG inline em vez de referências de imagens incorporadas.
Marca <title> Não permitido. Remova todos os <title>...</title> elementos.
PNG inserido Não permitido. Todos os <image> elementos que fazem referência a .png arquivos são rejeitados
Valores de elemento id Se algum id="..." atributo estiver presente, cada valor deverá ser uma UUID válida (por exemplo, id="a1b2c3d4-e5f6-4789-abcd-0123456789ab"). IDs legíveis por humanos, como id="Layer_1", falham. Todos os IDs devem ser únicos no arquivo.

Cuidado

Arquivos SVG exportados diretamente do Adobe Illustrator, Figma ou Inkscape sem limpeza quase sempre falham na validação. Os artefatos comuns de exportação que devem ser removidos incluem o seguinte:

  • style="stroke: none; fill: rgb(0,0,0); ..." Em cada elemento: substitua por atributos diretos fill e stroke e ou remova se for padrão
  • data-name="Layer 1": atributo de nome de camada do Illustrator; remover de cada elemento <g>
  • xmlns:xlink="http://www.w3.org/1999/xlink": Na raiz <svg>; remova o atributo inteiro
  • <title>Layer 1</title>: no primeiro <g>; remova a marcação
  • IDs não-GUID como id="Layer_1" ou id="cls-1": Substitua por um UUID ou remova completamente o id atributo se ele não for referenciado

Um logotipo limpo usa somente os atributos fill e stroke diretamente em elementos path, sem atributos id, a menos que façam referência a um elemento <defs>. Para um exemplo válido mínimo, veja Logos/XBOW.svg.

Criar um conector de dados

Se você estiver criando um conector usando o fluxo de trabalho do agente de IA, consulte Criar conectores personalizados usando o agente de IA no Microsoft Sentinel em vez de seguir as etapas abaixo.

Escolha seu tipo de conector

Microsoft Sentinel dá suporte a vários tipos de conector, muitos dos quais usam o CCF (Codeless Connector Framework). Escolha aquele que melhor se ajuste à sua fonte de dados e à experiência desejada do cliente.

Tipo de conector Mais adequado para Orientações
Sondagem do CCF APIs REST que seu conector chama periodicamente. Totalmente SaaS, sem nenhum agente ou VM necessário. Inclui o monitoramento de integridade interno e o Suporte da Microsoft completo. Criar um conector sem código para Microsoft Sentinel
Enviar CCF por push As fontes de dados que enviam logs por push para um ponto de extremidade do Microsoft Sentinel. Conectores CCF enviados por push do Microsoft Sentinel (versão prévia)
blob CCF Fontes de dados que gravam logs em Armazenamento de Blobs do Azure ou Azure Data Lake Storage. Configurar o conector Armazenamento do Azure
CCF GCP Fontes de dados que gravam logs no Google Cloud Storage. Referência do conector de dados GCP
CEF Dispositivos locais que emitem logs no formato Common Event Format. Os dados são gravados na tabela CommonSecurityLog conhecida. Conectar logs formatados por CEF
Syslog Dispositivos locais que só podem emitir Syslog bruto. Menos recomendado; as consultas exigem análise sintática em KQL. Coletar fontes de dados do syslog
Azure Functions(herdado) APIs REST quando o CCF não é viável devido a limitações técnicas. Use apenas como último recurso. Entre em contato com azuresentinelpartner@microsoft.com antes de criar a fim de confirmar a elegibilidade. Modelo de conector do Azure Functions
Criar a definição do conector

As etapas de build detalhadas são específicas para cada tipo de conector. As etapas de build detalhadas são específicas para cada tipo de conector. Siga as diretrizes para o tipo escolhido na tabela de tipos de conector. .

Use as soluções a seguir no repositório Azure-Sentinel como referências para cada tipo de conector.

Tipo de conector Exemplo de referência
Sondagem do CCF Conector de consulta CCF do SentinelOne
Enviar CCF por push Conector para Enviar CCF por push do Jamf Protect
Blob do CCF Conector de blobs do Cloudflare CCF
CCF GCP Conector de logs de auditoria do Google Cloud Platform
CEF/Syslog Conectores cisco ISE CEF e Syslog

Quando o JSON do conector estiver concluído, coloque-o na subpasta da pasta da solução e nomeie-o Data Connectors/ProviderNameApplianceName.json (sem espaços).

Testar seu conector

Importante

Antes de criar pastas de trabalho, regras analíticas e outros conteúdos, verifique se o conector está enviando dados para a tabela esperada e se as consultas retornam resultados. É mais fácil capturar problemas de fluxo de dados e esquema neste estágio do que depois de criar conteúdo dependente sobre eles. Consulte a seção Testar seu pacote para saber como empacotar e implantar seu conector em um workspace de desenvolvimento.

Criar seu conteúdo

Além do conector de dados, enriqueça sua solução com conteúdo SIEM que ajuda os clientes a obter valor imediato de seus dados. O conteúdo SIEM adicional inclui:

  • Pastas de Trabalho
  • Regras analíticas
  • Consultas de busca
  • Playbooks
  • Analisadores

Esse conteúdo é opcional, mas recomendado. Para obter requisitos mínimos e pontuação de qualidade, consulte Microsoft Sentinel diretrizes de qualidade da solução.

Criar pastas de trabalho

Workbooks são painéis e visualizações que ajudam os clientes a entender seus dados. Para criar uma pasta de trabalho, consulte Criar pastas de trabalho para Microsoft Sentinel.

Consulte os seguintes exemplos de referência no repositório Azure-Sentinel para obter diretrizes sobre design e layout da pasta de trabalho:

Criar regras analíticas

As regras analíticas são modelos que detectam ameaças em seus dados. Cada regra é um arquivo YAML. Para criar uma regra analítica, consulte Criar regras analíticas para Microsoft Sentinel.

Consulte os seguintes exemplos de referência no repositório Azure-Sentinel para obter diretrizes sobre design e layout de regra analítica:

Criar consultas de busca

Consultas de busca são modelos que ajudam os clientes a procurar ameaças proativamente em seus dados. Elas aparecem na folha Busca para que os analistas as executem manualmente. Elas compartilham a mesma estrutura YAML que as regras analíticas, mas não são automatizadas; Campos de execução agendada não se aplicam e causam falha na revisão se incluídos. Para criar uma consulta de busca, consulte Criar consultas de busca para Microsoft Sentinel.

Consulte os exemplos de referência a seguir no repositório Azure-Sentinel para obter orientação sobre o design e o layout da consulta de busca:

Criar playbooks

Os playbooks são fluxos de trabalho de resposta automatizados que ajudam os clientes a responder a ameaças aos dados. Cada playbook é um fluxo de trabalho do Aplicativos Lógicos do Azure exportado como um modelo ARM. Os dois arquivos necessários são azuredeploy.json e readme.md, colocados em Solutions/<YourSolutionName>/Playbooks/<PlaybookName>/. Para criar um guia estratégico, consulte Criar guias estratégicos para Microsoft Sentinel.

Consulte os seguintes exemplos de referência no repositório Azure-Sentinel para obter diretrizes sobre design e layout de guia estratégico:

Criar analisadores

Um parser é uma função Kusto salva em seu workspace do Log Analytics que atua sobre os dados de log brutos e os normaliza em campos limpos e consultáveis. Em vez de escrever a lógica de extração de campo em cada consulta, os clientes chamam o alias do analisador uma vez e obtêm resultados estruturados. Os analisadores são definidos como arquivos YAML e implantados automaticamente quando um cliente instala sua solução. Para criar um analisador, consulte Criar analisadores para Microsoft Sentinel.

Consulte os seguintes exemplos de referência no repositório Azure-Sentinel para obter diretrizes sobre design e layout do analisador:

Teste seu pacote

O teste segue o pacote → implantação → habilitar → ciclo de validação . O ciclo é o mesmo, independentemente da quantidade de conteúdo que você criou. A ferramenta de empacotamento V3 converte seus arquivos de solução em um modelo arm implantável (mainTemplate.json). Implante o modelo em um workspace de desenvolvimento Microsoft Sentinel, habilite cada tipo de conteúdo e confirme se ele funciona antes de enviar uma PR.

Repita esse ciclo à medida que você cria. Você não precisa concluir todos os tipos de conteúdo antes de começar a testar. Empacote e implante à medida que concluir cada tipo de conteúdo, verifique se funciona e depois adicione mais conteúdo e reempacote.

Se sua solução incluir um conector de dados, teste o conector primeiro antes de criar conteúdo dependente, como regras analíticas e pastas de trabalho. Todo o conteúdo do SIEM depende de os dados chegarem às tabelas corretas com o esquema correto. Se o conector não estiver funcionando ou o esquema não corresponder ao que suas regras esperam, você precisará refazer o conteúdo dependente. Verifique se os dados estão fluindo primeiro para economizar tempo.

Note

Somente conectores de consulta do CCF: antes de fazer o empacotamento, você pode validar a configuração de consulta do conector sem implantar em um espaço de trabalho ativo. Na extensão Microsoft Sentinel para Visual Studio Code, clique com o botão direito do mouse no arquivo de definição do conector e selecione Testar Conector. Consulte a Etapa 4: Validar a configuração do conector para obter detalhes.

Empacotar sua solução

Depois de desenvolver e testar os componentes da solução Microsoft Sentinel, o empacotamento é a próxima etapa crítica no ciclo de vida da solução. A ferramenta de empacotamento consolida todo o conteúdo da solução – conectores de dados, analisadores, workbooks, regras analíticas, consultas de busca, conectores personalizados dos Aplicativos Lógicos do Azure e playbooks – em um formato padronizado para a implantação. Para obter mais informações, consulte Empacotar uma solução SIEM para Microsoft Sentinel.

Entrada no mercado

Quando você seleciona Ir ao vivo, a solução passa por uma verificação de certificação final antes de se tornar publicamente disponível. Após a certificação, a solução é exibida no hub de conteúdo do Microsoft Sentinel e fica visível no espaço de trabalho do Sentinel de cada locatário de cliente em Hub de conteúdo. Também é possível descobrir no Azure Marketplace. A solução agora está disponível para todos os clientes Microsoft Sentinel. Para mais informações, veja Publicar soluções SIEM para Microsoft Sentinel.

A partir desse ponto, qualquer atualização na solução, como alterações de conteúdo, correções de bugs e atualizações de versão, requer uma nova PR no GitHub, uma nova versão do pacote e um novo envio ao Partner Center com o arquivo zip atualizado. Para acompanhar o status pós-publicação e problemas de suporte, consulte Acompanhar sua solução após a publicação no Partner Center.