Recolha registos do Sysdig
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
Aceda à Google Cloud consola > Credenciais.
Clique em Criar credenciais e, de seguida, selecione Chave de API.
Restrinja o acesso da chave de API à API Google Security Operations.
Opção 1
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 Sysdig.
- Selecione Webhook como o Tipo de origem.
- Selecione Sysdig como o Tipo de registo.
- Clicar em Seguinte.
Opcional: especifique valores para os seguintes parâmetros de entrada:
- Delimitador de divisão: o delimitador usado para separar linhas de registo, como
\n
.
- Delimitador de divisão: o delimitador usado para separar linhas de registo, como
Clicar em Seguinte.
Reveja a configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.
Clique em Gerar chave secreta para gerar uma chave secreta para autenticar este feed.
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.
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.
Clique em Concluído.
Especifique o URL do ponto final
- Na aplicação cliente, especifique o URL do ponto final HTTPS fornecido no feed do webhook.
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.
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
- Inicie sessão no Sysdig Secure com privilégios de administrador.
- Aceda a Perfil > Definições > Encaminhamento de eventos.
- Clique em + Adicionar integração e selecione Webhook no menu pendente.
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
- Inicie sessão no Sysdig Secure com as suas credenciais de administrador.
- Aceda a Definições > Encaminhamento de eventos.
- Clique em + Adicionar integração e selecione Google Chronicle no menu pendente.
- 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.