Coletar registros do Oracle Cloud Infrastructure - Oracle Cloud Guard
Neste documento, explicamos como configurar o Cloud Guard da Oracle Cloud Infrastructure para enviar registros ao Google Security Operations usando webhooks.
O Oracle Cloud Guard é um serviço de segurança nativo da nuvem que monitora, identifica e ajuda a manter uma postura de segurança forte na Oracle Cloud Infrastructure (OCI). O Cloud Guard examina os recursos da OCI em busca de falhas de segurança relacionadas à configuração e detecta atividades anômalas. Quando o Cloud Guard descobre um desvio de uma regra de detecção, ele cria um evento de problema que fornece monitoramento de segurança abrangente em toda a locação da OCI. Essa integração usa o serviço de eventos da OCI e as funções da OCI para encaminhar eventos de problemas do Cloud Guard para o Google SecOps quase em tempo real.
Antes de começar
Verifique se você atende os seguintes pré-requisitos:
- Uma instância do Google SecOps
- Uma locação ativa da infraestrutura em nuvem da Oracle com o Cloud Guard ativado.
- Acesso de administrador ao console da Oracle Cloud Infrastructure
- Permissões para criar e gerenciar aplicativos do OCI Functions
- Permissões para criar regras de eventos do OCI e tópicos de notificações
- Acesso ao Cloud Shell da OCI ou a um ambiente local com a CLI do Fn Project instalada
- Docker instalado (para criar funções OCI localmente)
- Acesso ao console do Google Cloud (para criar chaves de API)
Criar um feed de webhook no Google SecOps
Criar o feed
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Na página seguinte, clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
OCI Cloud Guard Problems). - Selecione Webhook como o Tipo de origem.
- Selecione Oracle Cloud Infrastructure - Oracle Cloud Guard como o Tipo de registro.
- Clique em Próxima.
- Especifique valores para os seguintes parâmetros de entrada:
- Delimitador de divisão (opcional): deixe em branco (cada invocação de função envia um único evento).
- Namespace do recurso: o namespace do recurso.
- Rótulos de ingestão: o rótulo a ser aplicado aos eventos desse feed.
- Clique em Próxima.
- Revise a configuração do novo feed na tela Finalizar e clique em Enviar.
Gerar e salvar a chave secreta
Depois de criar o feed, gere uma chave secreta para autenticação:
- Na página de detalhes do feed, clique em Gerar chave secreta.
- Uma caixa de diálogo mostra a chave secreta.
- Copie e salve a chave secreta com segurança.
Importante: a chave secreta é exibida apenas uma vez e não pode ser recuperada depois. Se você perder a chave, será necessário gerar outra.
Receber o URL do endpoint do feed
- Acesse a guia Detalhes do feed.
- Na seção Informações do endpoint, copie o URL do endpoint do feed.
O formato do URL é:
https://{region}-chronicle.googleapis.com/v1/{parent}/logs:importEm que
{region}é a região da sua instância do Google SecOps (por exemplo,us,europeouasia-southeast1) e{parent}é o caminho do recurso no formatoprojects/<PROJECT_ID>/locations/<LOCATION>/instances/<INSTANCE_ID>/logTypes/<LOG_TYPE>.Salve esse URL para as próximas etapas.
Clique em Concluído.
Criar chave de API do Google Cloud
O Chronicle exige uma chave de API para autenticação. Crie uma chave de API restrita no console do Google Cloud.
Criar a chave de API
- Acesse a página "Credenciais" do console do Google Cloud.
- Selecione seu projeto (aquele associado à sua instância do Chronicle).
- Clique em Criar credenciais > Chave de API.
- Uma chave de API é criada e exibida em uma caixa de diálogo.
- Clique em Editar chave de API para restringir a chave.
Restringir a chave de API
- Na página de configurações da chave de API:
- Nome: insira um nome descritivo (por exemplo,
Chronicle Webhook API Key).
- Nome: insira um nome descritivo (por exemplo,
- Em Restrições de API:
- Selecione Restringir chave.
- No menu suspenso Selecionar APIs, pesquise e selecione API Google SecOps (ou API Chronicle).
- Clique em Salvar.
- Copie o valor da chave de API do campo Chave de API na parte de cima da página.
Salve a chave de API com segurança.
Ativar o Cloud Guard Cloud Event Responder
O Cloud Guard usa o Cloud Event Responder para emitir detalhes do problema para o serviço de eventos da OCI. O responder de eventos do Cloud faz parte da receita de responder e precisa ser ativado e configurado para execução automática.
Ativar a regra de evento do Cloud na receita do Responder
- Faça login no console da Oracle Cloud Infrastructure.
- Abra o menu de navegação e selecione Identidade e segurança > Cloud Guard > Receitas.
- Selecione Responder Recipes.
- Clique na receita de resposta anexada ao seu destino.
- Na seção Regras do respondente, localize a regra Eventos do Cloud.
- Se o status for Desativado:
- Abra o menu Ações (três pontos) e selecione Editar.
- Mude o Status para Ativado.
- Clique em Salvar.
Configurar a execução automática no destino
- No console do Oracle Cloud Infrastructure, abra o menu de navegação e selecione Identidade e segurança > Cloud Guard > Configuração > Destinos.
- Selecione o compartimento de destino.
- Em Recursos, selecione Receitas do Respondente.
- Clique no link da receita do respondente.
- Localize a regra de resposta do evento do Cloud.
- Abra o menu Ações (três pontos) e selecione Editar.
- Defina o Acionador da regra como Executar automaticamente.
- Marque a caixa de seleção CONFIRMAR EXECUÇÃO AUTOMÁTICA.
Clique em Salvar.
Criar aplicativo do OCI Functions
Crie um aplicativo do OCI Functions que hospedará a função responsável por encaminhar eventos do Cloud Guard para o Google SecOps.
Criar aplicativo
- No console da Oracle Cloud Infrastructure, abra o menu de navegação e selecione Developer Services > Functions > Applications.
- Selecione o compartimento em que você quer criar o aplicativo.
- Clique em Criar aplicativo.
- Informe os seguintes detalhes de configuração:
- Nome: insira
cloudguard-chronicle-forwarder. - VCN: selecione uma VCN com acesso à Internet (necessário para que a função alcance o endpoint do webhook do Chronicle)
- Sub-redes: selecione uma sub-rede pública ou privada com um gateway NAT configurado.
- Nome: insira
- Clique em Criar.
Criar e implantar a função
Use o Cloud Shell da OCI ou um ambiente local com a CLI do Fn Project para criar e implantar a função.
- Abra o Cloud Shell da OCI no console da Oracle Cloud Infrastructure (clique no ícone do Cloud Shell na barra de navegação superior).
Configure o contexto do Fn para seu aplicativo do OCI Functions:
fn list context fn use context <your-region-context> fn update context oracle.compartment-id <compartment_OCID> fn update context registry <region-key>.ocir.io/<tenancy-namespace>/cloudguard-chronicleInicialize uma nova função do Python:
fn init --runtime python cloudguard-to-chronicle cd cloudguard-to-chronicleSubstitua o conteúdo do arquivo
func.pypelo seguinte código:import io import json import logging import requests from fdk import response def handler(ctx, data: io.BytesIO = None): """ OCI Function that receives Cloud Guard events from OCI Events Service and forwards them to Google SecOps (Chronicle) webhook endpoint. """ logger = logging.getLogger() try: cfg = ctx.Config() chronicle_endpoint = cfg.get("CHRONICLE_ENDPOINT") chronicle_api_key = cfg.get("CHRONICLE_API_KEY") chronicle_secret = cfg.get("CHRONICLE_SECRET") if not all([chronicle_endpoint, chronicle_api_key, chronicle_secret]): logger.error("Missing required configuration: CHRONICLE_ENDPOINT, CHRONICLE_API_KEY, or CHRONICLE_SECRET") return response.Response( ctx, response_data=json.dumps({"error": "Missing configuration"}), headers={"Content-Type": "application/json"}, status_code=500 ) event_data = json.loads(data.getvalue()) logger.info(f"Received Cloud Guard event: {event_data.get('eventType', 'unknown')}") webhook_url = f"{chronicle_endpoint}?key={chronicle_api_key}&secret={chronicle_secret}" headers = { "Content-Type": "application/json" } resp = requests.post( webhook_url, json=event_data, headers=headers, timeout=30 ) if resp.status_code >= 200 and resp.status_code < 300: logger.info(f"Successfully forwarded event to Chronicle (HTTP {resp.status_code})") else: logger.error(f"Failed to forward event to Chronicle (HTTP {resp.status_code}): {resp.text}") return response.Response( ctx, response_data=json.dumps({"status": resp.status_code}), headers={"Content-Type": "application/json"}, status_code=200 ) except Exception as e: logger.error(f"Error processing Cloud Guard event: {str(e)}") return response.Response( ctx, response_data=json.dumps({"error": str(e)}), headers={"Content-Type": "application/json"}, status_code=500 )Substitua o conteúdo do arquivo
requirements.txt:fdk>=0.1.0 requests>=2.25.0Implante a função no aplicativo:
fn -v deploy --app cloudguard-chronicle-forwarderAguarde até que a implantação seja concluída.
Configurar variáveis de ambiente de função
- No console da Oracle Cloud Infrastructure, abra o menu de navegação e selecione Serviços para desenvolvedores > Funções > Aplicativos.
- Clique no aplicativo cloudguard-chronicle-forwarder.
- Em Recursos, selecione Funções.
- Clique na função cloudguard-to-chronicle.
- Em Recursos, selecione Configuração.
Clique em Editar e adicione os seguintes pares de chave-valor:
Chave Valor CHRONICLE_ENDPOINTO URL do endpoint do webhook do Chronicle (por exemplo, https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import)CHRONICLE_API_KEYA chave de API do Google Cloud criada para o webhook do Chronicle CHRONICLE_SECRETA chave secreta do webhook do Chronicle Clique em Salvar.
Criar políticas do IAM para o OCI Functions
O serviço OCI Functions e o serviço Events exigem políticas do IAM para invocar a função.
Criar um grupo dinâmico para a função
- No console da Oracle Cloud Infrastructure, abra o menu de navegação e selecione Identidade e segurança > Domínios.
- Selecione o domínio Padrão.
- Em Recursos do domínio de identidade, selecione Grupos dinâmicos.
- Clique em Criar grupo dinâmico.
Informe os seguintes detalhes de configuração:
- Nome: insira
cloudguard-chronicle-functions. - Descrição: insira
Dynamic group for Cloud Guard to Chronicle forwarder function - Regras de correspondência: insira a seguinte regra:
ALL {resource.type = 'fnfunc', resource.compartment.id = '<compartment_OCID>'}- Nome: insira
Clique em Criar.
Criar políticas do IAM
- No console do Oracle Cloud Infrastructure, abra o menu de navegação e selecione Identidade e segurança > Políticas.
- Verifique se você está no compartimento raiz.
- Clique em Criar política.
- Informe os seguintes detalhes de configuração:
- Nome: insira
cloudguard-chronicle-policy. - Descrição: insira
Allows Events Service to invoke Cloud Guard Chronicle forwarder function. - Compartimento: verifique se o compartimento raiz está selecionado.
- Nome: insira
- Na seção Criador de políticas, ative a opção Mostrar editor manual.
No campo Statement, insira as seguintes instruções de política:
Allow dynamic-group cloudguard-chronicle-functions to use fn-function in compartment <compartment_name> Allow dynamic-group cloudguard-chronicle-functions to use fn-invocation in compartment <compartment_name> Allow service cloudguardevents to use fn-function in compartment <compartment_name> Allow service cloudguardevents to use fn-invocation in compartment <compartment_name>Clique em Criar.
Criar regra de eventos da OCI para o Cloud Guard
Crie uma regra de eventos que acione a função do OCI quando o Cloud Guard detectar, dispensar ou corrigir um problema.
Criar a regra de eventos
No console da Oracle Cloud Infrastructure, abra o menu de navegação e selecione Observabilidade e gerenciamento > Serviço de eventos > Regras.
Clique em Criar regra.
Informe os seguintes detalhes de configuração:
- Nome de exibição: insira
cloudguard-to-chronicle - Descrição: insira
Forwards Cloud Guard problem events to Google SecOps via OCI Functions.
- Nome de exibição: insira
Na seção Condições da regra:
- Defina Condição como Tipo de evento.
- Defina o Nome do serviço como Cloud Guard.
- Defina o Tipo de evento como o seguinte (selecione vários):
- Detectado - Problema
- Dispensado: problema
- Corrigido - Problema
Na seção Ações:
- Defina Tipo de ação como Funções.
- Defina Compartimento da função como o compartimento que contém o aplicativo da função.
- Defina Aplicativo de função como cloudguard-chronicle-forwarder.
- Defina Função como cloudguard-to-chronicle.
Clique em Criar regra.
Opcional: filtrar por nível de risco
Para encaminhar apenas problemas de alta gravidade, adicione um filtro de atributo à regra de eventos:
- Na seção Condições da regra, clique em + Outra condição.
- Defina Condição como Atributo.
- Defina o Nome do atributo como
riskLevel. Defina os valores de atributo para os níveis de risco desejados:
CRITICALHIGH
Verificar a integração
Testar a função manualmente
- No console do Oracle Cloud Infrastructure, abra o menu de navegação e selecione Serviços para desenvolvedores > Funções > Aplicativos.
- Clique no aplicativo cloudguard-chronicle-forwarder.
- Em Recursos, selecione Funções.
- Clique na função cloudguard-to-chronicle.
Clique em Invoke para testar a função com dados de amostra ou use o Cloud Shell da OCI:
echo '{"eventType":"com.oraclecloud.cloudguard.problemdetected","cloudEventsVersion":"0.1","eventID":"test-event-001","data":{"compartmentId":"ocid1.compartment.oc1..example","resourceName":"test-problem","additionalDetails":{"riskLevel":"HIGH","problemDescription":"Test problem for integration verification","status":"OPEN","region":"us-ashburn-1"}}}' | fn invoke cloudguard-chronicle-forwarder cloudguard-to-chroniclePara verificar os registros da função, navegue até Serviços para desenvolvedores > Functions > Applications > cloudguard-chronicle-forwarder e selecione a seção Registros.
Procure entradas de registro que confirmem o encaminhamento:
Received Cloud Guard event: com.oraclecloud.cloudguard.problemdetected Successfully forwarded event to Chronicle (HTTP 200)
Verificar no Google SecOps
- Faça login no Google SecOps.
- Acesse Pesquisar e consulte eventos com o tipo de registro
OCI_CLOUDGUARD. - Verifique se os eventos de problema do Cloud Guard aparecem nos resultados da pesquisa.
Se os eventos não aparecerem:
- Verifique o URL do endpoint do webhook do Chronicle, a chave de API e a chave secreta na configuração da função.
- Verifique se a regra de eventos está na região correta da OCI (região de relatórios do Cloud Guard).
- Confirme se o Cloud Event Responder está ativado e definido para execução automática.
- Analisar os registros de função em busca de mensagens de erro
Referência dos tipos de eventos do Cloud Guard
O Cloud Guard emite os seguintes tipos de evento pelo serviço de eventos da OCI:
| Tipo de evento | Gatilho |
|---|---|
com.oraclecloud.cloudguard.problemdetected |
Um novo problema é detectado |
com.oraclecloud.cloudguard.problemdismissed |
Um problema é dispensado |
com.oraclecloud.cloudguard.problemremediated |
Um problema é corrigido |
com.oraclecloud.cloudguard.sightingdetected |
Uma nova aparição é detectada |
Referência de métodos de autenticação
Os feeds de webhook do Chronicle são compatíveis com vários métodos de autenticação. Escolha o método compatível com seu fornecedor.
Método 1: cabeçalhos personalizados (recomendado)
Se o fornecedor for compatível com cabeçalhos HTTP personalizados, use esse método para melhorar a segurança.
Formato da solicitação:
POST <ENDPOINT_URL> HTTP/1.1 Content-Type: application/json x-goog-chronicle-auth: <API_KEY> x-chronicle-auth: <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
Vantagens:
- Chave de API e secret não visíveis no URL
- Mais seguro (cabeçalhos não registrados em registros de acesso ao servidor da Web)
- Método preferencial quando o fornecedor oferece suporte
Método 2: parâmetros de consulta
Se o fornecedor não aceitar cabeçalhos personalizados, adicione as credenciais ao URL.
Formato do URL:
<ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>Exemplo:
https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?key=AIzaSyD...&secret=abcd1234...Formato da solicitação:
POST <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY> HTTP/1.1 Content-Type: application/json { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
Desvantagens:
- Credenciais visíveis no URL
- Pode ser registrado em registros de acesso do servidor da Web.
- Menos seguro do que cabeçalhos
Método 3: híbrido (URL + cabeçalho)
Algumas configurações usam a chave de API no URL e a chave secreta no cabeçalho.
Formato da solicitação:
POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1 Content-Type: application/json x-chronicle-auth: <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
Nomes dos cabeçalhos de autenticação
O Chronicle aceita os seguintes nomes de cabeçalho para autenticação:
Para chave de API:
x-goog-chronicle-auth(recomendado)X-Goog-Chronicle-Auth(não diferencia maiúsculas de minúsculas)
Para a chave secreta:
x-chronicle-auth(recomendado)X-Chronicle-Auth(não diferencia maiúsculas de minúsculas)
Limites e práticas recomendadas de webhook
Limites de solicitações
| Limite | Valor |
|---|---|
| Tamanho máximo da solicitação | 4 MB |
| QPS máximo (consultas por segundo) | 15.000 |
| Tempo limite da solicitação | 30 segundos |
| Comportamento de repetição | Automático com espera exponencial |
Tabela de mapeamento de UDM
| Campo de registro | Mapeamento de UDM | Lógica |
|---|---|---|
| contentType | additional.fields | Mesclado de vários campos adicionais |
| cloudEventsVersion | additional.fields | |
| data.additionalDetails.reason | additional.fields | |
| data.additionalDetails.tenantId | additional.fields | |
| data.additionalDetails.problemType | additional.fields | |
| data.resourceName | additional.fields | |
| data.resourceId | additional.fields | |
| status | additional.fields | |
| problem_recommendation | additional.fields | |
| compartment_id | additional.fields | |
| compartment_name | additional.fields | |
| product_event | extensions.auth.type | Defina como "AUTHTYPE_UNSPECIFIED" se product_event corresponder ao login. |
| data.additionalDetails.problemDescription | metadata.description | Valor de data.additionalDetails.problemDescription se não estiver vazio, caso contrário, data.additionalDetails.description |
| data.additionalDetails.description | metadata.description | |
| has_user | metadata.event_type | Definido como USER_RESOURCE_ACCESS se has_user e has_target_resource, USER_UNCATEGORIZED se has_user, USER_LOGIN se product_event corresponder ao login, STATUS_UPDATE se has_principal, caso contrário, GENERIC_EVENT |
| has_target_resource | metadata.event_type | |
| product_event | metadata.event_type | |
| has_principal | metadata.event_type | |
| eventType | metadata.product_event_type | Valor de eventType se não estiver vazio, caso contrário, product_event |
| product_event | metadata.product_event_type | |
| eventID | metadata.product_log_id | Valor copiado diretamente |
| versão | metadata.product_version | Valor copiado diretamente |
| observador | observer.domain.name | Domínio extraído do observador usando grok |
| observador | observer.hostname | Valor do observador se não for IP |
| observador | observer.ip | Valor do observador se for IP |
| participante | principal.administrative_domain | Domínio extraído de principal ou principal_host usando grok |
| principal_host | principal.administrative_domain | |
| data.additionalDetails.problemAdditionalDetails.public_ips | principal.asset.ip | Valor de data.additionalDetails.problemAdditionalDetails.public_ips se não estiver vazio, caso contrário, vnicDetails.0.vnicPublicIp se não estiver vazio, caso contrário, de principal se for IP, caso contrário, principal_host se for IP |
| vnicDetails.0.vnicPublicIp | principal.asset.ip | |
| participante | principal.asset.ip | |
| principal_host | principal.asset.ip | |
| participante | principal.hostname | Valor de principal se não for IP, caso contrário, principal_host se não for IP |
| principal_host | principal.hostname | |
| data.additionalDetails.problemAdditionalDetails.public_ips | principal.ip | Valor de data.additionalDetails.problemAdditionalDetails.public_ips se não estiver vazio, caso contrário, vnicDetails.0.vnicPublicIp se não estiver vazio, caso contrário, de principal se for IP, caso contrário, principal_host se for IP |
| vnicDetails.0.vnicPublicIp | principal.ip | |
| participante | principal.ip | |
| principal_host | principal.ip | |
| data.additionalDetails.region | principal.location.name | Valor copiado diretamente |
| principal_port | principal.port | Convertido para número inteiro de principal_port |
| data.additionalDetails.resourceName | principal.resource.name | Valor de data.additionalDetails.resourceName, se não estiver vazio. Caso contrário, data.additionalDetails.principalResourceName |
| data.additionalDetails.principalResourceName | principal.resource.name | |
| data.additionalDetails.resourceId | principal.resource.product_object_id | Valor de data.additionalDetails.resourceId se não estiver vazio, caso contrário, data.additionalDetails.principalResourceId |
| data.additionalDetails.principalResourceId | principal.resource.product_object_id | |
| data.additionalDetails.resourceType | principal.resource.resource_subtype | Valor de "data.additionalDetails.resourceType" se não estiver vazio. Caso contrário, "data.additionalDetails.principalResourceType". |
| data.additionalDetails.principalResourceType | principal.resource.resource_subtype | |
| data.additionalDetails.resourceName | principal.user.userid | Valor de data.additionalDetails.resourceName se data.additionalDetails.resourceType == "User", caso contrário, de data.additionalDetails.principalResourceName se data.additionalDetails.principalResourceType == "User" |
| data.additionalDetails.principalResourceName | principal.user.userid | |
| ação | security_result.action | Definido como BLOCK se a ação corresponder ao bloqueio, ALLOW se for bem-sucedida, FAIL se falhar e UNKNOWN caso contrário. |
| ação | security_result.action_details | Valor copiado diretamente |
| data.additionalDetails.tacticName | security_result.attack_details.tactics | Valor copiado diretamente para tactic_data.name e mesclado |
| data.additionalDetails.techniqueName | security_result.attack_details.techniques | Valor copiado diretamente para "technique_data.name" e mesclado |
| data.additionalDetails.confidence | security_result.confidence_score | Valor copiado diretamente |
| sightingType | security_result.detection_fields | Mesclado dos rótulos sightingType, sightingScore e riskScore |
| sightingScore | security_result.detection_fields | |
| riskScore | security_result.detection_fields | |
| data.additionalDetails.detectorRuleId | security_result.rule_id | Valor copiado diretamente |
| data.additionalDetails.detectorRuleType | security_result.rule_name | Valor copiado diretamente |
| gravidade, | security_result.severity | Defina como INFORMATIONAL se a gravidade for INFO, LOW se for Low, MEDIUM se for WARN, HIGH se for High, CRITICAL se for Critical |
| gravidade, | security_result.severity_details | Valor copiado diretamente |
| destino | target.administrative_domain | Domínio extraído de "target" ou "target_host" usando grok. |
| target_host | target.administrative_domain | |
| destino | target.hostname | Valor do destino, se não for IP, caso contrário, target_host, se não for IP |
| target_host | target.hostname | |
| destino | target.ip | Valor do destino se IP, caso contrário, target_host se IP |
| target_host | target.ip | |
| target_port | target.port | Convertido em número inteiro de target_port |
| targetId | target.resource.attribute.labels | Mesclado de vários campos de rótulo |
| rótulos | target.resource.attribute.labels | |
| vnicAttachmentId | target.resource.attribute.labels | |
| vnicAttachmentDisplayName | target.resource.attribute.labels | |
| subnets | target.resource.attribute.labels | |
| instance_ocid | target.resource.attribute.labels | |
| route_table_ocids | target.resource.attribute.labels | |
| security_list_ocids | target.resource.attribute.labels | |
| data.additionalDetails.impactedResourceName | target.resource.name | Valor de data.additionalDetails.impactedResourceName se não estiver vazio. Caso contrário, vnicDetails.0.vnicDisplayName |
| vnicDetails.0.vnicDisplayName | target.resource.name | |
| data.additionalDetails.impactedResourceId | target.resource.product_object_id | Valor de data.additionalDetails.impactedResourceId se não estiver vazio, caso contrário, vnicDetails.0.vnicId |
| vnicDetails.0.vnicId | target.resource.product_object_id | |
| data.additionalDetails.impactedResourceType | target.resource.resource_subtype | Valor copiado diretamente |
| target_url | target.url | Valor copiado diretamente |
| target_user | target.user.userid | Valor copiado diretamente |
| produto | metadata.product_name | Valor copiado diretamente |
| fornecedor | metadata.vendor_name | Valor copiado diretamente |
data.additionalDetails.tacticName |
security_result.attack_details.tactics.name |
Mapeado do registro de alterações |
data.additionalDetails.techniqueName |
security_result.attack_details.techniques.name |
Mapeado do registro de alterações |
Registro de alterações
Confira o registro de alterações deste analisador
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.