Recolha registos do Sysdig

Compatível com:

Este analisador extrai dados de eventos de segurança de registos JSON do Sysdig, transformando e mapeando os campos de registo não processados para o formato UDM do Google Security Operations. Processa vários campos, incluindo metadados, informações principais ou de destino, detalhes dos resultados de segurança e contexto relacionado com o Kubernetes, enriquecendo os dados para análise no Google SecOps. O analisador também realiza conversões de tipos de dados, processamento de erros e lógica condicional com base nos valores dos campos para garantir uma representação precisa e abrangente dos DUs.

Antes de começar

Certifique-se de que tem os seguintes pré-requisitos:

  • Instância do Google SecOps.
  • Acesso privilegiado ao Sysdig Secure.

Crie uma chave da API para o feed de webhook

  1. Aceda à Google Cloud consola > Credenciais.

    Aceder a Credenciais

  2. Clique em Criar credenciais e, de seguida, selecione Chave de API.

  3. Restrinja o acesso da chave de API à API Google Security Operations.

Opção 1

Configure feeds

Para configurar um feed, siga estes passos:

  1. Aceda a Definições do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na página seguinte, clique em Configurar um único feed.
  4. No campo Nome do feed, introduza um nome para o feed; por exemplo, Registos Sysdig.
  5. Selecione Webhook como o Tipo de origem.
  6. Selecione Sysdig como o Tipo de registo.
  7. Clicar em Seguinte.
  8. Opcional: especifique valores para os seguintes parâmetros de entrada:

    • Delimitador de divisão: o delimitador usado para separar linhas de registo, como \n.
  9. Clicar em Seguinte.

  10. Reveja a configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.

  11. Clique em Gerar chave secreta para gerar uma chave secreta para autenticar este feed.

  12. Copie e armazene a chave secreta. Não pode ver esta chave secreta novamente. Se necessário, pode regenerar uma nova chave secreta, mas esta ação torna a chave secreta anterior obsoleta.

  13. No separador Detalhes, copie o URL do ponto final do feed do campo Informações do ponto final. Tem de especificar este URL do ponto final na sua aplicação cliente.

  14. Clique em Concluído.

Especifique o URL do ponto final

  1. Na aplicação cliente, especifique o URL do ponto final HTTPS fornecido no feed do webhook.
  2. Ative a autenticação especificando a chave da API e a chave secreta como parte do cabeçalho personalizado no seguinte formato:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Recomendação: especifique a chave da API como um cabeçalho em vez de a especificar no URL.

  3. Se o seu cliente de webhook não suportar cabeçalhos personalizados, pode especificar a chave da API e a chave secreta através de parâmetros de consulta no seguinte formato:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    Substitua o seguinte:

    • ENDPOINT_URL: o URL do ponto final do feed.
    • API_KEY: a chave da API para autenticar no Google SecOps.
    • SECRET: a chave secreta que gerou para autenticar o feed.

Configure o webhook no Sysdig

  1. Inicie sessão no Sysdig Secure com privilégios de administrador.
  2. Aceda a Perfil > Definições > Encaminhamento de eventos.
  3. Clique em + Adicionar integração e selecione Webhook no menu pendente.
  4. Especifique valores para os seguintes parâmetros de entrada:

    • Nome da integração: indique um nome descritivo para o webhook (por exemplo, Webhook do Google SecOps).
    • Ponto final: introduza o webhook <ENDPOINT_URL>, seguido de <API_KEY e <SECRET>.
    • Dados a enviar: selecione no menu pendente os tipos de dados do Sysdig que devem ser encaminhados.

    • Teste a integração e, em seguida, ative/desative a opção Ativado para a ativar.

    • Clique em Guardar.

Opção 2

Encaminhe dados diretamente para o Google SecOps

  1. Inicie sessão no Sysdig Secure com as suas credenciais de administrador.
  2. Aceda a Definições > Encaminhamento de eventos.
  3. Clique em + Adicionar integração e selecione Google Chronicle no menu pendente.
  4. Especifique valores para os seguintes parâmetros de entrada:
    • Nome da integração: indique um nome descritivo para a integração (por exemplo, Integração do Google SecOps).
    • ID de cliente: o ID de cliente do Google associado à sua Google Cloud conta. (No Google SecOps, encontra esta opção em Definições > Perfil).
    • Espaço de nomes: opcional: use como uma etiqueta para identificar o domínio de dados adequado para indexação e enriquecimento.
    • Credenciais JSON: carregue as suas credenciais JSON do Google SecOps.
    • Região: selecione a sua região, como os EUA, a Europa ou a Ásia.
    • Dados a enviar: selecione os tipos de dados do Sysdig que devem ser encaminhados no menu pendente.
    • Teste a integração e, em seguida, ative/desative a opção Ativado para a ativar.
    • Clique em Guardar.

Tabela de mapeamento da UDM

Campo de registo Mapeamento de UDM Lógica
agentId read_only_udm.metadata.product_deployment_id O valor de agentId do registo não processado é mapeado diretamente para este campo da UDM.
category read_only_udm.security_result.category_details O valor de category do registo não processado é mapeado diretamente para este campo da UDM.
content.fields.container.id read_only_udm.target.asset.asset_id O valor de content.fields.container.id do registo não processado é precedido de "container_id:" e mapeado para este campo do UDM. Usado se containerId estiver vazio.
content.fields.container.image.repository read_only_udm.target.file.full_path O valor de content.fields.container.image.repository do registo não processado é mapeado diretamente para este campo da UDM.
content.fields.container.image.tag read_only_udm.metadata.ingestion_labels.value where key is tag O valor de content.fields.container.image.tag do registo não processado é mapeado diretamente para este campo da UDM.
content.fields.evt.res read_only_udm.metadata.ingestion_labels.value where key is evt_res O valor de content.fields.evt.res do registo não processado é mapeado diretamente para este campo da UDM.
content.fields.evt.type read_only_udm.metadata.event_type O valor de content.fields.evt.type do registo não processado é mapeado diretamente para este campo da UDM.
content.fields.falco.rule read_only_udm.security_result.rule_name O valor de content.fields.falco.rule do registo não processado é mapeado diretamente para este campo da UDM. Usado se content.ruleName estiver vazio.
content.fields.group.gid read_only_udm.target.group.product_object_id O valor de content.fields.group.gid do registo não processado é mapeado diretamente para este campo da UDM.
content.fields.group.name read_only_udm.target.group.group_display_name O valor de content.fields.group.name do registo não processado é mapeado diretamente para este campo da UDM.
content.fields.proc.cmdline read_only_udm.target.process.command_line O valor de content.fields.proc.cmdline do registo não processado é mapeado diretamente para este campo da UDM.
content.fields.proc.pcmdline read_only_udm.target.process.parent_process.command_line O valor de content.fields.proc.pcmdline do registo não processado é mapeado diretamente para este campo da UDM.
content.fields.proc.pid read_only_udm.target.process.pid O valor de content.fields.proc.pid do registo não processado é mapeado diretamente para este campo da UDM.
content.fields.proc.ppid read_only_udm.target.process.parent_process.pid O valor de content.fields.proc.ppid do registo não processado é mapeado diretamente para este campo da UDM.
content.fields.proc.sid read_only_udm.metadata.ingestion_labels.value where key is sid O valor de content.fields.proc.sid do registo não processado é mapeado diretamente para este campo da UDM.
content.fields.user.loginname read_only_udm.principal.user.user_display_name O valor de content.fields.user.loginname do registo não processado é mapeado diretamente para este campo da UDM.
content.fields.user.uid read_only_udm.principal.user.userid O valor de content.fields.user.uid do registo não processado é mapeado diretamente para este campo da UDM.
content.output read_only_udm.additional.fields.value.string_value where key is content_output O valor de content.output do registo não processado é mapeado diretamente para este campo da UDM.
content.policyId read_only_udm.security_result.rule_id O valor de content.policyId do registo não processado é mapeado diretamente para este campo da UDM.
content.policyOrigin read_only_udm.additional.fields.value.string_value where key is content_policyOrigin O valor de content.policyOrigin do registo não processado é mapeado diretamente para este campo da UDM.
content.policyVersion read_only_udm.additional.fields.value.string_value where key is content_policyVersion O valor de content.policyVersion do registo não processado é mapeado diretamente para este campo da UDM.
content.ruleName read_only_udm.security_result.rule_name O valor de content.ruleName do registo não processado é mapeado diretamente para este campo da UDM.
content.ruleTags read_only_udm.security_result.rule_labels Os valores na matriz content.ruleTags do registo não processado são mapeados para este campo da UDM, com chaves geradas dinamicamente como "ruletag_index".
content.ruleType read_only_udm.additional.fields.value.string_value where key is content_ruleType O valor de content.ruleType do registo não processado é mapeado diretamente para este campo da UDM.
containerId read_only_udm.target.asset.asset_id O valor de containerId do registo não processado é precedido de "container_id:" e mapeado para este campo do UDM.
description read_only_udm.metadata.description O valor de description do registo não processado é mapeado diretamente para este campo da UDM.
id read_only_udm.metadata.product_log_id O valor de id do registo não processado é mapeado diretamente para este campo da UDM.
labels.container.label.io.kubernetes.container.name read_only_udm.additional.fields.value.string_value where key is container_name O valor de labels.container.label.io.kubernetes.container.name do registo não processado é mapeado diretamente para este campo da UDM.
labels.container.label.io.kubernetes.pod.name read_only_udm.additional.fields.value.string_value where key is pod_name O valor de labels.container.label.io.kubernetes.pod.name do registo não processado é mapeado diretamente para este campo da UDM. Usado se labels.kubernetes.pod.name estiver vazio.
labels.container.label.io.kubernetes.pod.namespace read_only_udm.principal.namespace O valor de labels.container.label.io.kubernetes.pod.namespace do registo não processado é mapeado diretamente para este campo da UDM. Usado se labels.kubernetes.namespace.name estiver vazio.
labels.aws.instanceId read_only_udm.target.resource.product_object_id O valor de labels.aws.instanceId do registo não processado é mapeado diretamente para este campo da UDM.
labels.aws.region read_only_udm.target.resource.attribute.cloud.availability_zone O valor de labels.aws.region do registo não processado é mapeado diretamente para este campo da UDM.
labels.host.hostName read_only_udm.principal.ip OU read_only_udm.principal.hostname Se o valor contiver "ip", é analisado como um endereço IP e mapeado para principal.ip. Caso contrário, é mapeado para principal.hostname.
labels.host.mac read_only_udm.principal.mac O valor de labels.host.mac do registo não processado é mapeado diretamente para este campo da UDM. Usado se machineId estiver vazio.
labels.kubernetes.cluster.name read_only_udm.additional.fields.value.string_value where key is kubernetes_cluster_name O valor de labels.kubernetes.cluster.name do registo não processado é mapeado diretamente para este campo da UDM.
labels.kubernetes.deployment.name read_only_udm.additional.fields.value.string_value where key is kubernetes_deployment_name O valor de labels.kubernetes.deployment.name do registo não processado é mapeado diretamente para este campo da UDM.
labels.kubernetes.namespace.name read_only_udm.principal.namespace O valor de labels.kubernetes.namespace.name do registo não processado é mapeado diretamente para este campo da UDM.
labels.kubernetes.node.name read_only_udm.additional.fields.value.string_value where key is kubernetes_node_name O valor de labels.kubernetes.node.name do registo não processado é mapeado diretamente para este campo da UDM.
labels.kubernetes.pod.name read_only_udm.additional.fields.value.string_value where key is pod_name O valor de labels.kubernetes.pod.name do registo não processado é mapeado diretamente para este campo da UDM.
labels.kubernetes.service.name read_only_udm.additional.fields.value.string_value where key is kubernetes_service_name O valor de labels.kubernetes.service.name do registo não processado é mapeado diretamente para este campo da UDM.
machineId read_only_udm.principal.mac O valor de machineId do registo não processado é mapeado diretamente para este campo da UDM.
name read_only_udm.security_result.summary O valor de name do registo não processado é mapeado diretamente para este campo da UDM.
severity read_only_udm.security_result.severity O valor de severity do registo não processado é mapeado para um valor de string com base nestes intervalos: <4 = HIGH, >3 e <6 = MEDIUM, 6 = LOW, 7 = INFORMATIONAL.
source read_only_udm.security_result.description O valor de source do registo não processado é mapeado diretamente para este campo da UDM.
timestampRFC3339Nano read_only_udm.metadata.event_timestamp O valor de timestampRFC3339Nano do registo não processado é analisado como uma indicação de tempo e mapeado para este campo UDM.
type read_only_udm.metadata.product_event_type O valor de type do registo não processado é mapeado diretamente para este campo da UDM.
(Lógica do analisador) read_only_udm.metadata.product_name Codificado de forma rígida para "SYSDIG".
(Lógica do analisador) read_only_udm.metadata.vendor_name Codificado de forma rígida para "SYSDIG".
(Lógica do analisador) read_only_udm.metadata.event_type A predefinição é "PROCESS_UNCATEGORIZED" ou "GENERIC_EVENT" se labels.host.hostName estiver vazio.
(Lógica do analisador) read_only_udm.metadata.log_type Codificado de forma rígida para "SYSDIG".
(Lógica do analisador) read_only_udm.target.resource.resource_type Definido como "CLOUD_PROJECT" se labels.aws.instanceId existir.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.