Integrar CSV ao Google SecOps
Neste documento, descrevemos como integrar CSV ao Google Security Operations.
Este documento explica como integrar CSV ao Google Security Operations.
Casos de uso
No Google SecOps, a integração CSV oferece suporte aos seguintes casos de uso:
Detecção de ameaças com base em arquivos: busque rapidamente em arquivos de registro CSV locais ou remotos strings específicas ou entidades mal-intencionadas para identificar ameaças registradas historicamente.
Geração automática de alertas: ingere automaticamente registros de sistemas legados que geram dados em formato CSV, convertendo-os em alertas úteis com mapeamento de gravidade personalizado.
Portabilidade e geração de relatórios de dados: transforme programaticamente resultados JSON de outras ações do playbook em formato CSV para exportação simplificada para ferramentas de geração de relatórios externas ou armazenamento local.
Enriquecimento automático de entidades: use arquivos CSV como uma fonte local de inteligência de ameaças para enriquecer automaticamente as entidades e marcá-las como suspeitas durante a execução do playbook.
Sincronização de dados entre sistemas: processe arquivos de maneira eficiente com codificações de caracteres variadas, como formatos legados do Excel, para garantir a consistência dos dados em diferentes ferramentas de segurança.
Antes de começar
Antes de configurar a integração no Google SecOps, verifique se você tem o seguinte:
Recursos internos da plataforma: essa integração oferece recursos integrados de processamento de arquivos e não exige chaves de API ou credenciais de terceiros externos para autenticação.
Permissões do sistema de arquivos: se um agente remoto for usado, a integração vai exigir permissões específicas para acessar e gerenciar arquivos no sistema host. Execute o seguinte comando na máquina do agente para conceder as permissões necessárias para o diretório de destino:
chown scripting:scripting "directory_path"
Parâmetros de integração
A integração CSV exige os seguintes parâmetros:
| Nome de exibição do parâmetro | Tipo | Valor padrão | É obrigatório | Descrição |
|---|---|---|---|---|
| Nome da instância | String | N/A | Não | Nome da instância em que você pretende configurar a integração. |
| Descrição | String | N/A | Não | Descrição da instância. |
| Executar remotamente | Caixa de seleção | Desmarcado | Não | Marque a caixa para executar a integração configurada remotamente. Depois de marcada, a opção aparece para selecionar o usuário remoto (agente). |
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.
Salvar JSON em CSV
Salva um objeto JSON em CSV.
Parâmetros
| Nome do parâmetro | Tipo | Valor padrão | Obrigatório | Descrição |
|---|---|---|---|---|
| Objeto JSON | JSON | N/A | Sim | Especifica o objeto JSON a ser salvo como CSV. |
| Substituir | Booleano | Falso | Não | Se ativada, a ação vai substituir o arquivo atual. |
| Caminho do arquivo | String | N/A | Sim | Especifica o caminho absoluto do arquivo CSV recém-criado. Se apenas o nome do arquivo for fornecido, a ação vai armazenar o arquivo em uma pasta /tmp/. |
Executar em
N/A
Resultados da ação
Resultado do script
| Nome do resultado do script | Valor |
|---|---|
| is_success | Verdadeiro/falso |
Resultado JSON
{"filepath": "{file name}"}
Painel de casos
A ação fornece as seguintes mensagens de saída:
| Mensagem de resposta | Descrição da mensagem |
|---|---|
| O objeto JSON foi transformado e salvo no caminho de arquivo fornecido. | A ação foi concluída. |
| O arquivo não foi encontrado no caminho fornecido. | O arquivo não existe. |
| Nenhuma atividade foi encontrada para as contas de serviço fornecidas no Google Cloud Policy Intelligence | A ação não encontrou dados para nenhuma das contas de serviço listadas. |
| Erro ao executar a ação "Salvar JSON em CSV". | A ação retornou um erro. Verifique a conexão com o servidor, os parâmetros de entrada ou as credenciais. |
Pesquisar por string
Pesquise strings em arquivos CSV.
Parâmetros
| Nome do parâmetro | Tipo | Valor padrão | É obrigatório | Descrição |
|---|---|---|---|---|
| Caminho do CSV | String | N/A | Sim | Especifique o caminho do arquivo CSV ou de uma pasta que contenha todos os arquivos CSV. Se uma pasta for fornecida, a ação vai iterar em todos os arquivos CSV da pasta. |
| Coluna CSV | String | N/A | Não | Especifique uma lista separada por vírgulas de colunas que podem conter informações de entidade. Se nada for fornecido, a ação vai pesquisar em todas as colunas. |
| Dias para trás | String | 10 | Não | Especifique quantos dias para trás processar os arquivos CSV. |
| Pesquisar valor | String | N/A | Não | Especifique uma string que precisa ser pesquisada. Se a opção "Pesquisar várias strings" estiver ativada, esse parâmetro será tratado como uma lista de strings separadas por vírgulas que precisam ser pesquisadas. |
| Retorne apenas a primeira linha. | Caixa de seleção | Desmarcado | Não | Se ativada, a ação vai retornar apenas uma linha no primeiro arquivo que corresponder à entidade. |
| Tipos de codificação de arquivos | String | utf-8, latin-1, iso-8859-1 | Sim | Uma lista separada por vírgulas de tipos de codificação CSV usados para decodificar seus arquivos CSV, por exemplo, utf-8, latin-1, iso-8859-1, utf-16... A ordem em que os tipos de codificação são fornecidos define a ordem em que eles são usados para decodificar arquivos.Por exemplo, (do exemplo acima) o utf-8 tem a maior prioridade e será usado principalmente para decodificar todos os arquivos. Se houver um arquivo CSV que use alguma outra codificação, a próxima na ordem (codificação latin-1) será usada e assim por diante, até que a última codificação seja usada. |
| Pesquisar várias strings | Caixa de seleção | Desmarcado | Não | Se ativada, a opção "Valor da pesquisa" vai funcionar como uma lista de valores separados por vírgulas, em vez de uma única string. |
| Campos a serem retornados | CSV | N/A | Não | Especifique uma lista separada por vírgulas de valores que precisam ser retornados. |
Casos de uso
Pesquise strings em arquivos CSV.
Executar em
Essa ação é executada em todas as entidades.
Resultados da ação
Resultado do script
| Nome do resultado do script | Opções de valor | Exemplo |
|---|---|---|
| count_rows_csv | Qualquer número de linhas | count_rows += 1 |
Resultado JSON
[
{
"EntityResult": {
"Field2": "Value2",
"Field3": "Value3",
"Field1": "Value1",
"Field4": "Value4",
"Field5": "Value5"
},
"Entity": "host"
}, {
"EntityResult": {
"Field2": "Value2",
"Field3": "Value3",
"Field1": "Value1",
"Field4": "Value4",
"Field5": "Value5"
}, "Entity": "1.1.1.1"
}
]
Painel de casos
| Tipo de resultado | Valor / Descrição | Tipo |
|---|---|---|
| Mensagem de saída* | Para registros encontrados:"Informações sobre as seguintes strings foram encontradas: \n (search_string)" Se nenhum registro for encontrado para algumas strings: "Não foi possível encontrar informações sobre as seguintes strings:" Se não houver sucesso em todos os registros: "Nenhuma informação foi encontrada para os itens fornecidos". Se todas as codificações forem inválidas:Erro ao executar a ação "Pesquisa de CSV por string". As codificações fornecidas são inválidas. Verifique a ortografia." |
Geral |
Pesquisar por entidade
Pesquisar e enriquecer entidades em arquivos CSV.
Parâmetros
| Nome do parâmetro | Tipo | Valor padrão | É obrigatório | Descrição |
|---|---|---|---|---|
| Caminho do CSV | String | N/A | Sim | Especifique o caminho do arquivo CSV ou de uma pasta que contenha todos os arquivos CSV. Se uma pasta for fornecida, a ação vai iterar em todos os arquivos CSV da pasta. |
| Coluna CSV | String | N/A | Sim | Especifique uma lista separada por vírgulas de colunas que podem conter informações de entidade. Se nada for fornecido, a ação vai pesquisar em todas as colunas. |
| Dias atrás | String | 10 | Sim | Especifique quantos dias para trás processar os arquivos CSV. |
| Marcar como suspeito | Caixa de seleção | Desmarcado | Não | Se ativada, a ação vai marcar a entidade como suspeita se ela for encontrada no arquivo. |
| Retorne apenas a primeira linha. | Caixa de seleção | Desmarcado | Não | Se ativada, a ação vai retornar apenas uma linha no primeiro arquivo que corresponder à entidade. |
| Tipos de codificação de arquivos | String | utf-8, latin-1, iso-8859-1 | Sim | Uma lista separada por vírgulas de tipos de codificação CSV usados para decodificar seus arquivos CSV, por exemplo, utf-8, latin-1, iso-8859-1, utf-16... A ordem em que os tipos de codificação são fornecidos define a ordem em que eles são usados para decodificar arquivos.Por exemplo, (do exemplo acima) o utf-8 tem a maior prioridade e será usado principalmente para decodificar todos os arquivos. Se houver um arquivo CSV que use alguma outra codificação, a próxima na ordem (codificação latin-1) será usada e assim por diante, até que a última codificação seja usada. |
| Enriquecer entidades | Caixa de seleção | Selecionado | Não | Se ativada, a ação vai adicionar informações do arquivo CSV à tabela de enriquecimento da entidade. |
| Criar insight | Caixa de seleção | Selecionado | Não | Se ativada, a ação vai criar um insight se a entidade for encontrada no arquivo. |
| Campos a serem retornados | CSV | N/A | Não | Especifique uma lista separada por vírgulas de valores que precisam ser retornados. |
Executar em
Essa ação é executada em todas as entidades.
Resultados da ação
Resultado do script
| Nome do resultado do script | Opções de valor | Exemplo |
|---|---|---|
| count_rows_csv | Qualquer número de linhas | count_rows += 1 |
Resultado JSON
[
{
"EntityResult": [{
"domain": "example.dom",
"fileHash": "cbbc5aea3d4c7ec193aa2ff3b52df36ebb12338b18c9bb53fc4896115efaf78d",
"reporter": "Symantec Antivirus",
"app": "Arcsight",
"id": "1011",
"eventTime": "9/4/2017 10:00",
"antivirusAction": "blocked",
"virusName": "ECAT",
"rule": "malicious",
"eventName": "Virus detected",
"User": "Ziv",
"eventHostName": "WS-ZivDevComp",
"File Source Path": "C:\\\\Users\\\\Default\\\\Desktop\\\\stringTimeRaw.csv",
"machineAddress": "192.168.11.11"
}, {
"domain": "SmartCompany.dom",
"fileHash": "cbbc5aea3d4c7ec193aa2ff3b52df36ebb12338b18c9bb53fc4896115efaf78d",
"reporter": "Symantec Antivirus",
"app": "ESM",
"id": "1012",
"eventTime": "9/4/2017 10:00",
"antivirusAction": "allowed",
"virusName": "ECAT",
"rule": "malicious",
"eventName": "Virus detected",
"User": "GG",
"eventHostName": "WS-GGDevComp",
"File Source Path": "C:\\\\Users\\\\Default\\\\Desktop\\\\stringTimeRaw.csv",
"machineAddress": "192.168.11.11"
}],
"Entity": "192.168.11.11"
}
]
Painel de casos
| Tipo de resultado | Valor / Descrição | Tipo |
|---|---|---|
| Mensagem de saída* | Para entidades encontradas:"Encontramos informações sobre as seguintes entidades: \n (entity.identifier)" Para entidades não encontradas: "Nenhuma informação foi encontrada sobre as seguintes entidades: \n (entity.identifier)" Se não houver sucesso para todas as entidades: "Nenhuma informação foi encontrada para as entidades fornecidas". Se todas as codificações forem inválidas: "Erro ao executar a ação "Pesquisa de CSV por string". As codificações fornecidas são inválidas. Verifique a ortografia." |
Geral |
Ping
Teste a conectividade.
Parâmetros
N/A
Executar em
Essa ação é executada em todas as entidades.
Resultados da ação
Resultado do script
N/A
Resultado JSON
N/A
Conectores
Conector CSV
Extrair dados de arquivos CSV localizados em uma pasta específica e converter esses dados em alertas no sistema do Google SecOps.
Este tópico ilustra o mecanismo e a configuração com que o Google SecOps produz arquivos CSV, além de fluxos de trabalho e ações compatíveis realizadas na plataforma.
Casos de uso
Um cliente tem arquivos CSV de um sistema, e os arquivos podem ser de codificações diferentes.
* Add support for comma-separated encodings in the Encoding field in the
connector.
* The connector should try the different encodings by their order in
the field (first encoding - highest priority, last - lowest
priority) with try/except. If no matching encoding was found -
consider the file as an error and notify.
* Put a default value for the fields - a list of most common CSV
encodings by priority (utf8, latin1, and iso...)
Acesso a arquivos CSV
Acesso do Google SecOps a arquivos CSV: configure uma pasta para os arquivos CSV.
Encaminhamento de registros CSV para o Google SecOps
Trabalhar com registros de arquivos CSV
Ao configurar o Google SecOps para trabalhar com arquivos CSV como uma fonte de alertas, você precisa fornecer uma pasta específica de onde os CSVs serão buscados. O Google SecOps vai extrair todos os registros de um arquivo CSV e encaminhá-los para serem traduzidos e contextualizados como alertas para casos.
Como mapear a gravidade no conector
Para mapear a gravidade, especifique qual campo deve ser usado para receber o valor da gravidade no parâmetro "Nome do campo de gravidade". Na resposta, você pode receber três tipos de valores: números inteiros, números de ponto flutuante e strings. Para números inteiros e de ponto flutuante, não é preciso fazer nenhuma outra configuração. O conector vai ler esses valores e mapeá-los de acordo com os padrões do Google SecOps. Um lembrete rápido de como os valores inteiros são mapeados:
- 100: crítica
- 100 > x >= 80 Alta
- 80 > x >=60 Médio
- 60 > x >=40 Baixa
- 40 > x Informativa
Se na resposta estivermos trabalhando com strings, será necessária uma configuração adicional. Na pasta em que os scripts do conector estão localizados, há um arquivo de configuração chamado severity_map_config.json. Esse arquivo define regras de mapeamento para a gravidade.
Inicialmente, o arquivo vai ficar assim: 1 2 3 { "Default": 50 }
Imagine uma situação em que os valores necessários estão localizados em event.severity. Esse campo pode conter os seguintes valores: "Malicious", "Benign" e "Unknown".
Primeiro, precisamos especificar no parâmetro "Nome do campo de gravidade" que vamos usar event.severity. Em segundo lugar, precisamos atualizar o arquivo de configuração. Depois das mudanças, o arquivo severity_map_config.json vai ficar assim: 1 2 3 4 5 6 7 8 {
"event.severity": { "Malicious": 100, "Unknown": 60, "Benign": -1 }, "Default":
50 }
Agora, quando o conector receber um evento com event.severity = "Malicious", ele vai atribuir gravidade "Crítica".
Configurar o conector CSV no Google SecOps
Para instruções detalhadas sobre como configurar um conector no Google SecOps, consulte Configurar o conector.
Parâmetros do conector
Use os seguintes parâmetros para configurar o conector:
| Nome do parâmetro | Tipo | Valor padrão | É obrigatório | Descrição |
|---|---|---|---|---|
| Nome do campo do produto | String | device_product | Sim | O nome do campo usado para determinar o produto do dispositivo. |
| Nome do campo de evento | String | nome | Não | O nome do campo usado para determinar o nome do evento (subtipo). |
| Tempo limite do script (segundos) | String | 60 | Sim | O limite de tempo (em segundos) para o processo Python que executa o script atual. |
| Caminho da pasta CSV | String | N/A | Sim | Caminho da pasta que contém todos os arquivos CSV que precisam ser ingeridos. |
| Limite de CSV | String | N/A | Não | Quantos arquivos CSV processar por iteração. |
| Nome do campo do gerador de regras | String | N/A | Não | Nome do campo que contém informações sobre o gerador de regras. |
| Nome do campo de horário | String | N/A | Não | Nome do campo que contém informações sobre o horário do evento. |
| CSV Has Header | Caixa de seleção | Selecionado | Sim | Indica se o arquivo CSV tem um cabeçalho. |
| Tipo de codificação do arquivo | String | utf-8 | Sim | Defina o tipo de codificação CSV, por exemplo, iso-8859-1, latin1, utf-8, utf-16. |
| Nome do campo de alerta | String | N/A | Não | Nome do campo que contém informações sobre o nome do alerta. |
| Nome do campo de gravidade | String | N/A | Não | Nome do campo que contém informações sobre a gravidade. |
Regras de conector
Suporte a proxy
O conector não é compatível com proxy.
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.