Compartilhar via


Personalizar implantações de repositório (Visualização Pública)

Há duas maneiras principais de personalizar a implantação do conteúdo do repositório para espaços de trabalho do Microsoft Sentinel. Cada método usa arquivos e sintaxe diferentes, portanto, considere esses exemplos para começar.

Método de personalização Opções de implantação abordadas
Fluxo de trabalho do GitHub
Pipeline de DevOps
Personalizar o gatilho de implantação da conexão
Personalizar o caminho de implantação
Habilitação de implantações inteligentes
Arquivos de configuração Controlar a ordem priorizada de suas implantações de conteúdo
Escolha excluir arquivos de conteúdo específicos de implantações
Dimensionar implantações em diferentes workspaces mapeando arquivos de parâmetro para arquivos de conteúdo específicos

Importante

O recurso de Repositórios do Microsoft Sentinel está atualmente em VERSÃO PRÉVIA. Consulte os Termos de Uso Complementares para Versões Prévias do Microsoft Azure para obter termos mais legais que se aplicam aos recursos do Azure que estão em versão beta, versão prévia ou ainda não lançados em disponibilidade geral.

Pré-requisitos

Para personalizar uma implantação de repositórios, uma conexão de repositório deve existir. Para obter mais informações sobre como criar a conexão, consulte Implantar conteúdo personalizado a partir de seu repositório. Depois que a conexão é feita, os seguintes pré-requisitos se aplicam:

  • Acesso de colaborador ao seu repositório do GitHub ou acesso de Administrador do Projeto ao seu repositório do Azure DevOps
  • Ações habilitadas para GitHub e pipelines habilitados para Azure DevOps
  • Verifique se os arquivos de conteúdo personalizados que você deseja implantar em seus workspaces estão em um formato com suporte. Para obter formatos com suporte, consulte Planejar o conteúdo do repositório.

Para obter mais informações sobre tipos de conteúdo implantáveis, consulte Validar seu conteúdo.

Personalizar o fluxo de trabalho ou o pipeline

O fluxo de trabalho padrão implanta somente conteúdos modificados desde a última implantação com base em commits no repositório. Personalize para configurar diferentes gatilhos de implantação ou implantar conteúdo exclusivamente de uma pasta raiz específica.

Selecione uma das seguintes guias, dependendo do tipo de conexão:

Para personalizar o fluxo de trabalho de implantação do GitHub:

  1. No GitHub, vá para o repositório e localize o fluxo de trabalho no diretório .github/workflows.

    O arquivo de fluxo de trabalho é o arquivo YML que começa com sentinel-deploy-xxxxx.yml. Abra-o e o nome do fluxo de trabalho é mostrado na primeira linha com a seguinte convenção de nomenclatura padrão: Deploy Content to <workspace-name> [<deployment-id>].

    Por exemplo: name: Deploy Content to repositories-demo [xxxxx-dk5d-3s94-4829-9xvnc7391v83a]

  2. Selecione o botão de lápis na parte superior direita da página para abrir o arquivo para edição e, em seguida, modifique a implantação da seguinte maneira:

    • Para modificar o gatilho de implantação, atualize a seçãoon no código, que descreve o evento que dispara o fluxo de trabalho a ser executado.

      Por padrão, essa configuração é definida como on: push, o que significa que o fluxo de trabalho é disparado a qualquer push para a ramificação conectada, incluindo modificações no conteúdo existente e adições de novo conteúdo ao repositório. Por exemplo:

      on:
          push:
              branches: [ main ]
              paths:
              - `**`
              - `!.github/workflows/**` # this filter prevents other workflow changes from triggering this workflow
              - `.github/workflows/sentinel-deploy-<deployment-id>.yml`
      

      Altere essas configurações, por exemplo, para agendar o fluxo de trabalho para ser executado periodicamente ou para combinar diferentes eventos de fluxo de trabalho.

      Para obter mais informações, consulte a Documentação do GitHub sobre como configurar eventos de fluxo de trabalho.

    • Para desabilitar implantações inteligentes: o comportamento das implantações inteligentes é separado do gatilho de implantação discutido. Acesse a seção jobs do fluxo de trabalho. Alterne o valor padrão do smartDeployment de true para false. Depois que essa alteração for confirmada, a funcionalidade de implantações inteligentes será desativada, e todas as implantações futuras dessa conexão reimplantarão todos os arquivos de conteúdo relevantes do repositório nos workspaces conectados.

    • Para modificar o caminho de implantação:

      Na configuração padrão mostrada para a seção on, os curingas (**) na primeira linha da seção paths indicam que a ramificação inteira está no caminho para os gatilhos de implantação.

      Essa configuração padrão significa que um fluxo de trabalho de implantação é disparado sempre que o conteúdo é enviado para qualquer parte do branch.

      Posteriormente no arquivo, a seção jobs inclui a seguinte configuração padrão: directory: '${{ github.workspace }}'. Essa linha indica que toda a ramificação do GitHub está no caminho para a implantação de conteúdo, sem filtrar nenhum caminho de pasta.

      Para implantar o conteúdo somente de um caminho de pasta específico, adicione-o à configuração paths e directory. Por exemplo, para implantar o conteúdo somente de uma pasta raiz chamada SentinelContent, atualize seu código da seguinte maneira:

      paths:
      - `SentinelContent/**`
      - `!.github/workflows/**` # this filter prevents other workflow changes from triggering this workflow
      - `.github/workflows/sentinel-deploy-<deployment-id>.yml`
      
      ...
          directory: '${{ github.workspace }}/SentinelContent'
      

Para obter mais informações, consulte a Documentação do GitHub sobre GitHub Actions e edição dos fluxos de trabalho do GitHub.

Importante

Tanto no GitHub quanto no Azure DevOps, certifique-se de manter o caminho do gatilho e os diretórios do caminho de implantação consistentes.

Escalar suas implantações com arquivos de parâmetro

Em vez de passar parâmetros como valores embutidos em seus arquivos de conteúdo, considere usar um arquivo de parâmetro Bicep ou um arquivo JSON que contenha os valores dos parâmetros. Em seguida, mapeie esses arquivos de parâmetro nos arquivos de conteúdo associados do Microsoft Sentinel para escalar melhor suas implantações em diferentes workspaces.

Há várias maneiras de mapear arquivos de parâmetro para os arquivos de conteúdo. Tenha em mente que os arquivos de parâmetro Bicep só dão suporte a modelos de arquivo Bicep, mas os arquivos de parâmetro JSON dão suporte a ambos. O pipeline de implantação de repositórios considera os arquivos de parâmetro na seguinte ordem:

Um diagrama mostrando a precedência de mapeamentos de arquivo de parâmetro.

  1. Há um mapeamento em sentinel-deployment.config?
    Para obter mais informações, consulte Personalizar a configuração de conexão.

  2. Há um arquivo de parâmetro mapeado pelo espaço de trabalho? Sim, os arquivos de conteúdo estão no mesmo diretório com um arquivo de parâmetro mapeado por workspace que corresponde a um desses padrões:
    .<WorkspaceID>.bicepparam
    .parameters-<WorkspaceID>.json

  3. Há um arquivo de parâmetro padrão? Sim, os arquivos de conteúdo estão no mesmo diretório com um arquivo de parâmetro correspondente a um desses padrões:
    .bicepparam
    .parameters.json

Evite conflitos com várias implantações de workspace mapeando os arquivos de parâmetro por meio do arquivo de configuração ou especificando a ID do workspace no nome do arquivo.

Importante

Depois que uma correspondência de arquivo de parâmetro for determinada com base na precedência de mapeamento, o pipeline ignorará todos os mapeamentos restantes.

Modificar o arquivo de parâmetro mapeado listado em sentinel-deployment.config dispara a implantação do arquivo de conteúdo emparelhado correspondente. Adicionar ou modificar um arquivo de parâmetro mapeado por workspace ou um arquivo de parâmetro padrão também dispara uma implantação dos arquivos de conteúdo emparelhados junto com os parâmetros recém-modificados, a menos que exista um mapeamento de parâmetros de precedência mais alta. Outros arquivos de conteúdo não serão implantados, desde que o recurso de implantações inteligentes ainda esteja habilitado no arquivo de definição de fluxo de trabalho/pipeline.

Personalizar sua configuração de conexão

O script de implantação para repositórios dá suporte ao uso de um arquivo de configuração de implantação para cada branch de repositório a partir de julho de 2022. O arquivo JSON de configuração ajuda você a mapear arquivos de parâmetro para arquivos de conteúdo relevantes, priorizar conteúdo específico em implantações e excluir conteúdo específico de implantações.

  1. Crie o arquivo sentinel-deployment.config na raiz do repositório. Adicionar, excluir ou modificar esse arquivo de configuração dispara uma implantação completa de todo o conteúdo no repositório de acordo com a configuração atualizada.

    Captura de tela de um diretório raiz do repositório. O RepositoriesSampleContent é mostrado com o local do arquivo sentinel-deployment.config.

  2. Inclua o conteúdo estruturado em três seções opcionais, "prioritizedcontentfiles":, "excludecontentfiles": e "parameterfilemappings":. Se nenhuma seção for incluída ou o arquivo .config for omitido, o processo de implantação ainda será executado. Seções inválidas ou não reconhecidas são ignoradas.

Aqui está um exemplo de todo o conteúdo de um arquivo sentinel-deployment.config válido. Este exemplo também pode ser encontrado no Exemplo de repositórios CICD do Microsoft Sentinel.

{
  "prioritizedcontentfiles": [
    "parsers/Sample/ASimAuthenticationAWSCloudTrail.json",
    "workbooks/sample/TrendMicroDeepSecurityAttackActivity_ARM.json",
    "Playbooks/PaloAlto-PAN-OS/PaloAltoCustomConnector/azuredeploy.bicep"
  ], 
  "excludecontentfiles": [
     "Detections/Sample/PaloAlto-PortScanning.json",
     "parameters"
  ],
  "parameterfilemappings": {
    "879001c8-2181-4374-be7d-72e5dc69bd2b": {
      "Playbooks/PaloAlto-PAN-OS/Playbooks/PaloAlto-PAN-OS-BlockIP/azuredeploy.bicep": "parameters/samples/auzredeploy.bicepparam"
    },
    "9af71571-7181-4cef-992e-ef3f61506b4e": {
      "Playbooks/Enrich-SentinelIncident-GreyNoiseCommunity-IP/azuredeploy.json": "path/to/any-parameter-file.json"
    }
  },
  "DummySection": "This shouldn't impact deployment"
}

Observação

Não use o caractere "\" de barra invertida em nenhum dos caminhos de conteúdo. Em vez disso, use a barra "/".

  • Para priorizar arquivos de conteúdo:

    À medida que a quantidade de conteúdo em seu repositório aumenta, os tempos de implantação podem aumentar. Adicione conteúdo sensível ao tempo a esta seção para priorizar sua implantação quando ocorrer um gatilho.

    Adicione nomes de caminho completos à seção "prioritizedcontentfiles":. Não há suporte para correspondência de curinga no momento.

  • Para excluir arquivos de conteúdo, modifique a seção "excludecontentfiles": com nomes de caminho completos de arquivos individuais de conteúdo .json.

  • Mapear parâmetros:

    O script de implantação aceita três métodos de parâmetros de mapeamento, conforme descrito em Escalar as implantações com arquivos de parâmetro. Os parâmetros de mapeamento por meio de sentinel-deployment.config têm a precedência mais alta e garantem que um determinado arquivo de parâmetro seja mapeado para os arquivos de conteúdo associados. Modifique a seção "parameterfilemappings": com a ID do workspace da conexão de destino e os nomes de caminho completo de arquivos .json individuais.

Um repositório de exemplo está disponível demonstrando o arquivo de configuração de implantação e todos os três métodos de mapeamento de parâmetros. Para obter mais informações, consulte Exemplo de repositórios CICD do Microsoft Sentinel.