Recolha registos do Jenkins
Vista geral
Este analisador extrai informações importantes, como datas/horas, IDs de utilizadores, IPs de origem, ações e IDs de objetos, de registos formatados em JSON e SYSLOG. Usa padrões grok para fazer corresponder vários formatos de mensagens de registo, processando variações na estrutura e preenche um modelo de dados unificado (UDM) com os campos extraídos. O analisador também categoriza os eventos com base na presença de informações do utilizador ou de IP.
Antes de começar
Certifique-se de que tem os seguintes pré-requisitos:
- Instância do Google SecOps.
- Acesso privilegiado ao Google Cloud IAM.
- Acesso privilegiado ao Google Cloud armazenamento.
- Acesso privilegiado ao Jenkins.
Crie um Google Cloud contentor de armazenamento
- Aceda ao armazenamento na nuvem.
- Crie um novo contentor. Escolha um nome exclusivo e uma região adequada.
- Certifique-se de que o contentor tem controlos de acesso adequados (por exemplo, apenas as contas de serviço autorizadas podem escrever no mesmo).
Crie uma Google Cloud conta de serviço
- Aceda a IAM e administrador > Contas de serviço.
- Crie uma nova conta de serviço. Atribua-lhe um nome descritivo (por exemplo, jenkins-logs).
- Conceda à conta de serviço a função Storage Object Creator no contentor do GCS que criou no passo anterior.
- Crie uma chave SSH para a sua conta de serviço: crie e elimine chaves de contas de serviço.
Transfira um ficheiro de chave JSON para a conta de serviço.
Instale o Google Cloud plugin de armazenamento no Jenkins
- Aceda a Manage Jenkins > Plugins.
- Selecione Plug-ins disponíveis.
- Pesquise o plug-in Google Cloud Storage.
- Instale o plug-in e reinicie o Jenkins, se necessário.
Instale o plug-in de credenciais do Google OAuth no Jenkins
- Aceda a Manage Jenkins > Plugins.
- Selecione Plug-ins disponíveis
- Pesquise o plug-in Google OAuth Credentials.
- Instale o plug-in e reinicie o Jenkins, se necessário.
Configure o Jenkins para autenticar com o Google Cloud
Aceda a Manage Jenkins > Credentials > System.
Clique em adicionar Adicionar credenciais.
Tipo: selecione Conta de serviço Google a partir de chave privada.
Nome do projeto: defina um nome para as credenciais.
Carregue o ficheiro de chave JSON que obteve durante a Google Cloud criação da conta de serviço.
Clique em Criar.
Configure os registos do Jenkins para carregar o Google SecOps
- Na configuração da tarefa do Jenkins, adicione Google Storage Build Log Upload nas ações pós-compilação, com os seguintes parâmetros:
- Credenciais Google: o nome das suas credenciais Google que criou no passo anterior.
- Nome do registo: o nome do ficheiro para armazenar o registo de compilação do Jenkins, no caminho de armazenamento especificado.
- Localização de armazenamento: o nome do contentor onde quer carregar os seus registos. O contentor tem de estar acessível à conta de serviço que criou.
- Teste o carregamento do registo.
Configure feeds
Para configurar um feed, siga estes passos:
- Aceda a Definições do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Na página seguinte, clique em Configurar um único feed.
- No campo Nome do feed, introduza um nome para o feed; por exemplo, Registos do Jenkins.
- Selecione Google Cloud Storage V2 como Tipo de origem.
- Selecione Jenkins como o Tipo de registo.
- Clique em Obter conta de serviço como a conta de serviço do Chronicle.
Especifique valores para os seguintes parâmetros de entrada:
- URI do contentor de armazenamento: Google Cloud URL do contentor de armazenamento no formato
gs://my-bucket/<value>
. - Opções de eliminação de origens: selecione a opção de eliminação de acordo com a sua preferência.
- URI do contentor de armazenamento: Google Cloud URL do contentor de armazenamento no formato
Clique em Criar feed.
Tabela de mapeamento da UDM
Campo de registo | Mapeamento de UDM | Lógica |
---|---|---|
act | security_result.action_details | Extraído dos campos msg1 ou msg2. Representa a ação realizada. O espaço em branco inicial é removido. |
data | principal.user.userid OU principal.ip OU metadata.description | Se os dados corresponderem a um padrão de endereço IP, são mapeados para principal.ip. Se corresponder a um padrão de nome de utilizador, é mapeado para principal.user.userid. Caso contrário, é mapeado para metadata.description. |
msg1 | target.asset.product_object_id OU security_result.action_details | Usado para extrair object e act. Se estiver presente um / , é dividido em object e act. Se estiver presente um » , é dividido em object e act. Caso contrário, é tratado como act e, potencialmente, analisado mais detalhadamente. |
msg2 | metadata.description OU security_result.action_details | Se estiver presente, é mapeado inicialmente para metadata.description. Se contiver "completed:", o valor seguinte é extraído e mapeado para security_result.action_details. |
objeto | target.asset.product_object_id | Extraído de msg1. Representa o objeto sobre o qual foi realizada a ação. |
object_id | target.resource.attribute.labels.value | Extraído do objeto se estiver presente um / . Representa um identificador de objeto mais específico. A chave está codificada como "Plugin Name". |
src_ip | principal.ip | Extraído de mensagem ou dados. Representa o endereço IP de origem. |
user | principal.user.userid | Extraído de mensagem ou dados. Representa o utilizador associado ao evento. |
metadata.event_timestamp | Copiado do campo @timestamp calculado. | |
metadata.event_type | Determinado pela lógica do analisador. Definido como USER_UNCATEGORIZED se user estiver presente, STATUS_UNCATEGORIZED se src_ip estiver presente e GENERIC_EVENT caso contrário. | |
metadata.product_name | Codificado como Jenkins. | |
metadata.product_version | Codificado como Jenkins. | |
metadata.vendor_name | Codificado como JENKINS. | |
metadata.event_timestamp | Construído a partir dos campos year, month, day, time e ampm. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.