Integrar o OpenSearch ao Google SecOps

Versão da integração: 1.0

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:

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

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

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

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

Antes de começar

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

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

  • Versão mais recente da integração: use a versão mais recente da integração do OpenSearch.

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

Para configurar a integração com um certificado da 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 da 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 exige 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 da 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 OpenSearch usando as credenciais fornecidas.

Verify SSL

Opcional.

Se selecionada, a integração valida o certificado SSL ao se conectar ao servidor 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.

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

Ações

Para mais informações sobre ações, consulte Responder a ações pendentes da sua mesa de trabalho e Realizar uma ação manual.

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 de ação

A ação Pesquisa avançada do ES exige os seguintes parâmetros:

Parâmetro Descrição
Index

Opcional.

O padrão de pesquisa do í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. Isso 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 em 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 neste carimbo de data/hora ou depois dele.

É possível fornecer um carimbo de data/hora UTC exato (YYYY-MM-DDTHH:MM:SSZ) ou uma 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 na data e hora ou antes.

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

O valor padrão é now.

Saídas de 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 resultados em formato de dicionário.

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

Entradas de ação

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

Parâmetro Descrição
Index

Opcional.

O padrão de pesquisa do í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 de ação

A ação Pesquisa de 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 em 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 de 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 de ação

Nenhuma.

Saídas de 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 do OpenSearch e recuperar os resultados em formato de dicionário.

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

Entradas de ação

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

Parâmetro Descrição
Index

Opcional.

O padrão de pesquisa do í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 de 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 mais informações sobre 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 exige 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 como um valor substituto referenciado no código. Qualquer entrada inválida para esse parâmetro é resolvida como um valor de substituição 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 OpenSearch usando as credenciais fornecidas.

API Token

Opcional.

O token da 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 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 "environment" 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 antes de agora 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 de substituição 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 contiver valores numéricos (inteiros ou de ponto flutuante), o conector os mapeará automaticamente para os níveis de gravidade do Google SecOps (por exemplo, 100 é Critical). Se o campo contiver valores de string, defina 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 a ser executado no valor encontrado no campo Environment Field Name. Com esse parâmetro, é possível manipular o campo "environment" usando a lógica de expressão regular.

Use o valor padrão .* para extrair o valor Environment Field Name bruto 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 da API REST com consultas da linguagem específica do domínio (DSL, na sigla em inglês).

Entradas do conector

O conector DSL do OpenSearch exige 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 como um valor substituto referenciado no código. Qualquer entrada inválida para esse parâmetro é resolvida como um valor de substituição 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 da API OpenSearch.

Query

Obrigatório.

A consulta da 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 quiser usar o mapeamento dinâmico com o Severity Field Name, deixe esse campo em branco.

Severity Field Name

Opcional.

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

Se o campo contiver valores numéricos (inteiros ou de ponto flutuante), o conector os mapeará automaticamente para os níveis de gravidade do Google SecOps (por exemplo, 100 é Critical). Se o campo contiver valores de string, defina 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 "environment" estiver ausente, o conector usará o valor padrão.

O valor padrão é "".

Environment Regex Pattern

Opcional.

Um padrão de expressão regular a ser executado no valor encontrado no campo Environment Field Name. Com esse parâmetro, é possível manipular o campo "environment" usando a lógica de expressão regular.

Use o valor padrão .* para extrair o valor Environment Field Name bruto 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 para notação

O conector é compatível com três notações diferentes para mapeamento de campos. Por exemplo, para mapear event.type, você pode 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ítico: 100
  • Alta: 80 ≤ x < 100
  • Média: 60 ≤ x < 80
  • Baixa: 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 contenha "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.