Coletar registros do Cisco Identity Intelligence

Compatível com:

Neste documento, explicamos como configurar o Cisco Identity Intelligence para enviar registros ao Google Security Operations usando webhooks.

O Cisco Identity Intelligence (antigo Oort Security) é uma plataforma de detecção e resposta a ameaças de identidade que monitora continuamente o comportamento do usuário, os padrões de autenticação, o uso de dispositivos e os privilégios de acesso em provedores de identidade. Ele detecta ameaças baseadas em identidade, erros de configuração e violações de compliance ao analisar a atividade do usuário, verificações de segurança com falha, pontuações de confiança e comportamentos de risco.

Antes de começar

Verifique se você atende aos seguintes pré-requisitos:

  • Uma instância do Google SecOps
  • Acesso privilegiado a um locatário do Cisco Identity Intelligence
  • Permissões administrativas para gerenciar integrações no Cisco Identity Intelligence
  • Acesso ao console do Google Cloud (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, Cisco Identity Intelligence Events).
  5. Selecione Webhook como o Tipo de origem.
  6. Selecione Cisco Identity Intelligence 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): insira \n para dividir eventos de várias linhas.
    • Namespace do recurso: o namespace do recurso.
    • Rótulos de ingestão: o rótulo a ser aplicado aos eventos desse feed.
  9. Clique em Próxima.
  10. 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:

  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.

Encontrar 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. O formato do URL é:

    https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import
    

    Em que {region} é a região da instância do Google SecOps (por exemplo, us, europe ou asia-southeast1) e {parent} é o caminho do recurso no formato projects/<PROJECT_ID>/locations/<LOCATION>/instances/<INSTANCE_ID>/logTypes/<LOG_TYPE>.

  4. Salve esse URL para as próximas etapas.

  5. Clique em Concluído.

Criar uma 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

  1. Acesse a página "Credenciais" do console do Google Cloud.
  2. Selecione seu projeto (o projeto associado à sua instância do Chronicle).
  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, Chronicle 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 o webhook do Cisco Identity Intelligence

Criar o URL do webhook

  • Combine o URL do endpoint do Chronicle e a chave de API:

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

      https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?key=AIzaSyD...&secret=abcd1234...
      

Substitua:

  • <ENDPOINT_URL>: o URL do endpoint do feed do Chronicle copiado anteriormente
  • <API_KEY>: a chave de API do Google Cloud criada anteriormente.
  • <SECRET_KEY>: a chave secreta do webhook do Chronicle gerada anteriormente

Criar um destino de notificação de webhook no Cisco Identity Intelligence

  1. Faça login no Cisco Identity Intelligence.
  2. Acesse Integrações.
  3. Clique em Adicionar integração.
  4. Role para baixo até a seção Webhook.
  5. Clique em Adicionar destino de webhook.
  6. Informe os seguintes detalhes de configuração:
    • Nome: insira um nome descritivo (por exemplo, Chronicle SIEM Integration).
    • URL do webhook: cole o URL completo do endpoint com a chave de API e a chave secreta acima.
    • Tipo de autorização: selecione Chave de API.
    • Nome da chave de API: insira um nome de chave (por exemplo, x-goog-chronicle-auth).
    • API Key Value: insira a chave de API do Google Cloud.
  7. Expanda a seção Parâmetros HTTP de invocação.
  8. Adicione os seguintes parâmetros com o tipo Cabeçalho:
    • Chave: Content-Type, Valor: application/json
    • Chave: Accept, Valor: application/json
  9. Na seção Usar este destino para, selecione Verificação com falha para receber notificações quando as verificações de identidade detectarem resultados com falha.
  10. Clique em Salvar.

Testar a conexão do webhook

  1. Na página Integrações, encontre o destino de notificação de webhook que você criou.
  2. Clique no menu de três pontos no lado direito da linha.
  3. Selecione Testar conectividade.
  4. Verifique se a mensagem de teste foi entregue corretamente.

Ativar o webhook para confirmações de identidade

Depois de criar o destino de notificação do webhook, você precisa ativá-lo para as confirmações de identidade específicas que quer monitorar.

  1. Acesse a página de detalhes da verificação desejada no Cisco Identity Intelligence.
  2. Abra o menu suspenso no canto superior direito da página.
  3. Marque a caixa de seleção do destino de notificação do webhook que você criou.
  4. Repita para cada verificação que você quer enviar ao Google SecOps.

Para mais informações, consulte a documentação do webhook do Cisco Identity Intelligence.

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.

Se o fornecedor for compatível com cabeçalhos HTTP personalizados, use esse método para aumentar 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 preferido 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 final do 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 de 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 nova tentativa Automático com espera exponencial

Tabela de mapeamento de UDM

Campo de registro Mapeamento de UDM Lógica
conta account_label.value Valor copiado diretamente
conta account_label.key Defina como "account".
account_label security_result.detection_fields Mesclado em detection_fields
additional_detaildescription.key additional_detaildescription.key Definido como "descrição detalhada"
detaildescription additional_detaildescription.value.list_value.values Mesclado de detaildescription
additional_detaildescription event.idm.read_only_udm.additional.fields Mesclado em additional.fields
additional_recommendedaction.key additional_recommendedaction.key Definir como "ação recomendada"
recommendedAction additional_recommendedaction.value.list_value.values Mesclado de recommendedAction
additional_recommendedaction event.idm.read_only_udm.additional.fields Mesclado em additional.fields
data1 usersFailing_label Valor copiado diretamente
data.login login_label Valor copiado diretamente
detail-type security_result.summary Valor copiado diretamente
detail.id security_result.rule_id Valor copiado diretamente
detail.title security_result.rule_name Valor copiado diretamente
detail.severity security_result.severity Valor de "detail.severity" se estiver em [CRITICAL,ERROR,HIGH,INFORMATIONAL,LOW,MEDIUM], caso contrário, "MEDIUM" se for moderado
detaildescription value_array.string_value Valor copiado diretamente
detailsdata.key add_label.value, add_label.key Valor de detailsdata.value, chave como "loginDetails %{index} details %{detailindex} %{detailsdata.key}" se não for failedSigninDetails ou ips
detailsdata.value add_label.value, add_label.key
detailsdata.key security_result.detection_fields Mesclagem de add_label se as condições forem atendidas
detailsdata.value security_result.detection_fields
field_.value security_result.detection_fields Mesclado para vários campos aninhados em json_array (msg, ipInfo, asn, coordinates, first_event, second_event, locations) com chaves como "%{index} %{detailindex} %{index1} %{key}" etc., excluindo ipAddress, ip etc.
field_.key security_result.detection_fields
ID metadata.product_log_id Valor copiado diretamente
login_label principal.user.email_addresses Unidas se corresponderem à regex de e-mail
msg.ipAddress principal.ip Mesclado se não estiver vazio
msg.first_event.ip_address principal.ip Mesclado se não estiver vazio
msg.second_event.ip_address principal.ip Mesclado se não estiver vazio
msg_travels_first_event_ip_address principal.ip Mesclado se não estiver vazio
msg_travels_second_event_ip_address principal.ip
recommendedAction value_array.string_value Valor copiado diretamente
security_result event.idm.read_only_udm.security_result Mesclado em security_result
source source_label.value Valor copiado diretamente
source source_label.key Defina como "source"
source_label event.idm.read_only_udm.src.labels Mesclado em src.labels
tempo @timestamp Analisado usando o filtro de data com ISO8601, RFC 3339, yyyy-MM-ddTHH:mm:ss.SSSSSSZ
usersFailing_label principal.user.email_addresses Unidas se corresponderem à regex de e-mail
versão metadata.product_version Valor copiado diretamente
has_principal event.idm.read_only_udm.metadata.event_type Definido como "STATUS_UPDATE" se has_principal for verdadeiro, caso contrário, "USER_UNCATEGORIZED" se has_user for verdadeiro, caso contrário, "GENERIC_EVENT"
has_user event.idm.read_only_udm.metadata.event_type
metadata.product_name metadata.product_name Definido como "OORT"
metadata.vendor_name metadata.vendor_name Definido como "OORT"
detail.published event.idm.read_only_udm.metadata.collected_timestamp Mapeado do registro de alterações
detail.login event.idm.read_only_udm.principal.user.userid Mapeado do registro de alterações
detail.userTrustLevel event.idm.read_only_udm.principal.user.attribute.labels Mapeado do registro de alterações
detail.login event.idm.read_only_udm.principal.user.user_display_name Mapeado do registro de alterações
detail.checkTopics event.idm.read_only_udm.security_result.category_details Mapeado do registro de alterações
region event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
detail.checkId event.idm.read_only_udm.security_result.detection_fields Mapeado do registro de alterações
detail.checkScope event.idm.read_only_udm.security_result.detection_fields Mapeado do registro de alterações
detail.frameworks event.idm.read_only_udm.security_result.detection_fields Mapeado do registro de alterações
detail.explainabilityEventIds event.idm.read_only_udm.security_result.detection_fields Mapeado do registro de alterações
data.value event.idm.read_only_udm.security_result.detection_fields Mapeado do registro de mudanças

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.