Recolha registos de auditoria do Tanium
Este documento explica como carregar registos de auditoria do Tanium para o Google Security Operations através do Amazon S3 com a capacidade de exportação nativa do S3 do Tanium Connect. O analisador extrai os registos, limpando inicialmente vários campos predefinidos. Em seguida, analisa a mensagem de registo através do grok e do filtro JSON, extraindo campos como a data/hora, o IP do dispositivo e os detalhes de auditoria. O analisador mapeia estes campos extraídos para o UDM, processando vários tipos de dados e lógica condicional para preencher os campos do UDM adequados com base na presença e nos valores de atributos específicos do registo de auditoria do Tanium.
Antes de começar
Certifique-se de que tem os seguintes pré-requisitos:
- Uma instância do Google SecOps
- Acesso privilegiado ao Tanium Connect e à Tanium Console
- Acesso privilegiado à AWS (S3, IAM)
Crie um contentor do Amazon S3
- Abra a consola do Amazon S3.
- Se necessário, pode alterar a Região.
- Na barra de navegação, selecione a região onde quer que os seus registos de auditoria do Tanium residam.
- Clique em Criar contentor.
- Nome do segmento: introduza um nome significativo para o segmento (por exemplo,
tanium-audit-logs
). - Região: selecione a sua região preferida (por exemplo,
us-east-1
). - Clique em Criar.
- Nome do segmento: introduza um nome significativo para o segmento (por exemplo,
Crie um utilizador do IAM com acesso total ao Amazon S3
- Abra a consola do IAM.
- Clique em Utilizadores > Adicionar utilizador.
- Introduza um nome de utilizador (por exemplo,
tanium-connect-s3-user
). - Selecione Acesso programático e/ou Acesso à AWS Management Console, conforme necessário.
- Selecione Palavra-passe gerada automaticamente ou Palavra-passe personalizada.
- Clique em Seguinte: autorizações.
- Escolha Anexar políticas existentes diretamente.
- Pesquise e selecione a política AmazonS3FullAccess para o utilizador.
- Clique em Seguinte: Etiquetas.
- Clique em Seguinte: rever.
- Clique em Criar utilizador.
- Copie e guarde o ID da chave de acesso e a chave de acesso secreta para referência futura.
Configure autorizações no contentor do Amazon S3
- Na consola do Amazon S3, escolha o contentor que criou anteriormente.
- Clique em Autorizações > Política do contentor.
No Editor de políticas de contentores, adicione a seguinte política:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::YOUR_ACCOUNT_ID:user/tanium-connect-s3-user" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::tanium-audit-logs", "arn:aws:s3:::tanium-audit-logs/*" ] } ] }
Substitua as seguintes variáveis:
- Altere
YOUR_ACCOUNT_ID
para o ID da sua conta da AWS. - Altere
tanium-audit-logs
para o nome do seu contentor real, se for diferente. - Altere
tanium-connect-s3-user
para o seu nome de utilizador do IAM real, se for diferente.
- Altere
Clique em Guardar.
Configure o Tanium Connect para a exportação para o S3
Crie uma ligação AWS S3 no Tanium Connect
- Inicie sessão na consola do Tanium como administrador.
- Aceda a Tanium Connect > Ligações.
- Clique em Criar associação.
- Na secção Informações gerais, faculte os seguintes detalhes de configuração:
- Nome: introduza um nome descritivo (por exemplo,
Tanium Audit to S3
). - Descrição: introduza uma descrição significativa (por exemplo,
Export Tanium audit logs to S3 for Google SecOps ingestion
). - Ativar: selecione para ativar a ligação.
- Nível de registo: selecione Informações (predefinição) ou ajuste conforme necessário.
- Nome: introduza um nome descritivo (por exemplo,
Configure a origem da associação
- Na secção Configuração, para Origem, selecione Tanium Audit.
- Configure as definições da origem de auditoria:
- Dias do histórico obtidos: introduza o número de dias de dados de auditoria do histórico a obter (por exemplo,
7
para uma semana). - Tipos de auditoria: selecione os tipos de auditoria que quer exportar. Escolha uma das seguintes opções:
- Histórico de ações: ações emitidas pelos operadores da consola.
- Autenticação: eventos de autenticação de utilizadores.
- Conteúdo: alterações e modificações ao conteúdo.
- Grupos: alterações ao grupo de computadores.
- Pacotes: atividades relacionadas com pacotes.
- Sensores: modificações de sensores.
- Definições do sistema: alterações à configuração do sistema.
- Utilizadores: atividades de gestão de utilizadores.
- Dias do histórico obtidos: introduza o número de dias de dados de auditoria do histórico a obter (por exemplo,
Configure o destino AWS S3
- Em Destino, selecione AWS S3.
- Indique os seguintes detalhes de configuração:
- Nome do destino: introduza um nome (por exemplo,
Google SecOps S3 Bucket
). - Chave de acesso da AWS: introduza o ID da chave de acesso do utilizador do IAM criado anteriormente.
- Chave secreta da AWS: introduza a chave de acesso secreta do utilizador do IAM criado anteriormente.
- Nome do contentor: introduza o nome do contentor do S3 (por exemplo,
tanium-audit-logs
). - Caminho do contentor: opcional. Introduza um prefixo de caminho (por exemplo,
tanium/audit/
). - Região: selecione a região da AWS onde o seu contentor reside (por exemplo,
us-east-1
).
- Nome do destino: introduza um nome (por exemplo,
Configure o formato e o agendamento
- Na secção Formato, configure o formato de saída:
- Tipo de formato: selecione JSON.
- Incluir cabeçalhos de colunas: selecione se quer incluir cabeçalhos de colunas.
- Gerar documento: desmarque esta opção para enviar dados JSON não processados.
- Na secção Agendamento, configure quando a associação é executada:
- Tipo de agendamento: selecione Cron.
- Expressão cronológica: introduza uma expressão cronológica para exportações regulares (por exemplo,
0 */1 * * *
para exportações de hora em hora). - Data de início: defina a data de início da programação.
- Clique em Guardar alterações.
Teste e execute a ligação
- Na página Vista geral do Connect, aceda a Ligações.
- Clique na associação que criou (Tanium Audit to S3).
- Clique em Executar agora para testar a ligação.
- Confirme que quer executar a ligação.
- Monitorize o estado da ligação e verifique se os registos de auditoria estão a ser exportados para o seu contentor S3.
Opcional: crie um utilizador e chaves da IAM só de leitura para o Google SecOps
- Aceda a AWS Console > IAM > Users > Add users.
- Clique em Adicionar utilizadores.
- Indique os seguintes detalhes de configuração:
- Utilizador: introduza
secops-reader
. - Tipo de acesso: selecione Chave de acesso – Acesso programático.
- Utilizador: introduza
- Clique em Criar utilizador.
- Anexe a política de leitura mínima (personalizada): Users > secops-reader > Permissions > Add permissions > Attach policies directly > Create policy.
No editor JSON, introduza a seguinte política:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::tanium-audit-logs/*" }, { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": "arn:aws:s3:::tanium-audit-logs" } ] }
Defina o nome como
secops-reader-policy
.Aceda a Criar política > pesquise/selecione > Seguinte > Adicionar autorizações.
Aceda a Credenciais de segurança > Chaves de acesso > Criar chave de acesso.
Transfira o CSV (estes valores são introduzidos no feed).
Configure um feed no Google SecOps para carregar registos de auditoria do Tanium
- Aceda a Definições do SIEM > Feeds.
- Clique em + Adicionar novo feed.
- No campo Nome do feed, introduza um nome para o feed (por exemplo,
Tanium Audit logs
). - Selecione Amazon S3 V2 como o Tipo de origem.
- Selecione Tanium Audit como o Tipo de registo.
- Clicar em Seguinte.
- Especifique valores para os seguintes parâmetros de entrada:
- URI do S3:
s3://tanium-audit-logs/tanium/audit/
(ajuste o caminho se tiver usado um nome ou um caminho do contentor diferente). - Opções de eliminação de origens: selecione a opção de eliminação de acordo com a sua preferência.
- Idade máxima do ficheiro: inclua ficheiros modificados no último número de dias. A predefinição é 180 dias.
- ID da chave de acesso: chave de acesso do utilizador com acesso ao contentor do S3 (do utilizador só de leitura criado acima).
- Chave de acesso secreta: chave secreta do utilizador com acesso ao contentor do S3 (do utilizador só de leitura criado acima).
- Espaço de nomes do recurso: o espaço de nomes do recurso.
- Etiquetas de carregamento: a etiqueta a aplicar aos eventos deste feed.
- URI do S3:
- Clicar em Seguinte.
- Reveja a nova configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.
Tabela de mapeamento da UDM
Campo de registo | Mapeamento de UDM | Lógica |
---|---|---|
ActionId |
metadata.product_log_id |
Mapeado diretamente a partir do campo ActionId . |
ActionName |
security_result.action_details |
Mapeado diretamente a partir do campo ActionName . |
Approver |
additional.fields[Approver].value.string_value |
Mapeado diretamente a partir do campo Approver . |
Approver |
principal.user.userid |
Mapeado a partir do campo Approver se Issuer não estiver presente. |
audit_name |
metadata.description |
Mapeado diretamente a partir do campo audit_name . |
audit_row_id |
additional.fields[audit_row_id].value.string_value |
Mapeado diretamente a partir do campo audit_row_id . |
audit_type |
additional.fields[audit_type].value.string_value |
Mapeado diretamente a partir do campo audit_type . |
authentication_type |
principal.user.attribute.labels[authentication_type].value |
Mapeado diretamente a partir do campo authentication_type extraído do campo details . |
Command |
principal.process.command_line |
Mapeado diretamente a partir do campo Command após a descodificação do URL. |
creation_time |
target.resource.attribute.creation_time |
Mapeado diretamente a partir do campo creation_time . |
details |
network.session_id |
Extraído do campo details através da análise de chaves-valores. |
details |
principal.user.attribute.labels[authentication_type].value |
Extraído do campo details através da análise de chaves-valores. |
details |
principal.asset.ip , principal.ip |
O endereço IP é extraído do campo details através da análise de chaves-valores e mapeado para principal.asset.ip e principal.ip . |
DistributeOver |
additional.fields[DistributeOver].value.string_value |
Mapeado diretamente a partir do campo DistributeOver . |
dvc_ip |
intermediary.hostname |
Mapeado diretamente a partir do campo dvc_ip extraído da mensagem syslog. |
dvc_ip |
observer.ip |
Mapeado diretamente a partir do campo dvc_ip se logstash.collect.host não estiver presente. |
Expiration |
additional.fields[Expiration].value.string_value |
Mapeado diretamente a partir do campo Expiration . |
host.architecture |
target.asset.hardware.cpu_platform |
Mapeado diretamente a partir do campo host.architecture . |
host.id |
target.asset.asset_id |
Mapeado diretamente a partir do campo host.id , com o prefixo "ID do anfitrião:". |
host.ip |
target.ip |
Mapeado diretamente a partir do campo host.ip . |
host.mac |
target.mac |
Mapeado diretamente a partir do campo host.mac . |
host.name |
target.hostname |
Mapeado diretamente a partir do campo host.name se host.hostname não estiver presente. |
host.os.kernel |
target.platform_patch_level |
Mapeado diretamente a partir do campo host.os.kernel . |
host.os.name |
additional.fields[os_name].value.string_value |
Mapeado diretamente a partir do campo host.os.name . |
host.os.version |
target.platform_version |
Mapeado diretamente a partir do campo host.os.version . |
InsertTime |
additional.fields[InsertTime].value.string_value |
Mapeado diretamente a partir do campo InsertTime . |
Issuer |
additional.fields[Issuer].value.string_value |
Mapeado diretamente a partir do campo Issuer . |
Issuer |
principal.user.userid |
Mapeado diretamente a partir do campo Issuer , se estiver presente. |
last_modified_by |
principal.resource.attribute.labels[last_modified_by].value |
Mapeado diretamente a partir do campo last_modified_by . |
log.source.address |
principal.ip |
O endereço IP é extraído do campo log.source.address e mapeado para principal.ip . |
log.source.address |
principal.port |
A porta é extraída do campo log.source.address . |
logstash.collect.host |
observer.ip |
Mapeado diretamente a partir do campo logstash.collect.host , se estiver presente. |
logstash.collect.timestamp |
metadata.collected_timestamp |
Mapeado diretamente a partir do campo logstash.collect.timestamp . |
logstash.ingest.timestamp |
metadata.ingested_timestamp |
Mapeado diretamente a partir do campo logstash.ingest.timestamp . |
logstash.irm_environment |
additional.fields[irm_environment].value.string_value |
Mapeado diretamente a partir do campo logstash.irm_environment . |
logstash.irm_region |
additional.fields[irm_region].value.string_value |
Mapeado diretamente a partir do campo logstash.irm_region . |
logstash.irm_site |
additional.fields[irm_site].value.string_value |
Mapeado diretamente a partir do campo logstash.irm_site . |
logstash.process.host |
intermediary.hostname |
Mapeado diretamente a partir do campo logstash.process.host . |
message |
dvc_ip , json_data , timestamp |
Analisado com o grok para extrair dvc_ip , json_data e timestamp . |
modification_time |
target.resource.attribute.last_update_time |
Mapeado diretamente a partir do campo modification_time . |
modifier_user_id |
principal.resource.attribute.labels[modifier_user_id].value |
Mapeado diretamente a partir do campo modifier_user_id . |
object_id |
target.resource.product_object_id |
Mapeado diretamente a partir do campo object_id . |
object_name |
target.resource.name |
Mapeado diretamente a partir do campo object_name . |
object_type_name |
target.resource.attribute.labels[object_type_name].value |
Mapeado diretamente a partir do campo object_type_name . |
PackageName |
additional.fields[PackageName].value.string_value |
Mapeado diretamente a partir do campo PackageName . |
SourceId |
additional.fields[SourceId].value.string_value |
Mapeado diretamente a partir do campo SourceId . |
StartTime |
additional.fields[StartTime].value.string_value |
Mapeado diretamente a partir do campo StartTime . |
Status |
security_result.action |
Mapeado para "BLOCK" se Status for "Closed" e "ALLOW" se Status for "Open". |
Status |
security_result.summary |
Mapeado diretamente a partir do campo Status . |
tanium_audit_type |
metadata.product_event_type |
Mapeado diretamente a partir do campo tanium_audit_type . |
timestamp |
metadata.event_timestamp |
Mapeado diretamente a partir do campo timestamp extraído da mensagem syslog ou do campo message . |
type |
additional.fields[type].value.string_value |
Mapeado diretamente a partir do campo type . |
type_name |
metadata.product_event_type |
Mapeado diretamente a partir do campo type_name . |
User |
principal.user.userid |
Mapeado diretamente a partir do campo User . Determinado pela lógica do analisador com base na presença de src_ip , has_target e has_user . Pode ser "NETWORK_CONNECTION", "USER_RESOURCE_ACCESS", "STATUS_UPDATE" ou "GENERIC_EVENT". Codificado de forma rígida para "TANIUM_AUDIT". Codificado de forma rígida para "cybersecurity". Codificado de forma rígida para "TANIUM_AUDIT". |
@version |
metadata.product_version |
Mapeado diretamente a partir do campo @version . |
agent.ephemeral_id |
additional.fields[ephemeral_id].value.string_value |
Mapeado diretamente a partir do campo agent.ephemeral_id . |
agent.id |
observer.asset_id |
Mapeado diretamente a partir do campo agent.id , com o prefixo "filebeat:". |
agent.type |
observer.application |
Mapeado diretamente a partir do campo agent.type . |
agent.version |
observer.platform_version |
Mapeado diretamente a partir do campo agent.version . |
Comment |
security_result.description |
Mapeado diretamente a partir do campo Comment . |
host.hostname |
target.hostname |
Mapeado diretamente a partir do campo host.hostname , se estiver presente. |
input.type |
network.ip_protocol |
Mapeado para "TCP" se input.type for "tcp" ou "TCP". |
syslog_severity |
security_result.severity |
Mapeado para "HIGH" se syslog_severity for "error" ou "warning", "MEDIUM" se for "notice", "LOW" se for "information" ou "info". |
syslog_severity |
security_result.severity_details |
Mapeado diretamente a partir do campo syslog_severity . |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.