Coletar registros do Jenkins
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
- Acesse o Cloud Storage
- Crie um bucket. Escolha um nome exclusivo e a região apropriada.
- 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
- Acesse IAM e administrador > Contas de serviço.
- Crie uma nova conta de serviço. Dê um nome descritivo (por exemplo, jenkins-logs).
- Conceda à conta de serviço o papel Criador de objetos do Storage no bucket do GCS criado na etapa anterior.
- Crie uma chave SSH para sua conta de serviço: Criar e excluir chaves de contas de serviço.
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
- Acesse Manage Jenkins > Plugins.
- Selecione Plugins disponíveis.
- Pesquise o plug-in Google Cloud Storage.
- Instale o plug-in e reinicie o Jenkins, se necessário.
Instalar o plug-in de credenciais do Google OAuth no Jenkins
- Acesse 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.
Configurar o Jenkins para autenticação com o Google Cloud
Acesse Gerenciar Jenkins > Credenciais > Sistema.
Clique em adicionar Adicionar credenciais.
Kind: selecione Google Service Account from private key.
Nome do projeto: defina um nome para as credenciais.
Faça upload do arquivo de chave JSON que você recebeu durante a criação da conta de serviço do Google Cloud.
Clique em Criar.
Configurar os registros do Jenkins para fazer upload do Google SecOps
- 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.
- Teste o upload de registro.
Configurar um feed no Google SecOps para processar registros do Jenkins
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo.
- No campo Nome do feed, insira um nome para o feed (por exemplo, Logs do Jenkins).
- Selecione Google Cloud Storage como o Tipo de origem.
- Selecione Jenkins como o Tipo de registro.
- Clique em Pegar conta de serviço como a Conta de serviço do Chronicle.
- Clique em Próxima.
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.
- URI do bucket do Storage: URL do bucket do Google Cloud Storage no formato
Clique em Próxima.
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.