Personalizar implementações de repositório

Existem duas maneiras principais de personalizar a implantação do conteúdo do seu repositório nos espaços de trabalho do Microsoft Sentinel. Cada método utiliza diferentes ficheiros e sintaxe, por isso, considere estes exemplos para começar. Antes de começar, verifique se os pré-requisitos de conexão e implantação do repositório necessários estão em vigor.

Método de personalização Opções de implementação abrangidas
Fluxo de trabalho do GitHub
Pipeline de DevOps
Personalize o gatilho de implantação da sua conexão
Personalize seu caminho de implantação
Ativação de implementações inteligentes
Arquivos de configuração Controlar a ordem priorizada das implementações de conteúdos
Optar por excluir ficheiros de conteúdo específicos de implementações
Dimensionar implementações em diferentes áreas de trabalho ao mapear ficheiros de parâmetros para ficheiros de conteúdo específicos

Pré-requisitos

Para personalizar uma implantação de repositório, você precisa de uma conexão de repositório existente. Para criar um, consulte Implantar conteúdo personalizado do repositório. Depois de criar a conexão, certifique-se de atender a estes requisitos:

  • Acesso de colaborador ao repositório do GitHub ou ao acesso do Administrador de Projetos ao seu repositório do Azure DevOps
  • Ações ativadas para o GitHub e Pipelines ativadas para Azure DevOps
  • Certifique-se de que os ficheiros de conteúdo personalizados que pretende implementar nas áreas de trabalho estão num formato suportado. Para obter os formatos suportados, veja Planear o conteúdo do repositório.

Para obter mais informações sobre tipos de conteúdo implementáveis, veja Planear o conteúdo do repositório.

Personalize o fluxo de trabalho ou pipeline

O fluxo de trabalho predefinido só implementa conteúdo modificado desde a última implementação, com base em consolidações no repositório. Personalize o fluxo de trabalho ou pipeline para configurar diferentes gatilhos de implantação, ou para implantar conteúdo exclusivamente de uma pasta raiz específica.

Selecione uma das seguintes abas de acordo com o seu tipo de conexão:

Para personalizar seu fluxo de trabalho de implantação no GitHub:

  1. No GitHub, aceda ao seu repositório e localize o fluxo de trabalho no diretório .github/workflows .

    O ficheiro de fluxo de trabalho é o ficheiro YML que começa com sentinel-deploy-xxxxx.yml. Abra esse ficheiro e o nome do fluxo de trabalho é apresentado na primeira linha e tem a seguinte convenção de nomenclatura predefinida: 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 no canto superior direito da página para abrir o ficheiro para edição e, em seguida, modifique a implementação da seguinte forma:

    • Para modificar o gatilho de implantação, atualize a on seção no código, que descreve o evento que desencadeia a execução do fluxo de trabalho.

      Por predefinição, esta configuração está definida como on: push, o que significa que o fluxo de trabalho é acionado em qualquer push para o ramo ligado, incluindo modificações ao conteúdo existente e adições de novos conteúdos 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 estas definições, por exemplo, para agendar a execução periódica do fluxo de trabalho ou para combinar diferentes eventos de fluxo de trabalho.

      Para mais informações, veja Configurar eventos de fluxo de trabalho na documentação do GitHub.

    • Para desativar implantações inteligentes:

      O comportamento de implantação inteligente é configurado separadamente do gatilho do fluxo de trabalho na on seção. Navegue para a jobs secção do fluxo de trabalho. Mude o smartDeployment valor predefinido de true para false. Assim que esta alteração for consolidada, a funcionalidade de implementação inteligente é desativada e todas as implementações futuras para esta ligação implementam novamente todos os ficheiros de conteúdo relevantes do repositório para as áreas de trabalho ligadas.

    • 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 é acionado sempre que esse conteúdo é enviado para qualquer parte do ramo conectado.

      Na jobs seção, a configuração padrão inclui directory: '${{ github.workspace }}'. A directory configuração indica que todo o ramo do GitHub está no caminho para a implantação do conteúdo, sem filtragem para nenhum caminho de pasta.

      Para implantar conteúdo somente de um caminho de pasta específico, adicione-o às configurações paths e directory. Por exemplo, para implementar conteúdo apenas a partir de uma pasta raiz chamada SentinelContent, atualize o código da seguinte forma:

      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 mais informações, veja a sintaxe do fluxo de trabalho GitHub Actions para filtros de caminho na documentação 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.

Dimensionar as implementações com ficheiros de parâmetros

Em vez de transmitir parâmetros como valores inline nos seus ficheiros de conteúdo, considere utilizar um ficheiro de parâmetro bicep ou um ficheiro JSON que contenha os valores dos parâmetros. Em seguida, mapeie esses ficheiros de parâmetros para os ficheiros de conteúdo Microsoft Sentinel associados para dimensionar melhor as suas implementações em diferentes áreas de trabalho.

Existem várias formas de mapear ficheiros de parâmetros para os ficheiros de conteúdo. Lembre-se de que os arquivos de parâmetros do Bicep oferecem suporte apenas a modelos de arquivo do Bicep, mas os arquivos de parâmetros JSON oferecem suporte a ambos. O pipeline de implementação de repositórios considera os ficheiros de parâmetros pela seguinte ordem:

Um diagrama a mostrar a precedência dos mapeamentos de ficheiros de parâmetros.

  1. Existe um mapeamento no sentinel-deployment.config?
    Para obter mais informações, veja Personalizar a configuração da ligação.

  2. Existe um ficheiro de parâmetros mapeado pela área de trabalho? Sim, os arquivos de conteúdo estão no mesmo diretório com um arquivo de parâmetros mapeado para um workspace que corresponda a um destes padrões:
    .<WorkspaceID>.bicepparam
    .parameters-<WorkspaceID>.json

  3. Existe um ficheiro de parâmetros predefinido? Sim, os ficheiros de conteúdo estão no mesmo diretório com um ficheiro de parâmetro que corresponde a um destes padrões:
    .bicepparam
    .parameters.json

Evite conflitos com múltiplas implementações de áreas de trabalho ao mapear os ficheiros de parâmetros através do ficheiro de configuração ou ao especificar o ID da área de trabalho no nome do ficheiro.

Importante

Uma vez definida uma correspondência com um arquivo de parâmetros com base na precedência de mapeamento, o pipeline ignora quaisquer mapeamentos restantes.

Modificar o ficheiro de parâmetro mapeado listado no sentinel-deployment.config aciona a implementação do respetivo ficheiro de conteúdo emparelhado. Adicionar ou modificar um ficheiro de parâmetros mapeado por área de trabalho ou um ficheiro de parâmetros predefinido também aciona uma implementação dos ficheiros de conteúdo emparelhado juntamente com os parâmetros recentemente modificados, a menos que esteja em vigor um mapeamento de parâmetros de precedência superior. Outros ficheiros de conteúdo não são implementados desde que a funcionalidade de implementações inteligentes ainda esteja ativada no ficheiro de definição de fluxo de trabalho/pipeline.

Personalizar a configuração da ligação

O script de implementação para repositórios suporta a utilização de um ficheiro de configuração de implementação para cada ramo de repositório a partir de julho de 2022. O ficheiro JSON de configuração ajuda-o a mapear ficheiros de parâmetros para ficheiros de conteúdo relevantes, a atribuir prioridades a conteúdos específicos em implementações e a excluir conteúdos específicos de implementações.

Importante

Criar, excluir ou modificar o arquivo sentinel-deployment.config dispara uma implantação completa de todo o conteúdo do repositório de acordo com a configuração atualizada.

  1. Crie o ficheiro sentinel-deployment.config na raiz do seu repositório.

    Captura de ecrã a mostrar um diretório de raiz do repositório. O RepositoriesSampleContent é apresentado com a localização do ficheiro sentinel-deployment.config.

  2. Inclua o conteúdo estruturado em três secções opcionais, "prioritizedcontentfiles":, "excludecontentfiles":e "parameterfilemappings":. Se não estiverem incluídas secções ou o ficheiro .config for omitido, o processo de implementação continuará a ser executado. As secções inválidas ou não reconhecidas são ignoradas.

Aqui está um exemplo do conteúdo completo 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 no seu repositório aumenta, os tempos de implementação podem aumentar. Adicione conteúdo sensível ao tempo a esta seção para priorizar sua implantação quando um acionador for disparado.

    Adicione nomes de caminho completos à "prioritizedcontentfiles": secção. A correspondência com curinga não é suportada no momento.

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

  • Para mapear parâmetros:

    O script de implantação aceita três métodos de parâmetros de mapeamento (mapeamentos de arquivo de configuração, arquivos de parâmetro mapeados por workspace e arquivos de parâmetro padrão), conforme descrito em Dimensionar suas implantações com arquivos de parâmetro. Os parâmetros de mapeamento através do sentinel-deployment.config têm a precedência mais elevada e garantem que um determinado ficheiro de parâmetro é mapeado para os respetivos ficheiros de conteúdo associados. Modifique a seção "parameterfilemappings": com o ID do espaço de trabalho da conexão de destino e os caminhos completos dos arquivos .json individuais.