Integrar o OpenSearch ao Google SecOps

Este documento explica como integrar o OpenSearch ao Google Security Operations.

Casos de uso

A integração do OpenSearch aborda os seguintes casos de uso de orquestração e investigação de segurança:

  • Busca automatizada de ameaças: pesquise periodicamente em todos os índices do OpenSearch indicadores de comprometimento (IoCs) específicos ou padrões suspeitos usando consultas Lucene e DSL.

  • Ingestão centralizada de alertas: faça a ingestão de documentos do OpenSearch como alertas acionáveis no Google SecOps, garantindo que os eventos de segurança do seu data lake sejam priorizados e investigados.

  • Recuperação de dados contextuais: enriqueça os casos de segurança atuais extraindo automaticamente registros relacionados ou dados históricos do OpenSearch para fornecer aos analistas um contexto mais detalhado durante uma investigação.

  • Mapeamento de dados flexível: mapeie dinamicamente os níveis de gravidade e as tags de ambiente dos documentos do OpenSearch para os padrões do Google SecOps para manter a consistência entre diferentes fontes de registro.

Antes de começar

Antes de configurar a integração na plataforma do Google SecOps, verifique se você tem o seguinte:

  • Arquivo de certificado de CA: um arquivo de autoridade de certificação válido para proteger a conexão.

  • Versão mais recente da integração: verifique se você está usando a versão mais recente da integração do OpenSearch.

  • Certificado codificado em Base64: o conteúdo do arquivo de certificado de CA precisa ser convertido em uma string Base64 antes da configuração.

Para configurar a integração com um certificado de CA, siga estas etapas:

  1. Abra a página de parâmetros de configuração da integração.
  2. Cole a string codificada em Base64 no campo Arquivo de certificado de CA.
  3. Marque a caixa de seleção Verificar SSL.
  4. Clique em Testar para verificar se a integração foi configurada corretamente.

Parâmetros de integração

A integração do OpenSearch requer os seguintes parâmetros:

Parâmetro Descrição
Server Address

Obrigatório.

O URL do endpoint da instância do OpenSearch, incluindo o protocolo e a porta (por exemplo, https://10.0.0.1:9200).

Username

Opcional.

O nome de usuário usado para autenticar com a instância do OpenSearch.

Password

Opcional.

A senha associada ao nome de usuário especificado.

API Token

Opcional.

O token de API usado para autenticação como alternativa a um nome de usuário e senha.

Authenticate

Opcional.

Se selecionada, a integração autentica a conexão com o servidor do OpenSearch usando as credenciais fornecidas.

Verify SSL

Opcional.

Se selecionada, a integração valida o certificado SSL ao se conectar ao servidor do OpenSearch.

CA Certificate File

Opcional.

O conteúdo do arquivo de certificado da autoridade de certificação (CA) no formato PEM, usado para verificar o certificado SSL do servidor.

Para instruções sobre como configurar uma integração no Google SecOps, consulte Configurar integrações.

Se necessário, você pode fazer mudanças depois. Depois de configurar uma instância de integração, é possível usá-la em playbooks. Para mais informações sobre como configurar e oferecer suporte a várias instâncias, consulte Como oferecer suporte a várias instâncias.

Ações

Para mais informações sobre ações, consulte Responder a ações pendentes na sua mesa de trabalho e Executar uma ação manual no seu caso.

Use a ação Pesquisa avançada do ES para executar uma consulta de pesquisa pré-configurada no servidor OpenSearch e recuperar os resultados em um formato de dicionário.

Essa ação não é executada em entidades do Google SecOps.

Entradas da ação

A ação Pesquisa avançada da ES requer os seguintes parâmetros:

Parâmetro Descrição
Index

Opcional.

O padrão de pesquisa para o índice do OpenSearch (por exemplo, smp_playbooks-2019.06.13). É possível usar caracteres curinga para pesquisar vários índices (por exemplo, smp_playbooks-*).

O valor padrão é *.

Query

Opcional.

A consulta de pesquisa a ser realizada usando a sintaxe do Lucene (por exemplo, level:error OR level:warning).

O valor padrão é *.

Limit

Opcional.

O número máximo de documentos a serem retornados. Defina esse valor como 0 para não ter limite.

O valor padrão é 100.

Display Field

Opcional.

Uma lista separada por vírgulas de campos específicos a serem retornados.

O valor padrão é * e retorna todos os campos.

Search Field

Opcional.

O campo específico a ser pesquisado quando Query não inclui um nome de campo de destino. Ele funciona como o destino de pesquisa padrão para consultas de texto livre.

O valor padrão é _all, que pesquisa em todos os campos indexados.

Timestamp Field

Opcional.

O nome do campo usado para filtragem com base no tempo.

Se Earliest Date e Oldest Date estiverem vazios, a ação não vai realizar a filtragem com base no tempo.

O valor padrão é @timestamp.

Oldest Date

Opcional.

A data de início da pesquisa. A ação retorna registros que ocorreram nesse carimbo de data/hora ou depois dele.

É possível fornecer um carimbo de data/hora UTC exato (YYYY-MM-DDTHH:MM:SSZ) ou uma operação matemática de data relativa (por exemplo, now-1d).

O valor padrão é now-1d.

Earliest Date

Opcional.

A data de término da pesquisa. A ação retorna registros que ocorreram no carimbo de data/hora ou antes dele.

É possível fornecer um carimbo de data/hora UTC exato (YYYY-MM-DDTHH:MM:SSZ) ou uma operação matemática de data relativa (por exemplo, now).

O valor padrão é now.

Saídas da ação

A ação Pesquisa avançada do ES fornece as seguintes saídas:

Tipo de saída da ação Disponibilidade
Anexo do Painel de Casos Indisponível
Link do Painel de Casos Indisponível
Tabela do painel de casos Indisponível
Tabela de enriquecimento Indisponível
Resultado JSON Indisponível
Mensagens de saída Disponível
Resultado do script Disponível
Resultado do script

A tabela a seguir lista o valor da saída do resultado do script ao usar a ação Pesquisa avançada do ES:

Nome do resultado do script Valor
results RESULTS

Use a ação Pesquisa DSL para realizar uma pesquisa abrangente em todos os índices do OpenSearch e recuperar os resultados em um formato de dicionário.

Essa ação não é executada em entidades do Google SecOps.

Entradas da ação

A ação Pesquisa DSL requer os seguintes parâmetros:

Parâmetro Descrição
Index

Opcional.

O padrão de pesquisa para o índice do OpenSearch (por exemplo, smp_playbooks-2019.06.13). É possível usar caracteres curinga para pesquisar vários índices (por exemplo, smp_playbooks-*).

O valor padrão é *.

Query

Opcional.

A consulta de pesquisa a ser realizada usando a sintaxe do Lucene (por exemplo, level:error OR level:warning).

O valor padrão é *.

Limit

Opcional.

O número máximo de documentos a serem retornados. Defina esse valor como 0 para não ter limite.

O valor padrão é 100.

Saídas da ação

A ação Pesquisa DSL fornece as seguintes saídas:

Tipo de saída da ação Disponibilidade
Anexo do Painel de Casos Indisponível
Link do Painel de Casos Indisponível
Tabela do painel de casos Indisponível
Tabela de enriquecimento Indisponível
Resultado JSON Disponível
Mensagens de saída Disponível
Resultado do script Disponível
Resultado JSON

O exemplo a seguir mostra a saída do resultado JSON recebida ao usar a ação Pesquisa DSL:

[
    {
        "_score": 0.2876821,
        "_type": "person",
        "_id": "2",
        "_source": {
            "lastname": "Smith",
            "name": "John",
            "job_description": "Systems administrator"
        },
        "_index": "accounts"
    }, {
        "_score": 0.28582606,
        "_type": "person",
        "_id": "1",
        "_source":
        {
            "lastname": "Doe",
            "name": "John",
            "job_description": "Systems administrator and Linux specialist"
        },
        "_index": "accounts"
    }
]
Resultado do script

A tabela a seguir lista o valor da saída do resultado do script ao usar a ação Pesquisa DSL:

Nome do resultado do script Valor
results RESULTS

Ping

Use a ação Ping para testar a conectividade com o OpenSearch.

Essa ação não é executada em entidades do Google SecOps.

Entradas da ação

Nenhuma.

Saídas da ação

A ação Ping fornece as seguintes saídas:

Tipo de saída da ação Disponibilidade
Anexo do Painel de Casos Indisponível
Link do Painel de Casos Indisponível
Tabela do painel de casos Indisponível
Tabela de enriquecimento Indisponível
Resultado JSON Indisponível
Mensagens de saída Disponível
Resultado do script Disponível
Resultado do script

A tabela a seguir lista o valor da saída do resultado do script ao usar a ação Ping:

Nome do resultado do script Valor
is_success true ou false

Use a ação Pesquisa simples do ES para realizar uma pesquisa básica em todos os campos indexados no OpenSearch e recuperar os resultados em um formato de dicionário.

Essa ação não é executada em entidades do Google SecOps.

Entradas da ação

A ação Pesquisa simples do ES requer os seguintes parâmetros:

Parâmetro Descrição
Index

Opcional.

O padrão de pesquisa para o índice do OpenSearch (por exemplo, smp_playbooks-2019.06.13). É possível usar caracteres curinga para pesquisar vários índices (por exemplo, smp_playbooks-*).

O valor padrão é *.

Query

Opcional.

A consulta de pesquisa a ser realizada usando a sintaxe do Lucene (por exemplo, level:error OR level:warning).

O valor padrão é *.

Limit

Opcional.

O número máximo de documentos a serem retornados. Defina esse valor como 0 para não ter limite.

O valor padrão é 100.

Saídas da ação

A ação Pesquisa simples do ES fornece as seguintes saídas:

Tipo de saída da ação Disponibilidade
Anexo do Painel de Casos Indisponível
Link do Painel de Casos Indisponível
Tabela do painel de casos Indisponível
Tabela de enriquecimento Indisponível
Resultado JSON Disponível
Mensagens de saída Disponível
Resultado do script Disponível
Resultado JSON

O exemplo a seguir mostra a saída do resultado JSON recebida ao usar a ação Pesquisa simples do ES:

[{
    "_score": 0.2876821,
    "_type": "person",
    "_id": "2",
    "_source":
        {
          "lastname": "Smith",
          "name": "John",
          "job_description": "Systems administrator"
         },
     "_index": "accounts"
 },
 {
     "_score": 0.28582606,
     "_type": "person",
     "_id": "1",
     "_source":
       {
         "lastname": "Doe",
         "name": "John",
         "job_description": "Systems administrator and Linux specialist"
       },
    "_index": "accounts"
  }
 ]
Resultado do script

A tabela a seguir lista o valor da saída do resultado do script ao usar a ação Pesquisa simples do ES:

Nome do resultado do script Valor
results RESULTS

Conectores

Para saber como configurar conectores no Google SecOps, consulte Ingerir seus dados (conectores).

Conector do OpenSearch

Use o conector do OpenSearch para pesquisar índices especificados do OpenSearch com uma consulta do Lucene fornecida e ingerir documentos como alertas no Google SecOps.

Entradas do conector

O conector do OpenSearch requer os seguintes parâmetros:

Parâmetro Descrição
Product Field Name

Obrigatório.

O nome do campo em que o nome do produto é armazenado.

O nome do produto afeta principalmente o mapeamento. Para simplificar e melhorar o processo de mapeamento do conector, o valor padrão é resolvido para um valor substituto que é referenciado no código. Qualquer entrada inválida para esse parâmetro é resolvida para um valor substituto por padrão.

O valor padrão é Product Name.

Event Field Name

Obrigatório.

O nome do campo que determina o nome do evento (subtipo).

O valor padrão é name.

Script Timeout (Seconds)

Obrigatório.

O limite de tempo limite, em segundos, para o processo do Python que executa o script atual.

O valor padrão é 180.

Server Address

Obrigatório.

O URL do endpoint da instância do OpenSearch, incluindo o protocolo e a porta (por exemplo, https://10.0.0.1:9200).

Username

Opcional.

O nome de usuário usado para autenticar com a instância do OpenSearch.

Password

Opcional.

A senha associada ao nome de usuário especificado.

Authenticate

Opcional.

Se selecionada, a integração autentica a conexão com o servidor do OpenSearch usando as credenciais fornecidas.

API Token

Opcional.

O token de API usado para autenticação como alternativa a um nome de usuário e senha.

Verify SSL

Opcional.

Se selecionada, a integração valida o certificado SSL ao se conectar ao servidor do OpenSearch.

Alert Name Field

Obrigatório.

O nome do campo que contém o nome do alerta (por exemplo, _source_alert_info_alert).

Timestamp Field

Obrigatório.

O nome do campo que contém o carimbo de data/hora (por exemplo, _source_@timestamp).

Environment Field Name

Opcional.

O nome do campo em que o nome do ambiente é armazenado.

Se o campo de ambiente estiver ausente, o conector usará o valor padrão.

O valor padrão é "".

Indexes

Opcional.

O padrão de índice a ser pesquisado. Use * para pesquisar em todos os índices.

Query

Opcional.

A consulta de pesquisa a ser realizada usando a sintaxe do Lucene.

Alerts Count Limit

Obrigatório.

O número máximo de alertas a serem extraídos em um único ciclo.

O valor padrão é 20.

Max Days Backwards

Obrigatório.

O número de dias anteriores ao momento atual para recuperar alertas.

Esse parâmetro pode ser aplicado à iteração inicial do conector depois que você o ativa pela primeira vez ou ao valor substituto de um carimbo de data/hora expirado do conector.

O valor padrão é 1.

Severity Field Name

Opcional.

O nome do campo usado para extrair o valor de gravidade do alerta.

Se o campo tiver valores numéricos (inteiros ou flutuantes), o conector vai mapeá-los automaticamente para os níveis de gravidade do Google SecOps (por exemplo, 100 é Critical). Se o campo tiver valores de string, você precisará definir as regras de mapeamento no arquivo severity_map_config.json.

Proxy Server Address

Opcional.

O endereço do servidor proxy a ser usado.

Proxy Username

Opcional.

O nome de usuário usado para autenticar com o servidor proxy.

Proxy Password

Opcional.

A senha usada para autenticar com o servidor proxy.

Environment Regex Pattern

Opcional.

Um padrão de expressão regular para executar no valor encontrado no campo Environment Field Name. Esse parâmetro permite manipular o campo de ambiente usando a lógica de expressão regular.

Use o valor padrão .* para recuperar o valor bruto Environment Field Name necessário.

Se o padrão de expressão regular for nulo ou vazio, ou se o valor do ambiente for nulo, o resultado final será o ambiente padrão.

Conector DSL do OpenSearch

Use o conector DSL do OpenSearch para ingerir documentos como alertas no Google SecOps fazendo chamadas de API REST usando consultas de linguagem específica de domínio (DSL, na sigla em inglês).

Entradas do conector

O conector DSL do OpenSearch requer os seguintes parâmetros:

Parâmetro Descrição
Product Field Name

Obrigatório.

O nome do campo em que o nome do produto é armazenado.

O nome do produto afeta principalmente o mapeamento. Para simplificar e melhorar o processo de mapeamento do conector, o valor padrão é resolvido para um valor substituto que é referenciado no código. Qualquer entrada inválida para esse parâmetro é resolvida para um valor substituto por padrão.

O valor padrão é Product Name.

O valor padrão é device_product.

Event Field Name

Obrigatório.

O nome do campo que determina o nome do evento (subtipo).

O valor padrão é name.

Script Timeout (Seconds)

Obrigatório.

O limite de tempo limite, em segundos, para o processo do Python que executa o script atual.

O valor padrão é 60.

Server Address

Obrigatório.

O URL do endpoint da instância do OpenSearch, incluindo o protocolo (por exemplo, https://10.0.0.1).

Port

Obrigatório.

A porta usada para se conectar ao servidor de API OpenSearch.

Query

Obrigatório.

A consulta DSL usada para a pesquisa no formato JSON.

Para melhorar a estabilidade do conector, recomendamos incluir uma chave de carimbo de data/hora de classificação em ordem crescente na consulta.

Index

Obrigatório.

O índice usado para a pesquisa. Use _all para pesquisar em todos os índices.

Timestamp Field

Obrigatório.

O nome do campo que contém o carimbo de data/hora (por exemplo, _source_@timestamp).

Alert Field Name

Obrigatório.

O nome do campo que contém o nome do alerta (por exemplo, _source_info_alertname).

Description Field

Opcional.

O nome do campo que contém a descrição do alerta (por exemplo, _source_alert_info_description).

Severity

Obrigatório.

O nível de gravidade estático a ser atribuído a todos os alertas ingeridos. Esse parâmetro será usado se Alert Severity e Severity Field Name estiverem vazios.

O valor padrão é Medium.

Alert Severity

Opcional.

A gravidade a ser atribuída aos alertas. Esse parâmetro tem prioridade sobre Severity Field Name.

Se você quiser usar o mapeamento dinâmico com o Severity Field Name, deixe esse campo vazio.

Severity Field Name

Opcional.

O nome do campo usado para extrair o valor de gravidade do alerta.

Se o campo tiver valores numéricos (inteiros ou flutuantes), o conector vai mapeá-los automaticamente para os níveis de gravidade do Google SecOps (por exemplo, 100 é Critical). Se o campo tiver valores de string, você precisará definir as regras de mapeamento no arquivo severity_map_config.json.

Alerts Count Limit

Opcional.

O número máximo de alertas a serem extraídos em um único ciclo.

O valor padrão é 100.

Authenticate

Opcional.

Se selecionado, o conector autentica a conexão usando as credenciais fornecidas.

Username

Opcional.

O nome de usuário usado para autenticar com a instância do OpenSearch.

Password

Opcional.

A senha usada para autenticar com a instância do OpenSearch.

Use SSL

Opcional.

Se selecionado, o conector ativa uma conexão SSL/TLS com o servidor.

Proxy Server Address

Opcional.

O endereço do servidor proxy a ser usado para a conexão.

Proxy Username

Opcional.

O nome de usuário usado para autenticar com o servidor proxy.

Proxy Password

Opcional.

A senha usada para autenticar com o servidor proxy.

Environment Field Name

Opcional.

O nome do campo em que o nome do ambiente é armazenado.

Se o campo de ambiente estiver ausente, o conector usará o valor padrão.

O valor padrão é "".

Environment Regex Pattern

Opcional.

Um padrão de expressão regular para executar no valor encontrado no campo Environment Field Name. Esse parâmetro permite manipular o campo de ambiente usando a lógica de expressão regular.

Use o valor padrão .* para recuperar o valor bruto Environment Field Name necessário.

Se o padrão de expressão regular for nulo ou vazio, ou se o valor do ambiente for nulo, o resultado final será o ambiente padrão.

O valor padrão é .*.

Suporte a notações

O conector é compatível com três notações diferentes para mapeamento de campos. Por exemplo, para mapear event.type, é possível fornecer _source_event_type, event_type ou event.type.

Isso se aplica aos seguintes parâmetros:

  • Product Field Name
  • Event Field Name
  • Severity Field Name
  • Environment Field Name
  • Timestamp Field
  • Alert Field Name
  • Description Field (somente conector DSL)

Como mapear a gravidade no conector

Se o Severity Field Name tiver valores numéricos (inteiros ou flutuantes), o conector os mapeará da seguinte maneira:

  • Crítica: 100
  • Alta: 80 ≤ x < 100
  • Médio: 60 ≤ x < 80
  • Baixo: 40 ≤ x < 60
  • Informativo: x < 40

Para valores de string, atualize o arquivo severity_map_config.json na pasta de scripts do conector.

Exemplo de configuração

Para mapear um campo event.severity que contém "Malicioso", "Desconhecido" ou "Benigno":

  1. Insira event.severity no parâmetro Nome do campo de gravidade.
  2. Atualize severity_map_config.json:
{
    "event.severity": {
        "Malicious": 100,
        "Unknown": 60,
        "Benign": -1
    },
    "Default": 50
}

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