Coletar registros de alertas do Palo Alto Prisma Cloud
Visão geral
Esse analisador extrai registros de alertas do Palo Alto Prisma Cloud no formato JSON, transformando-os no UDM. O analisador realiza normalização de dados, conversões de tipo e lógica condicional para preencher os campos adequados do UDM. Ele também processa estruturas JSON aninhadas e matrizes nos dados de registro para extrair informações relevantes.
Antes de começar
Verifique se você atende aos seguintes pré-requisitos:
- Instância do Google SecOps.
- Acesso privilegiado ao Prisma Cloud da Palo Alto.
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, Alertas do Prisma Cloud da PAN.
- Selecione Webhook como o Tipo de origem.
- Selecione Payload de alertas do Palo Alto Prisma Cloud 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.
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.
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 Security Operations.SECRET
: a chave secreta gerada para autenticar o feed.
Configurar o webhook da Palo Alto Prisma Cloud para o Google SecOps
- Faça login no Prisma Cloud da Palo Alto.
- Selecione Configurações > Integrações e notificações ((and_then)) Integrações.
- Clique em Adicionar integração.
- Selecione Webhook.
- Especifique valores para os seguintes parâmetros de entrada:
- Nome da integração: forneça um nome exclusivo e descritivo (por exemplo, Google SecOps).
- URL do webhook: insira o ENDPOINT_URL.
- Opcional: forneça uma Descrição da integração.
- Opcional: ative Payload personalizado > clique em Próxima para revisar ou alterar o payload personalizado.
- Clique em Próxima.
- Testar e Salvar integração.
Configurar alertas da Palo Alto Prisma Cloud
- No console do Palo Alto Prisma Cloud, acesse Alertas > Ver regras de alerta.
- Selecione uma regra de alerta para editar.
- Opcional: Criar um alerta para Infraestrutura de nuvem.
- Opcional: criar um alerta para carga de trabalho na nuvem.
- Acesse Configurar notificações.
- Selecione Webhook.
- Opcional: selecione os canais em que você quer enviar notificações de alertas acionados pela regra de alerta.
- Clique em Próxima.
- Clique em Salvar.
Tabela de mapeamento do UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
accountId |
target.resource.id |
O valor de accountId do registro bruto. |
accountId |
target.resource.product_object_id |
O valor de accountId do registro bruto. Isso substitui o campo resource.id descontinuado. |
alertId |
security_result.detection_fields[].key |
A chave é definida como "ID do alerta". |
alertId |
security_result.detection_fields[].value |
O valor de alertId do registro bruto. |
alertRuleId |
security_result.rule_id |
O valor de alertRuleId do registro bruto. |
alertRuleName |
security_result.rule_name |
O valor de alertRuleName do registro bruto. |
alertStatus |
security_result.detection_fields[].key |
A chave é definida como "status do alerta". |
alertStatus |
security_result.detection_fields[].value |
O valor de alertStatus do registro bruto. |
alertTs |
security_result.detection_fields[].key |
A chave é definida como "alertTs". |
alertTs |
security_result.detection_fields[].value |
O valor de alertTs do registro bruto, convertido em uma string. |
callbackUrl |
metadata.url_back_to_product |
O valor de callbackUrl do registro bruto. |
cloudType |
principal.cloud.environment |
Se cloudType for "gcp" (sem distinção entre maiúsculas e minúsculas), o valor será definido como "GOOGLE_CLOUD_PLATFORM". |
complianceMetadata[].complianceId |
security_result.detection_fields[].key |
A chave é definida como "complianceId". |
complianceMetadata[].complianceId |
security_result.detection_fields[].value |
O valor de complianceMetadata[].complianceId do registro bruto. |
complianceMetadata[].customAssigned |
security_result.detection_fields[].key |
A chave é definida como "customAssigned". |
complianceMetadata[].customAssigned |
security_result.detection_fields[].value |
O valor de complianceMetadata[].customAssigned do registro bruto, convertido em uma string. |
complianceMetadata[].policyId |
security_result.detection_fields[].key |
A chave é definida como "ID da política". |
complianceMetadata[].policyId |
security_result.detection_fields[].value |
O valor de complianceMetadata[].policyId do registro bruto. |
complianceMetadata[].requirementId |
security_result.rule_id |
O valor de complianceMetadata[].requirementId do registro bruto. |
complianceMetadata[].requirementName |
security_result.summary |
O valor de complianceMetadata[].requirementName do registro bruto. |
complianceMetadata[].requirementViewOrder |
security_result.detection_fields[].key |
A chave é definida como "requirementViewOrder". |
complianceMetadata[].requirementViewOrder |
security_result.detection_fields[].value |
O valor de complianceMetadata[].requirementViewOrder do registro bruto, convertido em uma string. |
complianceMetadata[].sectionDescription |
security_result.detection_fields[].key |
A chave é definida como "sectionDescription". |
complianceMetadata[].sectionDescription |
security_result.detection_fields[].value |
O valor de complianceMetadata[].sectionDescription do registro bruto. |
complianceMetadata[].sectionId |
security_result.detection_fields[].key |
A chave é definida como "sectionId". |
complianceMetadata[].sectionId |
security_result.detection_fields[].value |
O valor de complianceMetadata[].sectionId do registro bruto. |
complianceMetadata[].sectionLabel |
security_result.detection_fields[].key |
A chave é definida como "sectionLabel". |
complianceMetadata[].sectionLabel |
security_result.detection_fields[].value |
O valor de complianceMetadata[].sectionLabel do registro bruto. |
complianceMetadata[].sectionViewOrder |
security_result.detection_fields[].key |
A chave é definida como "sectionViewOrder". |
complianceMetadata[].sectionViewOrder |
security_result.detection_fields[].value |
O valor de complianceMetadata[].sectionViewOrder do registro bruto, convertido em uma string. |
complianceMetadata[].standardDescription |
security_result.detection_fields[].key |
A chave é definida como "standardDescription". |
complianceMetadata[].standardDescription |
security_result.detection_fields[].value |
O valor de complianceMetadata[].standardDescription do registro bruto. |
complianceMetadata[].standardName |
security_result.rule_name |
O valor de complianceMetadata[].standardName do registro bruto. |
complianceMetadata[].systemDefault |
security_result.detection_fields[].key |
A chave é definida como "systemDefault". |
complianceMetadata[].systemDefault |
security_result.detection_fields[].value |
O valor de complianceMetadata[].systemDefault do registro bruto, convertido em uma string. |
create_time |
metadata.event_timestamp , events[].timestamp |
O valor de create_time do registro bruto. |
data.allocationId |
principal.resource.product_object_id |
O valor de data.allocationId do registro bruto. |
data.publicIp |
principal.ip |
O valor de data.publicIp do registro bruto. |
deleted |
additional.fields[].key |
A chave está definida como "deleted". |
deleted |
additional.fields[].value.string_value |
O valor de deleted do registro bruto, convertido em uma string. |
description |
metadata.description |
O valor de description do registro bruto. |
firstSeen |
principal.asset.first_seen_time |
O valor de firstSeen do registro bruto, analisado como um carimbo de data/hora (formato UNIX_MS ou UNIX). |
hasFinding |
security_result.detection_fields[].key |
A chave é definida como "hasFinding". |
hasFinding |
security_result.detection_fields[].value |
O valor de hasFinding do registro bruto, convertido em uma string. |
lastSeen |
principal.asset.last_discover_time |
O valor de lastSeen do registro bruto, analisado como um carimbo de data/hora (formato UNIX_MS ou UNIX). |
N/A | metadata.event_type |
Definido como "USER_RESOURCE_ACCESS" se não for substituído por um tipo de evento específico do registro. Caso contrário, defina como "GENERIC_EVENT". |
N/A | metadata.product_name |
Codificado como "CASB". |
N/A | metadata.vendor_name |
Codificado como "Palo Alto Networks". |
policyDescription |
security_result.detection_fields[].key |
A chave é definida como "policyDescription". |
policyDescription |
security_result.detection_fields[].value |
O valor de policyDescription do registro bruto. |
policyId |
security_result.detection_fields[].key |
A chave é definida como "ID da política". |
policyId |
security_result.detection_fields[].value |
O valor de policyId do registro bruto. |
policyLabels |
additional.fields[].key |
A chave é definida como "policyLabels". |
policyLabels |
additional.fields[].value.string_value |
O valor de policyLabels do registro bruto. |
policyName |
security_result.description |
O valor de policyName do registro bruto. |
policyRecommendation |
security_result.detection_fields[].key |
A chave é definida como "recomendação de política". |
policyRecommendation |
security_result.detection_fields[].value |
O valor de policyRecommendation do registro bruto. |
policyType |
security_result.detection_fields[].key |
A chave é definida como "Tipo de política". |
policyType |
security_result.detection_fields[].value |
O valor de policyType do registro bruto. |
reason |
security_result.summary |
O valor de reason do registro bruto. |
recommendation |
security_result.detection_fields[].key |
A chave está definida como "Recommendation". |
recommendation |
security_result.detection_fields[].value |
O valor de recommendation do registro bruto. |
resource.additionalInfo |
principal.resource.attribute.labels[].key |
A chave é definida como "resource additionalInfo". |
resource.additionalInfo |
principal.resource.attribute.labels[].value |
O valor de resource.additionalInfo do registro bruto. |
resource.cloudAccountGroups |
principal.resource.attribute.labels[].key |
A chave é definida como "resource cloudAccountGroups {index}". |
resource.cloudAccountGroups |
principal.resource.attribute.labels[].value |
O valor de resource.cloudAccountGroups[] do registro bruto. |
resource.cloudType |
principal.resource.attribute.labels[].key |
A chave é definida como "resource cloudType". |
resource.cloudType |
principal.resource.attribute.labels[].value |
O valor de resource.cloudType do registro bruto. |
resource.data |
principal.resource.attribute.labels[].key |
A chave é definida como "resource data {nested_key}". |
resource.data |
principal.resource.attribute.labels[].value |
O valor de resource.data[] do registro bruto. |
resource.id |
principal.resource.product_object_id |
O valor de resource.id do registro bruto. |
resource.name |
principal.resource.name |
O valor de resource.name do registro bruto. |
resource.region |
principal.location.country_or_region |
O valor de resource.region do registro bruto. |
resource.regionId |
principal.cloud.availability_zone |
O valor de resource.regionId do registro bruto. |
resource.resourceApiName |
principal.resource.attribute.labels[].key |
A chave é definida como "resource resourceApiName". |
resource.resourceApiName |
principal.resource.attribute.labels[].value |
O valor de resource.resourceApiName do registro bruto. |
resource.resourceTags |
principal.resource.attribute.labels[].key |
A chave é definida como "resource resourceTags {nested_key}". |
resource.resourceTags |
principal.resource.attribute.labels[].value |
O valor de resource.resourceTags[] do registro bruto. |
resource.resourceTs |
principal.resource.attribute.labels[].key |
A chave é definida como "resource resourceTs". |
resource.resourceTs |
principal.resource.attribute.labels[].value |
O valor de resource.resourceTs do registro bruto. |
resource.resourceType |
principal.resource.attribute.labels[].key |
A chave é definida como "resource resourceType". |
resource.resourceType |
principal.resource.attribute.labels[].value |
O valor de resource.resourceType do registro bruto. |
resource.rrn |
principal.resource.attribute.labels[].key |
A chave é definida como "resource rrn". |
resource.rrn |
principal.resource.attribute.labels[].value |
O valor de resource.rrn do registro bruto. |
resource.url |
principal.url |
O valor de resource.url do registro bruto. |
resourceCloudService |
principal.resource.attribute.labels[].key |
A chave é definida como "resource cloud service". |
resourceCloudService |
principal.resource.attribute.labels[].value |
O valor de resourceCloudService do registro bruto. |
resourceName |
principal.resource.name |
O valor de resourceName do registro bruto. |
resourceRegion |
principal.location.country_or_region |
O valor de resourceRegion do registro bruto. |
resourceRegionId |
principal.cloud.availability_zone |
O valor de resourceRegionId do registro bruto. |
resourceType |
target.resource.resource_subtype |
O valor de resourceType do registro bruto. |
severity |
security_result.severity |
O valor de severity do registro bruto, convertido para maiúsculas. Mapeado para valores de gravidade da UDM (CRITICAL, HIGH, MEDIUM, LOW, INFORMATIONAL). |
source |
principal.application |
O valor de source do registro bruto. |
unifiedAssetId |
principal.asset.asset_id |
O valor de unifiedAssetId do registro bruto, com o prefixo "ASSETID:". |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.