Integrar CSV com o Google SecOps
Neste documento, descrevemos como integrar o CSV ao Google Security Operations.
Este documento explica como integrar o CSV ao Google Security Operations.
Casos de uso
No Google SecOps, a integração de CSV é compatível com os seguintes casos de uso:
Busca de ameaças baseada em arquivos: pesquise rapidamente em arquivos de registro CSV locais ou remotos strings específicas ou entidades mal-intencionadas para identificar ameaças registradas no histórico.
Geração automatizada de alertas: ingira automaticamente registros de sistemas legados que geram dados no formato CSV, convertendo-os em alertas acionáveis com mapeamento de gravidade personalizado.
Portabilidade de dados e relatórios: transforme de forma programática os resultados JSON de outras ações do playbook em formato CSV para exportação simplificada para ferramentas de relatórios externas ou armazenamento local.
Enriquecimento automatizado de entidades: use arquivos CSV como uma fonte de inteligência contra ameaças local 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 várias codificações de caracteres, 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 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 de 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ê quer 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 o campo para executar a integração configurada remotamente. Depois de marcada, a opção de selecionar o usuário remoto (agente) aparece. |
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.
Salvar JSON como 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 que será salvo como CSV. |
| Substituir | Booleano | Falso | Não | Se ativada, a ação substitui 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/. |
Corrida
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 como 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
Pesquisar 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 a pasta for fornecida, a ação vai iterar todos os arquivos CSV na pasta. |
| Coluna do 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 anteriores | String | 10 | Não | Especifique quantos dias anteriores devem ser processados nos 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. |
| Retorna 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 arquivo | 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, no exemplo acima, utf-8 tem a prioridade mais alta e será usado principalmente para decodificar todos os arquivos. Se houver um arquivo CSV que use outra codificação, o próximo na ordem, latin-1, será usado, 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 de pesquisa" vai funcionar como uma lista de valores separada 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
Pesquisar strings em arquivos CSV.
Corrida
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 encontradas sobre as seguintes strings: \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 para 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
Pesquise entidades em arquivos CSV e enriqueça-as.
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 a pasta for fornecida, a ação vai iterar todos os arquivos CSV na pasta. |
| Coluna do 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 anteriores | String | 10 | Sim | Especifique quantos dias anteriores devem ser processados nos 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. |
| Retorna 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 arquivo | 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, (no exemplo acima) o utf-8 tem a prioridade mais alta e será usado principalmente para decodificar todos os arquivos. Se houver um arquivo CSV que use outra codificação, o próximo na ordem será usado: codificação latin-1 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. |
Corrida
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 que não foram 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
Corrida
Essa ação é executada em todas as entidades.
Resultados da ação
Resultado do script
N/A
Resultado JSON
N/A
Conectores
Conector CSV
Busque dados de arquivos CSV localizados em uma pasta específica e converta-os em alertas no sistema do Google SecOps.
Este tópico ilustra o mecanismo e a configuração pelos quais o Google SecOps produz arquivos CSV, além dos fluxos de trabalho compatíveis e das ações realizadas na plataforma.
Casos de uso
Um cliente tem CSVs provenientes 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 aos arquivos CSV: configure uma pasta para os arquivos CSV.
Encaminhamento de registros CSV para o Google SecOps
Como trabalhar com registros de arquivos CSV
Ao configurar o Google SecOps para trabalhar com arquivos CSV como uma fonte de alerta, você precisará fornecer uma pasta específica de onde os CSVs serão buscados. O Google SecOps vai recuperar qualquer registro em um arquivo CSV e encaminhá-lo para ser traduzido e contextualizado como alertas para casos.
Como mapear a gravidade no conector
Para mapear a gravidade, é necessário especificar qual campo deve ser usado para receber o valor de 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 ponto flutuante, não é necessário 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ítico
- 100 > x >= 80: alta
- 80 > x >=60 Média
- 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, você terá um nome de arquivo de configuração 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. event.severity pode conter os seguintes valores: "Malicious", "Benign", "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 = "Mal-intencionado", ele
vai atribuir a gravidade Crítica.
Configurar o conector CSV no Google SecOps
Para instruções detalhadas sobre como configurar um conector no Google SecOps, consulte Como 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 do evento | String | nome | Não | O nome do campo usado para determinar o nome do evento (subtipo). |
| Tempo limite de script (segundos) | String | 60 | Sim | O limite de tempo limite (em segundos) para o processo do 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 serão processados 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. |
| O CSV tem cabeçalho | Caixa de seleção | Selecionado | Sim | Indica se o arquivo CSV tem cabeçalho. |
| Tipo de codificação de arquivo | String | utf-8 | Sim | Defina o tipo de codificação do 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 do 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.