Coletar registros do Sysdig
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
Acesse console doGoogle Cloud > Credenciais.
Clique em Criar credenciais e, em seguida, selecione Chave de API.
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:
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Na próxima página, clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed, por exemplo, Registros do Sysdig.
- Selecione Webhook como o Tipo de origem.
- Selecione Sysdig como o Tipo de registro.
- Clique em Próxima.
Opcional: especifique valores para os seguintes parâmetros de entrada:
- Delimitador de divisão: o delimitador usado para separar linhas de registro, como
\n
.
- Delimitador de divisão: o delimitador usado para separar linhas de registro, como
Clique em Próxima.
Revise a configuração do feed na tela Finalizar e clique em Enviar.
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.
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
- No aplicativo cliente, especifique o URL do endpoint HTTPS fornecido no feed do webhook.
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.
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
- Faça login no Sysdig Secure com privilégios de administrador.
- Acesse Perfil > Configurações > Encaminhamento de eventos.
- Clique em + Adicionar integração e selecione Webhook no menu suspenso.
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
- Faça login no Sysdig Secure usando suas credenciais de administrador.
- Acesse Configurações > Encaminhamento de eventos.
- Clique em + Adicionar integração e selecione Google Chronicle no menu suspenso.
- 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.