Coletar registros do Rubrik Security Cloud

Compatível com:

Este documento explica como ingerir registros do Rubrik Security Cloud no Google Security Operations usando webhooks. A Rubrik Security Cloud (RSC) é uma plataforma de segurança de dados baseada em SaaS que oferece recursos de backup, recuperação, detecção de anomalias e governança de dados em ambientes de nuvem e locais. O RSC gera eventos de segurança, registros de auditoria e registros de atividades operacionais em JSON do formato de evento comum do PagerDuty (DP-CEF), que podem ser enviados ao Google SecOps para monitoramento e análise centralizados.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Uma instância do Google SecOps
  • Acesso privilegiado ao console do Rubrik Security Cloud com permissões para gerenciar webhooks
  • Conectividade de rede da Rubrik Security Cloud ao endpoint de webhook do Google SecOps
  • Acesso ao Google Cloud console para criação de chaves de API

Criar um feed de webhook no Google SecOps

Criar o feed

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na próxima página, clique em Configurar um único feed.
  4. No campo Nome do feed, insira um nome para o feed (por exemplo, Rubrik Security Cloud Events).
  5. Selecione Webhook como o Tipo de origem.
  6. Selecione Rubrik Security Cloud como o Tipo de registro.
  7. Clique em Próxima.
  8. Especifique valores para os seguintes parâmetros de entrada:
    • Delimitador de divisão (opcional): deixe em branco, já que cada solicitação de webhook contém um único evento.
    • Namespace do recurso: o namespace do recurso.
    • Rótulos de ingestão: o rótulo a ser aplicado aos eventos deste feed.
  9. Clique em Próxima.
  10. Revise a nova configuração do 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:

  1. Na página de detalhes do feed, clique em Gerar chave secreta.
  2. Uma caixa de diálogo mostra a chave secreta.
  3. Copie e salve a chave secreta com segurança.

Receber o URL do endpoint do feed

  1. Acesse a guia Detalhes do feed.
  2. Na seção Informações do endpoint, copie o URL do endpoint do feed.
  3. Salve esse URL para as próximas etapas.
  4. Clique em Concluído.

Criar uma Google Cloud chave de API

O Google SecOps exige uma chave de API para autenticação. Crie uma chave de API restrita no console Google Cloud .

Criar a chave de API

  1. Acesse a página Credenciais do consoleGoogle Cloud .
  2. Selecione seu projeto (o projeto associado à sua instância do Google SecOps).
  3. Clique em Criar credenciais > Chave de API.
  4. Uma chave de API é criada e exibida em uma caixa de diálogo.
  5. Clique em Editar chave de API para restringir a chave.

Restringir a chave de API

  1. Na página de configurações da chave de API:
    • Nome: insira um nome descritivo, por exemplo, Google SecOps Webhook API Key.
  2. Em Restrições de API:
    1. Selecione Restringir chave.
    2. No menu suspenso Selecionar APIs, pesquise e selecione API Google SecOps (ou API Chronicle).
  3. Clique em Salvar.
  4. Copie o valor da chave de API do campo Chave de API na parte de cima da página.
  5. Salve a chave de API com segurança.

Configurar um webhook do Rubrik Security Cloud

Criar o URL do webhook

  • Combine o URL do endpoint do Google SecOps, a chave de API e a chave secreta do feed. As duas credenciais são transmitidas como parâmetros de consulta:

    <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET>
    
    • Exemplo:

      https://<REGION>-chronicle.googleapis.com/v1alpha/projects/<PROJECT_NUMBER>/locations/<REGION>/instances/<INSTANCE_ID>/feeds/<FEED_ID>:importPushLogs?key=AIzaSyD...&secret=a1b2c3d4...
      

Criar um webhook no Rubrik Security Cloud

  1. Faça login no Rubrik Security Cloud em https://<account>.my.rubrik.com.
  2. Clique no ícone de engrenagem no canto superior direito e selecione Configurações.
  3. Clique em Notificações e selecione Webhooks.
  4. Clique em Adicionar webhook.
  5. O assistente "Adicionar webhook" aparece.
  6. Em Provedor, selecione Genérico.

  7. Em Nome do webhook, insira um nome descritivo (por exemplo, Google SecOps Integration).

  8. Em Endpoint, cole o URL do webhook completo acima, incluindo os parâmetros de consulta key e secret. A autenticação é feita pelo URL, então a chave Autenticação pode ficar desativada.

  9. Clique em Próxima.

  10. Clique em Testar webhook para verificar se a configuração especificada funciona e clique em Próxima.

  11. A janela Selecionar evento e gravidade vai aparecer.

  12. Selecione os eventos que o RSC envia ao endpoint de webhook configurado:

    1. Em Eventos, selecione os tipos de eventos a serem encaminhados:

      • Backup
      • Recuperação
      • Anomalia
      • Busca de ameaças
      • Monitoramento de ameaças
      • Configuração
      • Diagnóstico
      • Sincronizar
      • Manutenção
      • Sistema
    2. Em Auditoria, selecione os tipos de auditoria que serão encaminhados. Os tipos de auditoria de autenticação alimentam os mapeamentos de login do analisador.

    3. Em Gravidade, selecione os níveis de gravidade para acionar alertas:

      • Crítico
      • Aviso
      • Informativa
  13. Clique em Próxima.

  14. Revise os detalhes da configuração na janela Confirmação e clique em Salvar.

Verificar se o webhook está funcionando

Verificar o status do webhook do Rubrik Security Cloud

  1. Faça login no Rubrik Security Cloud.
  2. Acesse Configurações > Notificações > Webhooks.
  3. Verifique a coluna Status do webhook (deve mostrar Ativado).
  4. Monitore as mensagens de erro nos detalhes do webhook.

Verificar o status do feed do Google SecOps

  1. Acesse Configurações do SIEM > Feeds no Google SecOps.
  2. Verifique a coluna Status do seu feed de webhook (deve ser Ativo).
  3. Verifique a contagem de Eventos recebidos (ela precisa estar aumentando).

Verificar registros no Google SecOps

  1. Acesse Pesquisar > Pesquisa do UDM.
  2. Use a seguinte consulta:

    metadata.vendor_name = "RUBRIK" nocase AND metadata.product_name = "RUBRIK SECURITY CLOUD" nocase
    
  3. Ajuste o período para a última hora.

  4. Verifique se os eventos aparecem nos resultados.

Referência de payload do webhook

  • Por padrão, a Rubrik Security Cloud envia eventos no formato de evento comum do PagerDuty (DP-CEF, na sigla em inglês). Confira a seguir um exemplo de payload de evento:

    {
      "summary": "Failed backup of vSphere VM 'example-vm'.",
      "source": "Rubrik Security Cloud",
      "severity": "critical",
      "timestamp": "2024-07-18T06:39:40.46Z",
      "class": "Backup",
      "custom_details": {
        "seriesId": "ccd7a8a5-4c58-4c88-bff9-7bdffddb6099",
        "id": "c2b47274-6323-4025-b307-afed1cfb7574",
        "type": "Event",
        "objectId": "83c4a80a-4a57-5699-b399-651089135586",
        "objectName": "example-vm",
        "objectType": "VmwareVm",
        "status": "Failure",
        "clusterId": "6a271636-9392-4cba-90c5-bdbe227854ab",
        "clusterName": "production-cluster",
        "eventName": "Snapshot.BackupFailed",
        "errorId": "Snapshot.VmwareSnapshotError",
        "errorCode": "",
        "errorRemedy": "",
        "errorReason": "",
        "auditUserName": "",
        "auditUserId": "",
        "location": "vcenter.example.com",
        "url": "",
        "customerID": "rubrik-customer",
        "logicalSizeInBytes": "",
        "dataTransferredInBytes": "",
        "effectiveThroughput": ""
      }
    }
    

Limites e práticas recomendadas de webhook

Limites de solicitações

Limite Valor
Linha de registro única máxima 1 MB
QPS máximo (consultas por segundo) 15.000
Tempo limite da solicitação 90 segundos
Comportamento de repetição Gerenciada pelo remetente. O Google SecOps retorna HTTP 429 quando o limite de burst é excedido. O sistema de envio precisa armazenar em buffer e tentar novamente.

Tabela de mapeamento de UDM

Campo de registro Mapeamento do UDM Lógica
audit_info_label additional.fields Mesclado
effectiveThroughput_label additional.fields Mesclado
group_label additional.fields Mesclado
isPolarisAudit_label additional.fields Mesclado
label_name_label additional.fields Mesclado
node_label additional.fields Mesclado
orgID_label additional.fields Mesclado
snappable_name_label additional.fields Mesclado
snappable_type_label additional.fields Mesclado
snapshot_date_label additional.fields Mesclado
type_label additional.fields Mesclado
userNote_label additional.fields Mesclado
has_target extensions.auth.type Mapeado: true → AUTHTYPE_UNSPECIFIED
hunt_date metadata.event_timestamp Analisado como ISO8601
timestamp metadata.event_timestamp Analisado como ISO8601
has_principal metadata.event_type Mapeado: true → SCAN_HOST, true → STATUS_UPDATE
has_target metadata.event_type Mapeado: true → USER_LOGIN
custom_details.eventName metadata.product_event_type Mapeado diretamente
custom_details.id metadata.product_log_id Mapeado diretamente
source metadata.product_name Mapeado diretamente
custom_details.url metadata.url_back_to_product Mapeado diretamente
custom_details.dataTransferredInBytes network.sent_bytes Mapeado diretamente
custom_details.customerID principal.administrative_domain Mapeado diretamente
domain principal.domain.name Mapeado diretamente
custom_details.ipAddress principal.ip Mesclado
ip_address principal.ip Mesclado
is_ip_assigned principal.ip Mapeado: false → ip_address
custom_details.clusterName principal.resource.name Mapeado diretamente
custom_details.clusterId principal.resource.product_object_id Mapeado diretamente
user_email principal.user.email_addresses Mesclado
custom_details.auditUserName principal.user.user_display_name Mapeado diretamente
user_name principal.user.user_display_name Mapeado diretamente
action_name security_result.action Mesclado
custom_details.status security_result.action_details Mapeado diretamente
category_temp security_result.category Mesclado
class security_result.category_details Mesclado
confidence security_result.confidence_details Mapeado diretamente
custom_details.errorMessage security_result.description Mapeado diretamente
access_type_label security_result.detection_fields Mesclado
action_date_label security_result.detection_fields Mesclado
detection_time_label security_result.detection_fields Mesclado
directories_snoozed_label security_result.detection_fields Mesclado
directories_unsnoozed_label security_result.detection_fields Mesclado
document_count_label security_result.detection_fields Mesclado
encryption_level_label security_result.detection_fields Mesclado
errorCode_label security_result.detection_fields Mesclado
errorId_label security_result.detection_fields Mesclado
errorReason_label security_result.detection_fields Mesclado
errorRemedy_label security_result.detection_fields Mesclado
event_info_label security_result.detection_fields Mesclado
failed_document_count_label security_result.detection_fields Mesclado
file_matches_label security_result.detection_fields Mesclado
files_created_count_label security_result.detection_fields Mesclado
files_modified_count_label security_result.detection_fields Mesclado
files_removed_count_label security_result.detection_fields Mesclado
files_suspicious_count_label security_result.detection_fields Mesclado
hash_tf_version_label security_result.detection_fields Mesclado
identity_name_label security_result.detection_fields Mesclado
num_files_with_matches_label security_result.detection_fields Mesclado
num_hash_matches_label security_result.detection_fields Mesclado
num_of_violating_identities_label security_result.detection_fields Mesclado
num_yara_rule_matches_label security_result.detection_fields Mesclado
obj_failed_label security_result.detection_fields Mesclado
obj_partially_succeeded_label security_result.detection_fields Mesclado
obj_succeeded_label security_result.detection_fields Mesclado
object_matches_label security_result.detection_fields Mesclado
policy_name_label security_result.detection_fields Mesclado
reason_label security_result.detection_fields Mesclado
remediation_type_label security_result.detection_fields Mesclado
remedy_label security_result.detection_fields Mesclado
risk_name_label security_result.detection_fields Mesclado
seriesID_label security_result.detection_fields Mesclado
seriesId_label security_result.detection_fields Mesclado
skipped_document_count_label security_result.detection_fields Mesclado
strain_name_label security_result.detection_fields Mesclado
successful_document_count_label security_result.detection_fields Mesclado
total_accessible_files_at_risk_count_label security_result.detection_fields Mesclado
vm_count_label security_result.detection_fields Mesclado
yara_tf_version_label security_result.detection_fields Mesclado
hunt_name security_result.rule_name Mapeado diretamente
hunt_type security_result.rule_type Mapeado diretamente
is_severity_assigned security_result.severity Mapeado: false → INFORMATIONAL, false → MEDIUM
severity security_result.severity Mapeado: INFO → INFORMATIONAL, WARNING → MEDIUM
severity_name security_result.severity Mapeado: INFO → INFORMATIONAL, WARNING → MEDIUM
severity security_result.severity_details Mapeado diretamente
severity_name security_result.severity_details Mapeado diretamente
summary security_result.summary Mapeado diretamente
threat_feed_type security_result.threat_feed_name Mapeado diretamente
custom_details.logicalSizeInBytes target.file.size Mapeado diretamente
client_id_label target.labels Mesclado
client_name_label target.labels Mesclado
custom_details.location target.location.name Mapeado diretamente
custom_details.objectName target.resource.name Mapeado diretamente
object_name target.resource.name Mapeado diretamente
resource_name target.resource.name Mapeado diretamente
custom_details.objectId target.resource.product_object_id Mapeado diretamente
component target.resource.resource_subtype Mapeado diretamente
custom_details.objectType target.resource.resource_subtype Mapeado diretamente
is_object_type_assigned target.resource.resource_type Mapeado: false → UNSPECIFIED
class target.user.email_addresses Mapeado: Login → user_email
user_email target.user.email_addresses Mesclado
each_group target.user.group_identifiers Mesclado
custom_details.auditUserName target.user.user_display_name Mapeado diretamente
user_name target.user.user_display_name Mapeado diretamente
custom_details.auditUserId target.user.userid Mapeado diretamente
N/A extensions.auth.type Constante: AUTHTYPE_UNSPECIFIED
N/A metadata.event_type Constante: USER_LOGIN
N/A metadata.product_name Constante: RUBRIK SECURITY CLOUD
N/A metadata.vendor_name Constante: RUBRIK
N/A principal.resource.resource_type Constante: CLUSTER
N/A security_result.severity Constante: INFORMATIONAL
N/A target.resource.resource_type Constante: UNSPECIFIED

Registro de alterações

Ver o registro de alterações deste analisador

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.