Desenvolver uma solução SIEM para Microsoft Sentinel

As soluções Microsoft Sentinel permitem que fornecedores de software independentes (ISVs) e parceiros agrupem um conector de dados com conteúdos de segurança relacionados, como cadernos de exercícios, regras analíticas, consultas de caça, playbooks e parsers num único pacote instalável. Os clientes podem então descobrir e implementar estas soluções a partir do Microsoft Sentinel Content Hub e do Azure Marketplace.

Note

Se é um ISV a construir uma integração com o Microsoft Sentinel, a equipa do Microsoft App Assure poderá ajudar durante todo o processo. Para envolver a equipa, envie um email para azuresentinelpartner@microsoft.com.

Fase Activities
Aprender Aprende sobre o Sentinel, identifica o que construir, cria contas de editora, configura o teu ambiente
Build Configure o seu ambiente, crie o seu conector e o conteúdo da sua solução
Test Empacota a tua solução, testa-a, submete um pull request e resolve o feedback
Publicar Crie uma oferta no Centro de Parceiros, teste a pré-visualização e publique
Prévia Informar os clientes, resolver problemas de suporte, monitorizar durante quatro semanas
Ir ao Mercado Remova a bandeira de pré-visualização, ouça os clientes, melhore a sua solução

Learn

Antes de começar a construir, complete os seguintes passos:

Build

Na fase de construção, configuras o teu ambiente de desenvolvimento e depois crias o teu conector e o conteúdo da solução.

Prepare o seu ambiente

Antes de construir, configure o seu ambiente de desenvolvimento para poder criar, testar e submeter conteúdo da solução.

Fazer um fork e clonar o repositório

Para fazer um fork e clonar o repositório Azure-Sentinel, siga estes passos:

  1. No GitHub, vai ao repositórioAzure-Sentinel e seleciona Fork.

  2. Clone o seu fork para a sua máquina local:

    git clone https://github.com/<your-github-username>/Azure-Sentinel.git
    cd Azure-Sentinel
    
  3. Adiciona o remoto upstream para poderes ir buscar as alterações mais recentes:

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

Configura um espaço de trabalho de desenvolvimento/teste

Precisa de um espaço de trabalho Microsoft Sentinel funcional para desenvolver e validar o seu conector e conteúdo antes de submeter. Veja Onboard Microsoft Sentinel.

Depois de o seu espaço de trabalho ser provisionado, atribua as seguintes permissões:

  • Microsoft Sentinel Contributor no espaço de trabalho para implementar e gerir recursos
  • Log Analytics Contributor no espaço de trabalho para criar e gerir tabelas personalizadas e regras de recolha de dados (DCRs)
  • Contribuidor no grupo de recursos para implementar modelos ARM durante os testes

Aderir ao portal do Defender

Integre o seu espaço de trabalho no portal Defender para validar a instalação da sua solução, garantir uma ingestão fluida na Plataforma Unificada de Operações de Segurança e testar de ponta a ponta antes de publicar. Para obter mais informações, consulte Microsoft Sentinel no portal do Microsoft Defender.

Crie uma solução

Uma solução Microsoft Sentinel é uma pasta com ficheiros de conector e conteúdo que a ferramenta de empacotamento reúne num pacote implantável. Cria a estrutura de pastas, adiciona os ficheiros de embalagem e depois constrói cada tipo de conteúdo.

Crie a estrutura de pastas da sua solução no GitHub

Para configurar a estrutura de pastas da sua solução, siga estes passos:

  1. Cria uma nova ramificação na tua fork e muda para ela. Use um nome descritivo como add-<YourSolutionName>-solution:

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

    Solutions/<YourSolutionName>/
    ├── Data/
    │   └── Solution_<YourSolutionName>.json
    ├── SolutionMetadata.json
    ├── ReleaseNotes.md
    ├── Data Connectors/
    ├── Workbooks/
    ├── Analytic Rules/
    ├── Hunting Queries/
    ├── Playbooks/
    └── Parsers/
    
    Ficheiro / Pasta Obrigatório Conteúdos
    Data/Solution_<YourSolutionName>.json Obrigatório Manifesto da solução que lista todos os ficheiros de conteúdo da solução e gere a ferramenta de criação de pacotes
    SolutionMetadata.json Obrigatório Metadados do Publisher e do marketplace: ID do publisher, ID da oferta, categorias e informações de suporte
    ReleaseNotes.md Obrigatório Tabela de histórico de alterações versionada, obrigatória para cada submissão de pacotes
    Data Connectors/ Opcional Ficheiros JSON de conectores, ou código Funções do Azure para conectores baseados em funções
    Workbooks/ Opcional Ficheiros JSON do caderno de exercícios e capturas de ecrã de pré-visualização a preto e branco
    Analytic Rules/ Opcional Modelos de regras analíticas YAML
    Hunting Queries/ Opcional Modelos YAML de consultas de pesquisa
    Playbooks/ Opcional Ficheiros JSON Playbook e definições personalizadas de conectores do Azure Logic Apps
    Parsers/ Opcional Definições de função e de analisador do Kusto em YAML

    As subpastas de conteúdo são opcionais. Cria apenas as pastas que se aplicam à tua solução. Não é obrigado a incluir todos os tipos de conteúdo, mas cumprir os requisitos mínimos de conteúdo melhora a sua pontuação de qualidade.

    Para um exemplo de uma estrutura completa de pastas, abra a pasta Solutions/ no repositório e explore algumas das soluções existentes.

Criar os ficheiros de empacotamento da solução

Data/Solution_<YourSolutionName>.json

Este ficheiro controla a ferramenta de empacotamento do V3. Lista todos os ficheiros de conteúdo da sua solução e controla como são organizados em mainTemplate.json. Cada tipo de conteúdo é um array. Adiciona uma entrada por ficheiro para cada conteúdo que tiveres. Para mais informações sobre a ferramenta de embalagem, consulte Embalar a sua solução.

No exemplo seguinte, a solução tem duas regras analíticas, pelo que o "Analytic Rules" array tem duas entradas. Se, por exemplo, não estiveres a criar quaisquer playbooks, remove completamente a chave "Playbooks" do ficheiro.

{
  "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 Apenas caracteres alfanuméricos e espaços. Sem hífens, sublinhados ou símbolos.
Author Formato: Organization - email@domain.com
Logo Etiqueta HTML <img> apontando para o seu logótipo SVG no URL bruto do GitHub sob Logos/. Consulte Adicionar o seu logótipo para requisitos de ficheiro e regras de validação.
BasePath O caminho local do repositório 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 para o valor correto para o tipo de conector.
Arrays de conteúdo Uma entrada por ficheiro. Adicione todos os ficheiros de um determinado tipo de conteúdo ao seu array. Remova a chave por completo se não tiver conteúdo desse tipo. Não deixes um array vazio. Os caminhos são relativos a BasePath.

SolutionMetadata.json

Este ficheiro 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 provêm da sua oferta no Partner Center. support.tier deve ser "Partner" para soluções ISV. Para valores válidos categories.domains , consulte o catálogo de soluções.

Campo Notes
publisherId O seu ID de publicador do Partner Center.
offerId O seu Centro de Parceiros oferece ID. Este valor é definido quando cria a oferta no Centro de Parceiros e não pode ser alterado após a criação. O valor deve corresponder exatamente ao ID da Oferta no Centro de Parceiros. Uma incompatibilidade causa falhas na certificação. Consulte Package a SIEM solution for Microsoft Sentinel para saber como o ID da oferta é criado.
firstPublishDate Data ISO 8601. Define-o uma única vez e não o alteres após a publicação inicial.
lastPublishDate Atualiza para corresponder a cada nova versão.
providers Variedade de nomes de fornecedores/fornecedores de produtos.
categories.domains Uma ou mais categorias de domínio do catálogo de soluções.
categories.verticals Setores opcionais da indústria. Omita se não for o caso.
support.tier "Partner" para ISV, "Microsoft" para Microsoft, "Community" para a comunidade.

ReleaseNotes.md

O ReleaseNotes.md ficheiro regista o histórico de alterações da sua solução. Este ficheiro é validado durante as verificações de PR. Entradas em falta ou mal formadas causam rejeição de relações públicas.

A tabela deve ter exatamente três colunas com estes nomes de cabeçalho exatos (incluindo os marcadores a 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 da versão: X.Y.Z Não inclua prefixo v . São obrigatórias as três partes.
  • As versões estão listadas por ordem decrescente, com a mais recente na linha em primeiro lugar
  • Formato de data: DD-MM-YYYY com hífens (não YYYY-MM-DD)
  • Os cabeçalhos das colunas devem corresponder exatamente, incluindo os **bold** marcadores
  • A célula do Histórico de Alterações não pode estar vazia
  • Adicione uma nova linha para cada aumento de versão, incluindo correções de erros tipográficos

A versão em ReleaseNotes.md deve corresponder à versão em SolutionMetadata.json, Data/Solution_*.json, e ao nome do ficheiro zip do Pacote.

Coloque o seu logótipo na raiz Logos/<YourProductName>.svg do repositório. Faça referência ao mesmo em Data/Solution_<YourSolutionName>.json utilizando uma tag HTML <img> que aponte 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 ficheiro SVG deve cumprir os seguintes requisitos:

Marcar Requisito
Formato de ficheiro .svg Apenas extensão. PNG, JPEG ou outros formatos não são permitidos.
Tamanho dos ficheiros ≤ 5 KB
Atributo style= Não permitido. Remova todos os atributos em linha style="..." dos elementos.
Atributo cls= Não permitido
xmlns:xlink espaço de nomes Não permitido. Remova do elemento de raiz <svg>.
Atributo data-name Não permitido. O Illustrator adiciona estes atributos como nomes de camadas. Têm de ser removidos.
xlink:href Não permitido. Use caminhos SVG em linha em vez de referências de imagem embutidas.
<title> etiqueta Não permitido. Remova quaisquer elementos <title>...</title>.
PNG incorporado Não permitido. Quaisquer <image> elementos que .png referenciam ficheiros são rejeitados
Valores dos elementos id Se houver atributos id="..." presentes, cada valor deve ser um UUID válido (por exemplo, id="a1b2c3d4-e5f6-4789-abcd-0123456789ab"). IDs legíveis por humanos como id="Layer_1" falham. Todos os IDs devem ser únicos dentro do ficheiro.

Atenção

Ficheiros SVG exportados diretamente do Adobe Illustrator, Figma ou Inkscape sem limpeza quase sempre falham na validação. Artefactos de exportação comuns que devem ser removidos incluem os seguintes:

  • style="stroke: none; fill: rgb(0,0,0); ..." em cada elemento: substitua pelos atributos diretos fill e stroke, ou remova se for o valor predefinido
  • data-name="Layer 1": Atributo de nome da camada do Illustrator; remover de todos os elementos <g>
  • xmlns:xlink="http://www.w3.org/1999/xlink": Na raiz <svg>; remover o atributo completo
  • <title>Layer 1</title>: Dentro do primeiro <g>; remova a etiqueta
  • IDs não-GUID como id="Layer_1" ou id="cls-1": Substituir por um UUID ou remover completamente o id atributo se não for referenciado

Um logótipo limpo usa apenas fill atributos e stroke diretamente sobre elementos de caminho, sem id atributos a não ser que faça referência a um <defs> elemento. Para um exemplo mínimo válido, veja Logos/XBOW.svg.

Construir um conector de dados

Se estiver a construir um conector usando o fluxo de trabalho do agente de IA, veja Criar conectores personalizados usando agente de IA no Microsoft Sentinel em vez de seguir os passos abaixo.

Escolha o tipo de ligação

O Microsoft Sentinel suporta vários tipos de conectores, muitos dos quais utilizam o Codeless Connector Framework (CCF). Escolha aquele que melhor se adequa à sua fonte de dados e à experiência do cliente desejado.

Tipo de conector Melhor para Orientações
Sondagem CCF APIs REST que o seu conector invoca de acordo com uma agenda. Totalmente SaaS, sem necessidade de agente ou VM. Inclui monitorização de saúde integrada e suporte completo para a Microsoft. Criar um conector sem código para Microsoft Sentinel
Envio do CCF Fontes de dados que enviam registos para um endpoint do Microsoft Sentinel. Conectores de envio CCF do Microsoft Sentinel (pré-visualização)
CCF blob Fontes de dados que escrevem logs para Armazenamento de Blobs do Azure ou Azure Data Lake Storage. Configurar o conector Armazenamento do Azure
CCF GCP Fontes de dados que escrevem registos no Google Cloud Storage. Referência do conector de dados GCP
CEF Dispositivos locais que emitem registos no Formato Comum de Eventos. Os dados ficam na tabela bem conhecida CommonSecurityLog . Ligue registos com formato CEF
Syslog Dispositivos locais que só podem emitir Syslog em bruto. Menos preferido; as consultas requerem análise KQL. Recolha de fontes de dados de syslog
Funções do Azure(legacy) APIs REST quando o CCF não é viável devido a limitações técnicas. Use apenas como último recurso. Contacte com azuresentinelpartner@microsoft.com antes de construir para confirmar se é elegível. Modelo de conector Funções do Azure
Criar a definição do conector

Os passos detalhados de construção são específicos para cada tipo de conector. Os passos detalhados de construção são específicos para cada tipo de conector. Siga as orientações para o tipo escolhido na tabela de tipos de conectores. .

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

Tipo de conector Exemplo de referência
Sondagens CCF Conector de sondagem CCF SentinelOne
Envio do CCF Conector de empurrão Jamf Protect CCF
bloco CCF Conector de blobs Cloudflare CCF
CCF GCP Conector de registos de auditoria da Google Cloud Platform
CEF / Syslog Conectores Cisco ISE CEF e Syslog

Quando o JSON do seu conector estiver completo, coloque-o na Data Connectors/ subpasta da sua pasta de soluções e nomeie-o ProviderNameApplianceName.json (sem espaços).

Teste o seu conector

Importante

Antes de construir livros de exercícios, regras analíticas e outros conteúdos, verifique se o seu conector está a enviar dados para a tabela esperada e que as consultas devolvem resultados. É mais fácil detetar problemas de fluxo de dados e esquemas nesta fase do que depois de ter construído conteúdo dependente por cima deles. Consulte a secção Teste o seu pacote para saber como empacotar e implementar o seu conector num espaço de trabalho de desenvolvimento.

Constrói o teu conteúdo

Para além do conector de dados, enriqueça a sua solução com conteúdo SIEM que ajude os clientes a obter valor imediato dos seus dados. Conteúdos SIEM adicionais incluem:

  • Livros
  • Regras analíticas
  • Consultas de pesquisa
  • Playbooks
  • Analisadores

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

Criar cadernos de exercícios

Os cadernos de trabalho são painéis e visualizações que ajudam os clientes a compreender os seus dados. Para criar um livro de exercícios, consulte Criar cadernos de exercícios para Microsoft Sentinel.

Consulte os seguintes exemplos de referência no repositório Azure-Sentinel para orientações sobre o design e o layout do caderno de exercícios:

Criar regras analíticas

As regras analíticas são modelos que detetam ameaças nos seus dados. Cada regra é um ficheiro YAML. Para criar uma regra analítica, veja Criar regras analíticas para Microsoft Sentinel.

Consulte os seguintes exemplos de referência no repositório Azure-Sentinel para orientações sobre o desenho e disposição de regras analíticas:

Criar consultas de caça

As consultas de caça são modelos que ajudam os clientes a procurar proativamente ameaças nos seus dados. Aparecem na lâmina de caça para os analistas executarem manualmente. Partilham 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 caça, veja Criar consultas de caça para Microsoft Sentinel.

Consulte os seguintes exemplos de referência no repositório Azure-Sentinel para orientações sobre o design e layout de consultas de caça:

Crie manuais de jogadas

Os playbooks são fluxos de trabalho automatizados de resposta que ajudam os clientes a responder a ameaças aos seus dados. Cada manual de procedimentos é um fluxo de trabalho do Azure Logic Apps exportado como um modelo ARM. Os dois ficheiros obrigatórios são azuredeploy.json e readme.md, colocados em Solutions/<YourSolutionName>/Playbooks/<PlaybookName>/. Para criar um playbook, consulte Criar playbooks para Microsoft Sentinel.

Consulte os seguintes exemplos de referência no repositório de Azure-Sentinel para orientações sobre o design e o layout do playbook:

Criar analisadores

Um parser é uma função Kusto guardada no seu espaço de trabalho Log Analytics que se coloca em frente a dados brutos de log e os normaliza em campos limpos e consultáveis. Em vez de escrever lógica de extração de campos em cada consulta, os clientes chamam o alias do parser uma vez e obtêm resultados estruturados. Os analisadores são definidos como ficheiros YAML e implementados automaticamente quando um cliente instala a sua solução. Para criar um parser, veja Criar analisadores para Microsoft Sentinel.

Consulte os seguintes exemplos de referência no repositório Azure-Sentinel para orientações sobre design e layout de parser:

Testa o teu pacote

Os testes seguem o pacote → implementação → ativar → ciclo de validação . O ciclo é o mesmo independentemente da quantidade de conteúdo que tenhas construído. A ferramenta de empacotamento V3 converte os seus ficheiros de solução num template ARM deployable (mainTemplate.json). Implemente o modelo num espaço de trabalho de desenvolvimento do Microsoft Sentinel, ative cada tipo de conteúdo e confirme que funciona antes de submeter uma PR.

Repete este ciclo à medida que vais construindo. Não precisas de terminar todos os tipos de conteúdo antes de começares a testar. Empacota e distribui à medida que completas cada tipo de conteúdo, verifica se funciona, depois adiciona mais conteúdo e reembala.

Se a sua solução incluir um conector de dados, teste primeiro o conector antes de construir conteúdos dependentes como regras analíticas e livros de exercícios. Todo o conteúdo SIEM depende de os dados fluírem para as tabelas certas com o esquema correto. Se o conector não estiver a funcionar ou o esquema não corresponder ao que as tuas regras esperam, terás de refazer o conteúdo dependente. Certifica-te primeiro de que os dados estão a fluir para poupar tempo.

Note

Apenas conectores de sondagem CCF: Antes de empacotar, pode validar a configuração do seu sondamento de conectores sem ter de implementar para um espaço de trabalho ativo. Na extensão Microsoft Sentinel para Visual Studio Code, clique com o botão direito no ficheiro de definição do seu conector e selecione Conector de Teste. Veja o Passo 4: Valide a configuração do conector para mais detalhes.

Empacota a tua solução

Depois de desenvolver e testar os componentes da sua solução Microsoft Sentinel, a embalagem é o próximo passo crítico no ciclo de vida da solução. A ferramenta de empacotamento consolida todo o conteúdo da sua solução — conectores de dados, analisadores, livros, regras analíticas, consultas de pesquisa, conectores personalizados do Azure Logic Apps e playbooks — num formato padronizado para implementação. Para mais informações, consulte Pacote de solução SIEM para Microsoft Sentinel.

Ir ao mercado

Quando seleciona Go live, a solução passa por uma verificação final de certificação antes de se tornar publicamente disponível. Após a certificação, a solução é apresentada no hub de conteúdo do Microsoft Sentinel e fica visível no espaço de trabalho do Sentinel de cada cliente, em Content hub. Também é possível descobrir no Azure Marketplace. A solução está agora disponível para todos os clientes da Microsoft Sentinel. Para mais informações, consulte Publicar soluções SIEM para Microsoft Sentinel.

A partir deste ponto, qualquer atualização da solução, como alterações de conteúdo, correções de bugs e aumentos de versão, requer um novo PR no GitHub, uma nova versão do pacote e uma nova submissão ao Partner Center com o zip atualizado. Para acompanhar o estado pós-publicação e questões de suporte, consulte Acompanhar a sua solução após a publicação no Centro de Parceiros.