Coletar registros do Sysdig

Compatível com:

Esse analisador extrai dados ocorrência de segurança dos registros JSON do Sysdig, transformando e mapeando os campos de registro brutos para o formato UDM do Google Security Operations. Ele processa vários campos, incluindo metadados, informações principais ou de destino, detalhes dos resultados de segurança e contexto relacionado ao Kubernetes, enriquecendo os dados para análise no Google SecOps. O analisador também realiza conversões de tipo de dados, tratamento de erros e lógica condicional com base nos valores dos campos para garantir uma representação precisa e abrangente do UDM.

Antes de começar

Verifique se você atende aos seguintes pré-requisitos:

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

Criar uma chave de API para o feed de webhook

  1. Acesse console doGoogle Cloud > Credenciais.

    Ir para Credenciais

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

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

Opção 1

Configurar feeds

Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:

  • Configurações do SIEM > Feeds
  • Central de conteúdo > Pacotes de conteúdo

Configure feeds em "Configurações do SIEM" > "Feeds".

Para configurar um feed, siga estas etapas:

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na próxima página, clique em Configurar um único feed.
  4. No campo Nome do feed, insira um nome para o feed, por exemplo, Registros do Sysdig.
  5. Selecione Webhook como o Tipo de origem.
  6. Selecione Sysdig como o Tipo de registro.
  7. Clique em Próxima.
  8. Opcional: especifique valores para os seguintes parâmetros de entrada:

    • Delimitador de divisão: o delimitador usado para separar linhas de registro, como \n.
  9. Clique em Próxima.

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

  11. Clique em Gerar chave secreta para autenticar o feed.

  12. Copie e armazene a chave secreta. Não é possível ver essa chave secreta novamente. Se necessário, você pode gerar uma nova chave secreta, mas isso torna a anterior obsoleta.

  13. Na guia Detalhes, copie o URL do endpoint do feed no campo Informações do endpoint. É necessário especificar esse URL de endpoint no aplicativo cliente.

  14. Clique em Concluído.

Configurar feeds na Central de conteúdo

Especifique valores para os seguintes campos:

  • Delimitador de divisão: o delimitador usado para separar linhas de registro, como \n.

Opções avançadas

  • Nome do feed: um valor pré-preenchido que identifica o feed.
  • Tipo de origem: método usado para coletar registros no Google SecOps.
  • Namespace do recurso: namespace associado ao feed.
  • Rótulos de ingestão: rótulos aplicados a todos os eventos deste feed.

  • Clique em Gerar chave secreta para autenticar o feed.

  • Copie e armazene a chave secreta. Não é possível ver essa chave secreta novamente. Se necessário, você pode gerar uma nova chave secreta, mas isso torna a anterior obsoleta.

  • Na guia Detalhes, copie o URL do endpoint do feed no campo Informações do endpoint. É necessário especificar esse URL de endpoint no aplicativo cliente.

Especifique o URL do endpoint

  1. No aplicativo cliente, especifique o URL do endpoint HTTPS fornecido no feed do webhook.
  2. Ative a autenticação especificando a chave de 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 de API como um cabeçalho em vez de no URL.

  3. Se o cliente de webhook não aceitar cabeçalhos personalizados, especifique a chave de API e a chave secreta usando parâmetros de consulta no seguinte formato:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    Substitua:

    • ENDPOINT_URL: o URL do endpoint do feed.
    • API_KEY: a chave de API para autenticar no Google SecOps.
    • SECRET: a chave secreta gerada para autenticar o feed.

Configurar webhook no Sysdig

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

    • Nome da integração: forneça um nome descritivo para o webhook (por exemplo, Webhook do Google SecOps).
    • Endpoint: insira o webhook <ENDPOINT_URL>, seguido por <API_KEY e <SECRET>.
    • Dados a serem enviados: selecione no menu suspenso os tipos de dados do Sysdig que devem ser encaminhados.

    • Teste a integração e ative a opção Ativado.

    • Clique em Salvar.

Opção 2

Encaminhar dados diretamente para o Google SecOps

  1. Faça login no Sysdig Secure usando suas credenciais de administrador.
  2. Acesse Configurações > Encaminhamento de eventos.
  3. Clique em + Adicionar integração e selecione Google Chronicle no menu suspenso.
  4. Especifique valores para os seguintes parâmetros de entrada:
    • Nome da integração: forneça 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 conta do Google Cloud . No Google SecOps, acesse Configurações > Perfil.
    • Namespace: opcional. Use como uma tag para identificar o domínio de dados adequado para indexação e enriquecimento.
    • Credenciais JSON: faça upload das suas credenciais JSON do Google SecOps.
    • Região: selecione sua região, como EUA, Europa ou Ásia.
    • Dados a serem enviados: selecione os tipos de dados do Sysdig que devem ser encaminhados no menu suspenso.
    • Teste a integração e ative a opção Ativado.
    • Clique em Salvar.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
agentId read_only_udm.metadata.product_deployment_id O valor de agentId do registro bruto é mapeado diretamente para esse campo do UDM.
category read_only_udm.security_result.category_details O valor de category do registro bruto é mapeado diretamente para esse campo do UDM.
content.fields.container.id read_only_udm.target.asset.asset_id O valor de content.fields.container.id do registro bruto é precedido por "container_id:" e mapeado para esse campo da 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 registro bruto é mapeado diretamente para esse campo do UDM.
content.fields.container.image.tag read_only_udm.metadata.ingestion_labels.value em que a chave é tag O valor de content.fields.container.image.tag do registro bruto é mapeado diretamente para esse campo do UDM.
content.fields.evt.res read_only_udm.metadata.ingestion_labels.value em que a chave é evt_res O valor de content.fields.evt.res do registro bruto é mapeado diretamente para esse campo do UDM.
content.fields.evt.type read_only_udm.metadata.event_type O valor de content.fields.evt.type do registro bruto é mapeado diretamente para esse campo do UDM.
content.fields.falco.rule read_only_udm.security_result.rule_name O valor de content.fields.falco.rule do registro bruto é mapeado diretamente para esse campo do 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 registro bruto é mapeado diretamente para esse campo do UDM.
content.fields.group.name read_only_udm.target.group.group_display_name O valor de content.fields.group.name do registro bruto é mapeado diretamente para esse campo do UDM.
content.fields.proc.cmdline read_only_udm.target.process.command_line O valor de content.fields.proc.cmdline do registro bruto é mapeado diretamente para esse campo do UDM.
content.fields.proc.pcmdline read_only_udm.target.process.parent_process.command_line O valor de content.fields.proc.pcmdline do registro bruto é mapeado diretamente para esse campo do UDM.
content.fields.proc.pid read_only_udm.target.process.pid O valor de content.fields.proc.pid do registro bruto é mapeado diretamente para esse campo do UDM.
content.fields.proc.ppid read_only_udm.target.process.parent_process.pid O valor de content.fields.proc.ppid do registro bruto é mapeado diretamente para esse campo do UDM.
content.fields.proc.sid read_only_udm.metadata.ingestion_labels.value em que a chave é sid O valor de content.fields.proc.sid do registro bruto é mapeado diretamente para esse campo do UDM.
content.fields.user.loginname read_only_udm.principal.user.user_display_name O valor de content.fields.user.loginname do registro bruto é mapeado diretamente para esse campo do UDM.
content.fields.user.uid read_only_udm.principal.user.userid O valor de content.fields.user.uid do registro bruto é mapeado diretamente para esse campo do UDM.
content.output read_only_udm.additional.fields.value.string_value em que a chave é content_output O valor de content.output do registro bruto é mapeado diretamente para esse campo do UDM.
content.policyId read_only_udm.security_result.rule_id O valor de content.policyId do registro bruto é mapeado diretamente para esse campo do UDM.
content.policyOrigin read_only_udm.additional.fields.value.string_value em que a chave é content_policyOrigin O valor de content.policyOrigin do registro bruto é mapeado diretamente para esse campo do UDM.
content.policyVersion read_only_udm.additional.fields.value.string_value em que a chave é content_policyVersion O valor de content.policyVersion do registro bruto é mapeado diretamente para esse campo do UDM.
content.ruleName read_only_udm.security_result.rule_name O valor de content.ruleName do registro bruto é mapeado diretamente para esse campo do UDM.
content.ruleTags read_only_udm.security_result.rule_labels Os valores na matriz content.ruleTags do registro bruto são mapeados para esse campo da UDM, com chaves geradas dinamicamente como "ruletag_index".
content.ruleType read_only_udm.additional.fields.value.string_value em que a chave é content_ruleType O valor de content.ruleType do registro bruto é mapeado diretamente para esse campo do UDM.
containerId read_only_udm.target.asset.asset_id O valor de containerId do registro bruto é precedido por "container_id:" e mapeado para esse campo da UDM.
description read_only_udm.metadata.description O valor de description do registro bruto é mapeado diretamente para esse campo do UDM.
id read_only_udm.metadata.product_log_id O valor de id do registro bruto é mapeado diretamente para esse campo do UDM.
labels.container.label.io.kubernetes.container.name read_only_udm.additional.fields.value.string_value em que a chave é container_name O valor de labels.container.label.io.kubernetes.container.name do registro bruto é mapeado diretamente para esse campo do UDM.
labels.container.label.io.kubernetes.pod.name read_only_udm.additional.fields.value.string_value em que a chave é pod_name O valor de labels.container.label.io.kubernetes.pod.name do registro bruto é mapeado diretamente para esse campo do 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 registro bruto é mapeado diretamente para esse campo do 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 registro bruto é mapeado diretamente para esse campo do UDM.
labels.aws.region read_only_udm.target.resource.attribute.cloud.availability_zone O valor de labels.aws.region do registro bruto é mapeado diretamente para esse campo do UDM.
labels.host.hostName read_only_udm.principal.ip OU read_only_udm.principal.hostname Se o valor contiver "ip", ele será analisado como um endereço IP e mapeado para principal.ip. Caso contrário, ele será mapeado para principal.hostname.
labels.host.mac read_only_udm.principal.mac O valor de labels.host.mac do registro bruto é mapeado diretamente para esse campo do UDM. Usado se machineId estiver vazio.
labels.kubernetes.cluster.name read_only_udm.additional.fields.value.string_value em que a chave é kubernetes_cluster_name O valor de labels.kubernetes.cluster.name do registro bruto é mapeado diretamente para esse campo do UDM.
labels.kubernetes.deployment.name read_only_udm.additional.fields.value.string_value em que a chave é kubernetes_deployment_name O valor de labels.kubernetes.deployment.name do registro bruto é mapeado diretamente para esse campo do UDM.
labels.kubernetes.namespace.name read_only_udm.principal.namespace O valor de labels.kubernetes.namespace.name do registro bruto é mapeado diretamente para esse campo do UDM.
labels.kubernetes.node.name read_only_udm.additional.fields.value.string_value em que a chave é kubernetes_node_name O valor de labels.kubernetes.node.name do registro bruto é mapeado diretamente para esse campo do UDM.
labels.kubernetes.pod.name read_only_udm.additional.fields.value.string_value em que a chave é pod_name O valor de labels.kubernetes.pod.name do registro bruto é mapeado diretamente para esse campo do UDM.
labels.kubernetes.service.name read_only_udm.additional.fields.value.string_value em que a chave é kubernetes_service_name O valor de labels.kubernetes.service.name do registro bruto é mapeado diretamente para esse campo do UDM.
machineId read_only_udm.principal.mac O valor de machineId do registro bruto é mapeado diretamente para esse campo do UDM.
name read_only_udm.security_result.summary O valor de name do registro bruto é mapeado diretamente para esse campo do UDM.
severity read_only_udm.security_result.severity O valor de severity do registro bruto é 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 registro bruto é mapeado diretamente para esse campo do UDM.
timestampRFC3339Nano read_only_udm.metadata.event_timestamp O valor de timestampRFC3339Nano do registro bruto é analisado como um carimbo de data/hora e mapeado para esse campo da UDM.
type read_only_udm.metadata.product_event_type O valor de type do registro bruto é mapeado diretamente para esse campo do UDM.
(Lógica do analisador) read_only_udm.metadata.product_name Codificado como "SYSDIG".
(Lógica do analisador) read_only_udm.metadata.vendor_name Codificado como "SYSDIG".
(Lógica do analisador) read_only_udm.metadata.event_type Definido como "PROCESS_UNCATEGORIZED" por padrão ou "GENERIC_EVENT" se labels.host.hostName estiver vazio.
(Lógica do analisador) read_only_udm.metadata.log_type Codificado como "SYSDIG".
(Lógica do analisador) read_only_udm.target.resource.resource_type Defina como "CLOUD_PROJECT" se labels.aws.instanceId existir.

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