Partilhar 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 nos espaços de trabalho do Microsoft Sentinel. Cada método usa arquivos e sintaxe diferentes, portanto, considere estes exemplos para começar.

  • Modifique o fluxo de trabalho do GitHub ou o pipeline de DevOps para personalizar as opções de implantação, como o gatilho de implantação da 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 de prioridades de suas implantações de conteúdo, opte por excluir arquivos de conteúdo específicos dessas implantações ou mapeie arquivos de parâmetros para arquivos de conteúdo específicos.

Importante

O recurso Repositórios do Microsoft Sentinel está atualmente em VISUALIZAÇÃO. Consulte os Termos de Utilização Suplementares das Pré-visualizações do Microsoft Azure para obter os termos legais adicionais que se aplicam às funcionalidades do Azure que estão em versão beta, pré-visualização ou ainda não disponibilizadas para disponibilidade geral.

Pré-requisitos e âmbito

Atualmente, o Microsoft Sentinel oferece suporte a conexões com repositórios do GitHub e do Azure DevOps. Antes de conectar seu espaço de trabalho do Microsoft Sentinel ao repositório de controle do código-fonte, verifique se você tem:

  • Uma função Proprietário no grupo de recursos que contém seu espaço de trabalho do Microsoft Sentinel ou uma combinação de funções de Administrador de Acesso de Usuário e Colaborador do Sentinel para criar a conexão
  • Acesso de colaborador ao repositório GitHub ou acesso de Administrador de Projeto ao 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 espaços de trabalho estão em modelos relevantes do Azure Resource Manager (ARM)

Para obter mais informações, consulte Validar seu conteúdo.

Personalizar o fluxo de trabalho ou pipeline

O fluxo de trabalho padrão implanta apenas conteúdo modificado desde a última implantação, com base em confirmações no repositório. Mas você pode precisar de outras personalizações, como configurar diferentes gatilhos de implantação ou implantar conteúdo exclusivamente de uma pasta raiz específica.

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

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

  1. No GitHub, vá para seu repositório e encontre seu 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 esse arquivo e o nome do fluxo de trabalho é mostrado na primeira linha e tem 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 no canto superior direito 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 on seção no código, que descreve o evento que aciona 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 é acionado 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`
      

      Talvez você queira 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 juntos.

      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 de implantações inteligentes é separado do gatilho de implantação discutido. Navegue até a jobs seção do seu fluxo de trabalho. Alterne o smartDeployment valor padrão de true para false. Depois que essa alteração for confirmada, a funcionalidade de implantação inteligente será desativada e todas as implantações futuras para essa conexão reimplantarão todos os arquivos de conteúdo relevantes do repositório nos espaços de trabalho conectados.

    • Para modificar o caminho de implantação:

      Na configuração padrão mostrada para a on seção, os curingas (**) na primeira linha da paths seção indicam que toda a ramificação 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 o conteúdo é enviado por push para qualquer parte da ramificação.

      Mais adiante no arquivo, a jobs seção 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 filtragem para nenhum caminho de pasta.

      Para implantar conteúdo somente de um caminho de pasta específico, adicione-o paths à configuração e directory à configuração. Por exemplo, para implantar 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 Ações do GitHub e edição de fluxos de trabalho do GitHub.

Importante

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

Dimensione suas implantações com arquivos de parâmetros

Em vez de passar parâmetros como valores embutidos em seus arquivos de conteúdo, considere usar um arquivo JSON que contenha os valores de parâmetro. Em seguida, mapeie esses arquivos JSON de parâmetro para seus arquivos de conteúdo do Sentinel associados para dimensionar melhor suas implantações em diferentes espaços de trabalho. Há várias maneiras de mapear arquivos de parâmetros 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 no sentinel-deployment.config? Para obter mais informações, consulte Personalizar a configuração da conexão.
  2. Existe um arquivo de parâmetro mapeado no espaço de trabalho? Sim, é um arquivo de parâmetro no mesmo diretório que os arquivos de conteúdo que termina com .parameters-WorkspaceID<>.json
  3. Existe um arquivo de parâmetro padrão? Sim, qualquer arquivo de parâmetro no mesmo diretório que os arquivos de conteúdo que termina com .parameters.json

É recomendável mapear seus arquivos de parâmetros através do arquivo de configuração ou especificando o ID do espaço de trabalho no nome do arquivo para evitar conflitos em cenários com várias implantações.

Importante

Uma vez que uma correspondência de arquivo de parâmetro é 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 aciona a implantação de seu arquivo de conteúdo emparelhado. Adicionar ou modificar um arquivo .parameters-WorkspaceID>.json ou um arquivo .parameters.json também aciona uma implantação dos arquivos de conteúdo emparelhados juntamente com os parâmetros recém-modificados<, a menos que um mapeamento de parâmetro de precedência mais alta esteja em vigor. Outros arquivos de conteúdo não são implantados enquanto o recurso de implantações inteligentes ainda estiver habilitado no arquivo de definição de fluxo de trabalho/pipeline.

Personalize a configuração da sua ligação

O script de implantação para repositórios suporta o uso de um arquivo de configuração de implantação para cada ramificação do repositório a partir de julho de 2022. O arquivo JSON de configuração ajuda a mapear arquivos de parâmetros 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 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. Esta amostra também pode ser encontrada na amostra de repositórios CICD 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"
}

Nota

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 cresce, 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 disparador.

    Adicione nomes completos de "prioritizedcontentfiles": caminhos à seção. No momento, não há suporte para correspondência de curingas.

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

  • Para mapear parâmetros:

    O script de implantação aceita três métodos de mapeamento de parâmetros, conforme descrito em Dimensionar suas implantações com arquivos de parâmetro. O mapeamento de parâmetros por meio do sentinel-deployment.config tem a maior precedência e garante que um determinado arquivo de parâmetro seja mapeado para seus arquivos de conteúdo associados. Basta modificar a seção com o "parameterfilemappings": ID do espaço de trabalho da conexão de destino e os nomes completos dos caminhos dos arquivos .json individuais.

Próximos passos

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 Sentinel.

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