Coletar registros do Wiz
Este documento explica como ingerir registros do Wiz no Google Security Operations. O analisador transforma registros brutos formatados em JSON da Wiz em um modelo de dados unificado (UDM). Primeiro, ele inicializa os valores padrão para campos da UDM e, em seguida, analisa a mensagem JSON, extrai campos relevantes, como informações do usuário, local, detalhes do dispositivo e resultados de segurança. A Wiz é uma plataforma de segurança na nuvem que oferece visibilidade de ponta a ponta sem agente e priorização de riscos em ambientes do Google Cloud, AWS, Azure, OCI e Kubernetes.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Instância do Google SecOps
- Acesso privilegiado ao Wiz
Receber o ID do cliente do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Perfil.
- Copie e salve o ID do cliente na seção Detalhes da organização.
Receber o arquivo de autenticação de ingestão do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Agentes de coleta.
- Faça o download do arquivo de autenticação de ingestão e salve-o em um local seguro.
Configurar a integração no Wiz
- Faça login na UI da Web do Wiz.
- Acesse a página Conectar ao Wiz.
- Clique em Google Cloud Chronicle.
- Selecione o Escopo.
- Insira seu ID de cliente do Google SecOps.
- Insira o endereço do endpoint da sua instância do Google SecOps.
- Canadá: https://northamerica-northeast2-malachiteingestion-pa.googleapis.com
- Dammam: https://me-central2-malachiteingestion-pa.googleapis.com
- Multirregião da Europa: https://europe-malachiteingestion-pa.googleapis.com
- Frankfurt: https://europe-west3-malachiteingestion-pa.googleapis.com
- Londres: https://europe-west2-malachiteingestion-pa.googleapis.com
- Mumbai: https://asia-south1-malachiteingestion-pa.googleapis.com
- Singapura: https://asia-southeast1-malachiteingestion-pa.googleapis.com
- Sydney: https://australia-southeast1-malachiteingestion-pa.googleapis.com
- Tel Aviv: https://me-west1-malachiteingestion-pa.googleapis.com
- Tóquio: https://asia-northeast1-malachiteingestion-pa.googleapis.com
- Multirregião dos Estados Unidos: https://malachiteingestion-pa.googleapis.com
- Zurique: https://europe-west6-malachiteingestion-pa.googleapis.com
- Faça upload do arquivo de autenticação de ingestão.
- Clique em Salvar.
Tabela de mapeamento da UDM
| Campo de registro | Mapeamento da UDM | Lógica |
|---|---|---|
| ação | metadata.product_event_type | Mapeamento direto quando eventType está vazio. |
| ação | principal.application | Mapeamento direto quando a ação é Report e serviceAccount.name não está vazio. |
| actionParameters.groups | security_result.detection_fields.value | O analisador itera por cada grupo em actionParameters.groups e o mapeia para uma entrada detection_fields separada com a chave service_account_group. |
| actionParameters.input.patch.portalVisitHistory.dateTime | additional.fields.value.string_value | O analisador itera por cada item em actionParameters.input.patch.portalVisitHistory e extrai o campo dateTime, mapeando-o para uma entrada additional.fields separada com a chave dateTime {index}. |
| actionParameters.input.patch.portalVisitHistory.id | principal.resource.attribute.labels.value | O analisador itera por cada item em actionParameters.input.patch.portalVisitHistory e extrai o campo "id", mapeando-o para uma entrada principal.resource.attribute.labels separada com a chave id {index}. |
| actionParameters.input.patch.portalVisitHistory.name | principal.resource.attribute.labels.value | O analisador itera por cada item em actionParameters.input.patch.portalVisitHistory e extrai o campo "name", mapeando-o para uma entrada principal.resource.attribute.labels separada com a chave name {index}. |
| actionParameters.input.patch.portalVisitHistory.resourceName | principal.resource.attribute.labels.value | O analisador itera por cada item em actionParameters.input.patch.portalVisitHistory e extrai o campo resourceName, mapeando-o para uma entrada principal.resource.attribute.labels separada com a chave resourceName {index}. |
| actionParameters.input.patch.portalVisitHistory.resourceType | principal.resource.attribute.labels.value | O analisador itera por cada item em "actionParameters.input.patch.portalVisitHistory" e extrai o campo "resourceType", mapeando-o para uma entrada "principal.resource.attribute.labels" separada com a chave resourceType {index}. |
| actionParameters.input.patch.portalVisitHistory.ruleType | principal.resource.attribute.labels.value | O analisador itera por cada item em actionParameters.input.patch.portalVisitHistory e extrai o campo ruleType, mapeando-o para uma entrada principal.resource.attribute.labels separada com a chave ruleType {index}. |
| actionParameters.input.patch.portalVisitHistory.type | additional.fields.value.string_value | O analisador itera por cada item em actionParameters.input.patch.portalVisitHistory e extrai o campo "type", mapeando-o para uma entrada "additional.fields" separada com a chave type {index}. |
| actionParameters.name | target.user.user_display_name | Mapeamento direto quando "actionParameters.name" não está vazio. |
| actionParameters.products | security_result.detection_fields.value | O analisador itera por cada produto em actionParameters.products (exceto strings vazias e *) e o mapeia para uma entrada detection_fields separada com a chave service_account_product. |
| actionParameters.role | target.user.attribute.roles.name | Mapeamento direto quando actionParameters.role não está vazio. |
| actionParameters.scopes | security_result.detection_fields.value | O analisador itera por cada escopo em "actionParameters.scopes" e o mapeia para uma entrada "detection_fields" separada com a chave service_account_scope. |
| actionParameters.selection | additional.fields.value.list_value.values.string_value | O analisador itera por cada item em actionParameters.selection.preferences e o mapeia para uma entrada string_value separada em additional.fields.value.list_value.values. |
| actionParameters.userEmail | target.user.email_addresses | Extraído usando um padrão grok e mapeado quando não está vazio. |
| actionParameters.userID | target.user.userid | Mapeamento direto quando actionParameters.userID não está vazio. |
| actor.displayName | target.user.user_display_name | Mapeamento direto quando actor.displayName não está vazio e não é unknown. |
| actor.id | target.user.userid | Mapeamento direto quando actor.id não está vazio. |
| authenticationContext.authenticationProvider | security_result.detection_fields.value | Mapeado para uma entrada "detection_fields" com a chave authenticationProvider quando não está vazio. |
| authenticationContext.credentialProvider | security_result.detection_fields.value | Mapeado para uma entrada "detection_fields" com a chave credentialProvider quando não está vazio. |
| authenticationContext.credentialType | extensions.auth.mechanism | Usado para derivar o valor de "extensions.auth.mechanism" com base em valores específicos. |
| authenticationContext.externalSessionId | network.parent_session_id | Mapeamento direto quando não está vazio e não é unknown. |
| client.device | principal.asset.type | Usado para derivar o valor de "principal.asset.type" com base em valores específicos. |
| client.geographicalContext.city | principal.location.city | Mapeamento direto quando não está vazio. |
| client.geographicalContext.country | principal.location.country_or_region | Mapeamento direto quando não está vazio. |
| client.geographicalContext.geolocation.lat | principal.location.region_latitude | Mapeamento direto quando não está vazio. |
| client.geographicalContext.geolocation.lon | principal.location.region_longitude | Mapeamento direto quando não está vazio. |
| client.geographicalContext.postalCode | additional.fields.value.string_value | Mapeado para uma entrada "additional.fields" com a chave Postal code quando não está vazia. |
| client.geographicalContext.state | principal.location.state | Mapeamento direto quando não está vazio. |
| client.ipAddress | principal.asset.ip | Mesclado com "principal.ip" e "principal.asset.ip" quando não está vazio. |
| client.ipAddress | principal.ip | Mesclado com "principal.ip" e "principal.asset.ip" quando não está vazio. |
| client.userAgent.browser | target.resource.attribute.labels.value | Mapeado para uma entrada "target.resource.attribute.labels" com a chave Browser quando não está vazia. |
| client.userAgent.os | principal.platform | Usado para derivar o valor de "principal.platform" com base em valores específicos. |
| client.userAgent.rawUserAgent | network.http.user_agent | Mapeamento direto quando não está vazio. |
| debugContext.debugData.behaviors | security_result.description | Mapeamento direto quando não está vazio. |
| debugContext.debugData.deviceFingerprint | target.asset.asset_id | Mapeado para target.asset.asset_id com o prefixo device_finger_print: quando não está vazio. |
| debugContext.debugData.dtHash | security_result.detection_fields.value | Mapeado para uma entrada "detection_fields" com a chave dtHash quando não está vazio. |
| debugContext.debugData.factor | security_result.detection_fields.value | Mapeado para uma entrada "detection_fields" com a chave factor quando não está vazio. |
| debugContext.debugData.promptingPolicyTypes | security_result.detection_fields.value | Mapeado para uma entrada "detection_fields" com a chave promptingPolicyTypes quando não está vazio. |
| debugContext.debugData.requestUri | extensions.auth.auth_details | Mapeamento direto quando não está vazio. |
| eventType | metadata.event_type | Usado para derivar o valor de "metadata.event_type" com base em valores específicos. |
| eventType | metadata.product_event_type | Mapeamento direto quando não está vazio. |
| outcome.reason | security_result.category_details | Mapeamento direto quando não está vazio. |
| outcome.result | security_result.action | Mapeado para security_result.action após a normalização com base em valores específicos. |
| requestId | metadata.product_log_id | Mapeamento direto quando não está vazio. |
| serviceAccount.name | principal.application | Mapeamento direto quando a ação é Report e serviceAccount.name não está vazio. |
| sourceIP | principal.asset.ip | Extraído usando um padrão grok e mesclado com principal.ip e principal.asset.ip quando não está vazio e é válido. |
| sourceIP | principal.ip | Extraído usando um padrão grok e mesclado com principal.ip e principal.asset.ip quando não está vazio e é válido. |
| status | security_result.summary | Mapeamento direto quando não está vazio. |
| timestamp | metadata.event_timestamp | Convertido para o formato de carimbo de data/hora e mapeado quando não está vazio. |
| user.id | target.user.userid | Mapeamento direto quando actionParameters.userID está vazio e user.id não está. |
| user.name | target.user.user_display_name | Mapeamento direto quando "actionParameters.name" está vazio e "user.name" não está. |
| userAgent | network.http.user_agent | Mapeamento direto quando client.userAgent.rawUserAgent está vazio e userAgent não está vazio. |
| extensions.auth.type | Definido como AUTHTYPE_UNSPECIFIED quando has_user é verdadeiro e a ação é Login. |
|
| metadata.product_name | Defina como WIZ_IO. |
|
| metadata.vendor_name | Defina como WIZ_IO. |
|
| network.http.parsed_user_agent | Derivado de user_agent_value ao convertê-lo em parseduseragent. | |
| security_result.severity | Derivada da gravidade com base em valores específicos, sendo o padrão LOW. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.