Integre CSV com o Google SecOps
Este documento descreve como integrar o CSV com o Google Security Operations.
Este documento explica como integrar o CSV com o Google Security Operations.
Casos de uso
No Google SecOps, a integração CSV oferece suporte aos seguintes casos de uso:
Busca de ameaças baseada em arquivos: Pesquise rapidamente em arquivos de log CSV locais ou remotos por strings específicas ou entidades maliciosas para identificar ameaças registradas anteriormente.
Geração automática de alertas: Ingerir automaticamente registros de sistemas legados que geram dados em formato CSV, convertendo-os em alertas acionáveis 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 externos 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 com eficiência arquivos com codificações de caracteres variadas, como formatos Excel legados, para garantir a consistência dos dados em ferramentas de segurança distintas.
Antes de começar
Antes de configurar a integração no Google SecOps, verifique se você possui o seguinte:
Recursos internos da plataforma: Esta integração fornece recursos integrados de processamento de arquivos e não requer chaves de API ou credenciais externas de terceiros para autenticação.
Permissões do sistema de arquivos: Se um Agente Remoto for usado, a integração requer 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 requer 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.
Você pode 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
Salvar 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 sobrescreve o arquivo existente. |
| 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 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 com sucesso 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 em Google Cloud Policy Intelligence | A ação não conseguiu encontrar 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 texto
Pesquisar sequências de caracteres em arquivos CSV.
Parâmetros
| Nome do parâmetro | Tipo | Valor padrão | É obrigatório | Descrição |
|---|---|---|---|---|
| Caminho CSV | String | N/A | Sim | Especifique o caminho do arquivo CSV ou o caminho da pasta que contém todos os arquivos CSV. Se uma pasta for fornecida, a ação percorrerá todos os arquivos CSV na 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 separada por vírgulas de strings 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:"A ação não conseguiu 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 CSV por string". As codificações fornecidas são inválidas. Verifique a ortografia." |
Geral |
Pesquisar por entidade
Pesquise entidades em arquivos CSV e enriqueça-as.
Parâmetros
| Nome do parâmetro | Tipo | Valor padrão | É obrigatório | Descrição |
|---|---|---|---|---|
| Caminho CSV | String | N/A | Sim | Especifique o caminho do arquivo CSV ou o caminho da pasta que contém todos os arquivos CSV. Se uma pasta for fornecida, a ação percorrerá todos os arquivos CSV na 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 marcará a entidade como suspeita, caso ela seja 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 adicionará informações do arquivo CSV e as incluirá na tabela de enriquecimento da entidade. |
| Criar insight | Caixa de seleção | Selecionado | Não | Se ativada, a ação criará uma informação adicional caso uma entidade seja 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: "Informações encontradas com sucesso sobre as seguintes entidades: \n (identificador da entidade)" Para entidades não encontradas: "Nenhuma informação foi encontrada sobre as seguintes entidades: \n (identificador da entidade)" 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 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
Extrai dados de arquivos CSV localizados em uma pasta específica e converte esses dados em alertas no sistema Google SecOps.
Este tópico ilustra o mecanismo e a configuração pelos quais o Google SecOps gera arquivos CSV, juntamente com os fluxos de trabalho e ações suportados dentro da plataforma.
Casos de uso
Um cliente recebe arquivos CSV de um sistema, e esses arquivos podem ter 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 recuperar todos os registros em 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 Informativo
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 suporta Proxy.
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.