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.

  • Modifique o fluxo de trabalho do GitHub ou o pipeline de DevOps para personalizar opções de implantação, como o gatilho de implantação da sua conexão, o caminho de implantação ou o uso de implantações inteligentes.

  • Utilize o arquivo de configuração recém-introduzido para controlar a ordem priorizada de suas implantações de conteúdo, escolha excluir arquivos de conteúdo específicos dessas implantações ou mapeie os 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. Veja os Termos de Uso Complementares para Versões Prévias do Microsoft Azure para termos legais adicionais que se aplicam aos recursos do Azure que estão em versão beta, versão prévia ou que, de outra forma, ainda não foram lançados em disponibilidade geral.

Pré-requisitos e escopo

No momento, o Microsoft Sentinel dá suporte a conexões com repositórios do GitHub e do Azure DevOps. Antes de conectar o workspace do Microsoft Sentinel ao repositório de controle de código-fonte, certifique-se de ter o seguinte:

  • Uma função de Proprietário no grupo de recursos que contém o workspace do Microsoft Sentinel ou uma combinação das funções de Administrador de acesso do usuário e Colaborador do Sentinel para criar a conexão
  • 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 Modelos relevantes do ARM (Azure Resource Manager)

Para obter mais informações, confira 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. Mas você pode precisar de outras personalizações, como configurar diferentes gatilhos de implantação ou implantar conteúdos 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`
      

      Você pode querer alterar 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 JSON que contenha os valores dos parâmetros. Em seguida, mapeie esses arquivos JSON de parâmetros nos arquivos de conteúdos associados do Sentinel para escalar melhor suas implantações em diferentes espaços de trabalho. Há várias maneiras de mapear arquivos de parâmetro para arquivos do Sentinel e o pipeline de implantação de repositórios os considera na seguinte ordem:

A diagram showing the precedence of parameter file mappings.

  1. Existe um mapeamento na sentinel-deployment.config? Para obter mais informações, consulte Personalizar a sua configuração de conexão.
  2. Há um arquivo de parâmetro mapeado pelo espaço de trabalho? Sim, esse é um arquivo de parâmetros no mesmo diretório dos arquivos de conteúdo que terminam com .parameters-<WorkspaceID>.json
  3. Há um arquivo de parâmetro padrão? Sim, qualquer arquivo de parâmetro no mesmo diretório dos arquivos de conteúdo que terminam com .parameters.json

É recomendável mapear os arquivos de parâmetro por meio do arquivo de configuração ou especificando a ID do workspace no nome do arquivo para evitar conflitos em cenários com várias implantações.

Importante

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

Modificar o arquivo de parâmetro mapeado listado no sentinel-deployment.config dispara a implantação do arquivo de conteúdo emparelhado correspondente. Adicionar ou modificar um arquivo .parameters-<WorkspaceID>.json ou .parameters.json também dispara a 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 maior precedência. 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 causará uma implantação completa de todo o conteúdo no repositório de acordo com a configuração atualizada.

    Screenshot of a repository root directory. The RepositoriesSampleContent is shown with the location of the sentinel-deployment.config file.

  2. Inclua conteúdo estruturado em JSON 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 Sentinel.

{
  "prioritizedcontentfiles": [
    "parsers/Sample/ASimAuthenticationAWSCloudTrail.json",
    "workbooks/sample/TrendMicroDeepSecurityAttackActivity_ARM.json",
    "Playbooks/PaloAlto-PAN-OS/PaloAltoCustomConnector/azuredeploy.json"
  ], 
  "excludecontentfiles": [
     "Detections/Sample/PaloAlto-PortScanning.json",
     "parameters"
  ],
  "parameterfilemappings": {
    "879001c8-2181-4374-be7d-72e5dc69bd2b": {
      "Playbooks/PaloAlto-PAN-OS/Playbooks/PaloAlto-PAN-OS-BlockIP/azuredeploy.json": "parameters/samples/parameter-file-1.json"
    },
    "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 do sentinel-deployment.config têm a precedência mais alta e garantem que um determinado arquivo de parâmetro seja mapeado para os respectivos arquivos de conteúdo associados. Basta modificar a seção com a "parameterfilemappings": ID do espaço de trabalho da conexão de destino e os nomes de caminho completo de arquivos .json individuais.

Próximas etapas

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 saber mais, confira Exemplo de repositórios de CI/CD do Sentinel.

Considere estes recursos para obter mais informações sobre modelos do ARM: