Coletar registros do Jenkins

Compatível com:

Visão geral

Esse analisador extrai informações importantes, como carimbos de data/hora, IDs de usuário, IPs de origem, ações e IDs de objetos de registros formatados em JSON e SYSLOG. Ele usa padrões grok para corresponder a vários formatos de mensagem de registro, processando variações na estrutura e preenchendo um modelo de dados unificado (UDM, na sigla em inglês) com os campos extraídos. O analisador também categoriza eventos com base na presença de informações do usuário ou do IP.

Antes de começar

  • Verifique se você tem uma instância do Google SecOps.
  • Verifique se você tem acesso privilegiado ao IAM do Google Cloud.
  • Verifique se você tem acesso privilegiado ao Google Cloud Storage.
  • Verifique se você tem acesso privilegiado ao Jenkins.

Crie um bucket do Google Cloud Storage

  1. Acesse o Cloud Storage
  2. Crie um bucket. Escolha um nome exclusivo e a região apropriada.
  3. Verifique se o bucket tem os controles de acesso adequados. Por exemplo, apenas contas de serviço autorizadas podem gravar nele.

Criar uma conta de serviço do Google Cloud

  1. Acesse IAM e administrador > Contas de serviço.
  2. Crie uma nova conta de serviço. Dê um nome descritivo (por exemplo, jenkins-logs).
  3. Conceda à conta de serviço o papel Criador de objetos do Storage no bucket do GCS criado na etapa anterior.
  4. Crie uma chave SSH para sua conta de serviço: Criar e excluir chaves de contas de serviço.
  5. Faça o download de um arquivo de chave JSON para a conta de serviço.

Instalar o plug-in do Google Cloud Storage no Jenkins

  1. Acesse Manage Jenkins > Plugins.
  2. Selecione Plugins disponíveis.
  3. Pesquise o plug-in Google Cloud Storage.
  4. Instale o plug-in e reinicie o Jenkins, se necessário.

Instalar o plug-in de credenciais do Google OAuth no Jenkins

  1. Acesse Manage Jenkins > Plugins.
  2. Selecione Plug-ins disponíveis.
  3. Pesquise o plug-in Google OAuth Credentials.
  4. Instale o plug-in e reinicie o Jenkins, se necessário.

Configurar o Jenkins para autenticação com o Google Cloud

  1. Acesse Gerenciar Jenkins > Credenciais > Sistema.

  2. Clique em adicionar Adicionar credenciais.

  3. Kind: selecione Google Service Account from private key.

  4. Nome do projeto: defina um nome para as credenciais.

  5. Faça upload do arquivo de chave JSON que você recebeu durante a criação da conta de serviço do Google Cloud.

  6. Clique em Criar.

Configurar os registros do Jenkins para fazer upload do Google SecOps

  1. Na configuração do job do Jenkins, adicione Google Storage Build Log Upload nas ações pós-build com os seguintes parâmetros:
    • Credenciais do Google: o nome das credenciais do Google que você criou na etapa anterior.
    • Nome do registro: o nome do arquivo para armazenar o registro de build do Jenkins no caminho de armazenamento especificado.
    • Local de armazenamento: o nome do bucket para fazer upload dos seus registros. O bucket precisa ser acessível para a conta de serviço que você criou.
  2. Teste o upload de registro.

Configurar um feed no Google SecOps para processar registros do Jenkins

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo.
  3. No campo Nome do feed, insira um nome para o feed (por exemplo, Logs do Jenkins).
  4. Selecione Google Cloud Storage como o Tipo de origem.
  5. Selecione Jenkins como o Tipo de registro.
  6. Clique em Pegar conta de serviço como a Conta de serviço do Chronicle.
  7. Clique em Próxima.
  8. Especifique valores para os seguintes parâmetros de entrada:

    • URI do bucket do Storage: URL do bucket do Google Cloud Storage no formato gs://my-bucket/<value>.
    • O URI é um: selecione Diretório que inclui subdiretórios.
    • Opções de exclusão da origem: selecione a opção de exclusão de acordo com sua preferência.
    • Namespace de recursos: o namespace de recursos.
    • Rótulos de ingestão: o rótulo aplicado aos eventos desse feed.
  9. Clique em Próxima.

  10. Revise a configuração do novo feed na tela Finalizar e clique em Enviar.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
ato security_result.action_details Extraídos dos campos msg1 ou msg2. Representa a ação realizada. O espaço em branco inicial é removido.
dados principal.user.userid OU principal.ip OU metadata.description Se data corresponder a um padrão de endereço IP, ele será mapeado para principal.ip. Se ele corresponder a um padrão de nome de usuário, ele será mapeado para principal.user.userid. Caso contrário, ele será mapeado para metadata.description.
msg1 target.asset.product_object_id OU security_result.action_details Usado para extrair object e act. Se um / estiver presente, ele será dividido em object e act. Se um » estiver presente, ele será dividido em object e act. Caso contrário, ele será tratado como act e possivelmente analisado.
msg2 metadata.description OU security_result.action_details Se presente, mapeado inicialmente para metadata.description. Se ele contiver "completed:", o valor depois será extraído e mapeado para security_result.action_details.
objeto target.asset.product_object_id Extraídos de msg1. Representa o objeto em que a ação é realizada.
object_id target.resource.attribute.labels.value Extraídos de object se um / estiver presente. Representa um identificador de objeto mais específico. A chave é codificada como "Plugin Name".
src_ip principal.ip Extraídos de mensagem ou dados. Representa o endereço IP de origem.
user principal.user.userid Extraídos de mensagem ou dados. Representa o usuário associado ao evento.
metadata.event_timestamp Copiado do campo @timestamp calculado.
metadata.event_type Determinado pela lógica do analisador. Defina como USER_UNCATEGORIZED se user estiver presente, STATUS_UNCATEGORIZED se src_ip estiver presente e GENERIC_EVENT caso contrário.
metadata.product_name Fixado no código como Jenkins.
metadata.product_version Fixado no código como Jenkins.
metadata.vendor_name Fixado como JENKINS.
metadata.event_timestamp Construído a partir dos campos ano, mês, dia, hora e ampm.

Alterações

2023-11-27

  • Parser recém-criado.