Recolha registos do AWS Elastic MapReduce
Este documento explica como carregar registos do AWS Elastic MapReduce (EMR) para o Google Security Operations. O AWS EMR é uma plataforma de Big Data nativa da nuvem que processa grandes quantidades de dados rapidamente. A integração dos registos do EMR no Google SecOps permite-lhe analisar a atividade do cluster e detetar potenciais ameaças de segurança.
Antes de começar
Certifique-se de que cumpre os seguintes pré-requisitos:
- Instância do Google SecOps
- Acesso privilegiado ao AWS
Configure o contentor do Amazon S3
- Crie um contentor do Amazon S3 seguindo este manual do utilizador: Criar um contentor
- Guarde o Nome e a Região do contentor para utilização posterior.
- Crie um utilizador seguindo este guia do utilizador: Criar um utilizador do IAM.
- Selecione o utilizador criado.
- Selecione o separador Credenciais de segurança.
- Clique em Criar chave de acesso na secção Chaves de acesso.
- Selecione Serviço de terceiros como o Exemplo de utilização.
- Clicar em Seguinte.
- Opcional: adicione uma etiqueta de descrição.
- Clique em Criar chave de acesso.
- Clique em Transferir ficheiro CSV para guardar a chave de acesso e a chave de acesso secreta para utilização posterior.
- Clique em Concluído.
- Selecione o separador Autorizações.
- Clique em Adicionar autorizações na secção Políticas de autorizações.
- Selecione Adicionar autorizações.
- Selecione Anexar políticas diretamente.
- Pesquise e selecione as políticas AmazonS3FullAccess e CloudWatchLogsFullAccess.
- Clicar em Seguinte.
- Clique em Adicionar autorizações.
Como configurar o AWS EMR para encaminhar registos
- Inicie sessão na AWS Management Console.
- Na barra de pesquisa, escreva EMR e selecione Amazon EMR na lista de serviços.
- Clique em Clusters.
- Encontre e selecione o cluster do EMR para o qual quer ativar o registo.
- Clique em Editar na página Detalhes do cluster.
- No ecrã Editar cluster, aceda à secção Registo.
- Selecione Ativar o registo.
- Especifique o contentor do S3 onde os registos vão ser armazenados.
- Especifique o URI S3 no formato
s3://your-bucket-name/
(isto armazena todos os registos do EMR na raiz do contentor). - Selecione os seguintes tipos de registos:
Step logs
Application logs
YARN logs
System logs
HDFS Logs
(se estiver a usar o Hadoop)
- Clique em Guardar.
Configure feeds
Existem dois pontos de entrada diferentes para configurar feeds na plataforma Google SecOps:
- Definições do SIEM > Feeds > Adicionar novo
- Content Hub > Pacotes de conteúdo > Começar
Como configurar o feed do AWS EMR
- Clique no pacote Amazon Cloud Platform.
- Localize o tipo de registo AWS EMR.
Especifique os valores nos seguintes campos.
- Tipo de origem: Amazon SQS V2
- Nome da fila: o nome da fila SQS a partir da qual ler
- URI do S3: o URI do contentor.
s3://your-log-bucket-name/
- Substitua
your-log-bucket-name
pelo nome real do seu contentor do S3.
- Substitua
Opções de eliminação de origens: selecione a opção de eliminação de acordo com as suas preferências de carregamento.
Idade máxima do ficheiro: inclua ficheiros modificados no último número de dias. A predefinição é 180 dias.
ID da chave de acesso à fila SQS: uma chave de acesso à conta que é uma string alfanumérica de 20 carateres.
Chave de acesso secreta da fila SQS: uma chave de acesso à conta que é uma string alfanumérica de 40 carateres.
Opções avançadas
- Nome do feed: um valor pré-preenchido que identifica o feed.
- Espaço de nomes do recurso: espaço de nomes associado ao feed.
- Etiquetas de carregamento: etiquetas aplicadas a todos os eventos deste feed.
Clique em Criar feed.
Para mais informações sobre a configuração de vários feeds para diferentes tipos de registos nesta família de produtos, consulte o artigo Configure feeds por produto.
Tabela de mapeamento da UDM
Campo de registo | Mapeamento de UDM | Lógica |
---|---|---|
app_id |
additional.fields[].key |
O valor "APP" é atribuído através da análise |
app_id |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo APP no registo não processado. |
app_name |
additional.fields[].key |
O valor "APPNAME" é atribuído através do analisador |
app_name |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo APPNAME no registo não processado. |
blockid |
additional.fields[].key |
O valor "blockid" é atribuído através da análise sintática |
blockid |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo blockid no registo não processado. |
bytes |
network.received_bytes |
Mapeado diretamente a partir do campo bytes no registo não processado, convertido num número inteiro não assinado. |
cliID |
additional.fields[].key |
O valor "cliID" é atribuído através da análise sintática |
cliID |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo cliID no registo não processado. |
cmd |
target.process.command_line |
Mapeado diretamente a partir do campo cmd no registo não processado. |
comp_name |
additional.fields[].key |
O valor "COMP" é atribuído através da análise sintática |
comp_name |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo COMP no registo não processado. |
configuration_version |
additional.fields[].key |
O valor "configuration_version" é atribuído através do analisador |
configuration_version |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo configuration_version no registo não processado, convertido numa string. |
containerID |
additional.fields[].key |
O valor "containerID" é atribuído através do analisador |
containerID |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo CONTAINERID no registo não processado. |
description |
security_result.description |
Mapeado diretamente a partir do campo description no registo não processado. |
dfs.FSNamesystem.* |
additional.fields[].key |
A chave é gerada concatenando "dfs.FSNamesystem." com a chave dos dados JSON. |
dfs.FSNamesystem.* |
additional.fields[].value.string_value |
O valor é mapeado diretamente a partir do valor correspondente no objeto JSON dfs.FSNamesystem , convertido numa string. |
duration |
additional.fields[].key |
O valor "duration" é atribuído através da análise sintática |
duration |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo duration no registo não processado. |
duration |
network.session_duration.seconds |
Mapeado diretamente a partir do campo duration no registo não processado, convertido num número inteiro. |
environment |
additional.fields[].key |
O valor "environment" é atribuído através da análise sintática |
environment |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo environment no registo não processado. Extraído do campo ip_port através da análise detalhada e da manipulação de strings. Extraído do campo ip_port através da análise grok e da manipulação de strings, convertido num número inteiro. |
event_type |
metadata.event_type |
Determinado pela lógica do analisador com base na presença de informações principal e target . Pode ser NETWORK_CONNECTION , USER_RESOURCE_ACCESS , STATUS_UPDATE ou GENERIC_EVENT . |
file_path |
target.file.full_path |
Mapeado diretamente a partir do campo file_path no registo não processado. |
host |
principal.hostname |
Mapeado diretamente a partir do campo host no registo não processado. |
host |
target.hostname |
Mapeado diretamente a partir do campo host no registo não processado. |
host_ip |
principal.ip |
Mapeado diretamente a partir do campo host_ip no registo não processado. |
host_port |
principal.port |
Mapeado diretamente a partir do campo host_port no registo não processado, convertido num número inteiro. |
http_url |
target.url |
Mapeado diretamente a partir do campo http_url no registo não processado. |
index |
additional.fields[].key |
O valor "index" é atribuído através da análise |
index |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo index no registo não processado. |
kind |
metadata.product_event_type |
Mapeado diretamente a partir do campo kind no registo não processado. O valor "AWS_EMR" é atribuído através do analisador O valor "AWS EMR" é atribuído através do analisador O valor "AMAZON" é atribuído através do analisador |
offset |
additional.fields[].key |
O valor "offset" é atribuído através do analisador |
offset |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo offset no registo não processado. |
op |
metadata.product_event_type |
Mapeado diretamente a partir do campo op ou OPERATION no registo não processado. |
proto |
network.application_protocol |
Extraído do campo http_url através do grok e convertido em maiúsculas. |
puppet_version |
additional.fields[].key |
O valor "puppet_version" é atribuído através do analisador |
puppet_version |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo puppet_version no registo não processado. |
queue_name |
additional.fields[].key |
O valor "queue_name" é atribuído através do analisador |
queue_name |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo queue_name no registo não processado. |
report_format |
additional.fields[].key |
O valor "report_format" é atribuído através do analisador |
report_format |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo report_format no registo não processado, convertido numa string. |
resource |
additional.fields[].key |
O valor "resource" é atribuído através da análise sintática |
resource |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo resource no registo não processado. |
result |
security_result.action_details |
Mapeado diretamente a partir do campo RESULT no registo não processado. |
security_id |
additional.fields[].key |
O valor "security_id" é atribuído através da análise sintática |
security_id |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo security_id no registo não processado. |
severity |
security_result.severity |
Mapeado a partir do campo severity no registo não processado. INFO está mapeado para INFORMATIONAL e WARN está mapeado para MEDIUM . |
srvID |
additional.fields[].key |
O valor "srvID" é atribuído através da análise |
srvID |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo srvID no registo não processado. |
status |
additional.fields[].key |
O valor "status" é atribuído através do analisador |
status |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo status no registo não processado. |
summary |
security_result.summary |
Mapeado diretamente a partir do campo summary no registo não processado. |
target_app |
target.application |
Mapeado diretamente a partir do campo TARGET no registo não processado. |
target_ip |
target.ip |
Mapeado diretamente a partir do campo target_ip ou IP no registo não processado. |
target_port |
target.port |
Mapeado diretamente a partir do campo target_port no registo não processado, convertido num número inteiro. |
timestamp |
metadata.event_timestamp |
Mapeado diretamente a partir do campo timestamp no registo não processado, analisado como uma data/hora ISO8601. |
timestamp |
event.timestamp |
Mapeado diretamente a partir do campo timestamp no registo não processado, analisado como uma data/hora ISO8601. |
trade_date |
additional.fields[].key |
O valor "trade_date" é atribuído através do analisador |
trade_date |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo trade_date no registo não processado. |
transaction_uuid |
additional.fields[].key |
O valor "transaction_uuid" é atribuído através do analisador |
transaction_uuid |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo transaction_uuid no registo não processado. |
type |
additional.fields[].key |
O valor "type" é atribuído através do analisador |
type |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo type no registo não processado. |
user |
target.user.userid |
Mapeado diretamente a partir do campo USER ou ugi no registo não processado. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.