Coletar registros de acesso ao servidor do AWS S3
Versão do analisador: 4.0
Neste documento, explicamos como coletar registros de acesso ao servidor do AWS S3 configurando um feed do Google Security Operations. O analisador extrai campos usando padrões grok, processa possíveis entradas JSON e mapeia os campos extraídos para o UDM. Ele realiza transformações de dados, conversões de tipo e lógica condicional com base na presença e nos valores de campos específicos para garantir uma representação precisa do UDM.
Antes de começar
Verifique se você atende aos seguintes pré-requisitos:
- Instância do Google SecOps
- Acesso privilegiado à AWS
Como configurar a geração de registros de acesso ao servidor do AWS S3
O Google SecOps é compatível com a coleta de registros usando o Amazon S3 pelo Amazon SQS.
- Faça login no console de gerenciamento da AWS.
- Acesse o console do Amazon S3.
- Acesse Amazon S3 > Buckets.
- Selecione um bucket atual ou crie um novo.
- Clique em Properties.
- Na seção Registro de acesso ao servidor, clique em Editar.
- Selecione Ativar.
- No campo Bucket de destino, insira um nome para o novo bucket que vai receber os objetos de registro ou selecione um bucket atual como destino.
- Clique em Salvar alterações.
- Para criar a fila do SQS para o bucket do S3, configure uma instância do Amazon SQS com o armazenamento do S3. Para mais informações, consulte Como configurar um bucket para notificações (tópico do SNS ou fila do SQS).
Com base no serviço e na região, identifique os endpoints para conectividade consultando a seguinte documentação da AWS:
- Para informações sobre qualquer origem de geração de registros, consulte Endpoints e cotas do AWS Identity and Access Management.
- Para informações sobre as fontes de registro do S3, consulte Endpoints e cotas do Amazon Simple Storage Service.
- Para informações sobre as fontes de registro do SQS, consulte Endpoints e cotas do Amazon Simple Queue Service.
Configurar feeds
Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:
- Configurações > Gerenciamento de dados > Feeds > Adicionar novo feed (na plataforma somente SIEM, Configurações > Feeds > Adicionar novo feed)
- Hub de conteúdo > Pacotes de conteúdo > Comece já
Como configurar o feed de acesso ao serviço do AWS S3
- Clique no pacote Amazon Cloud Platform.
- Localize o tipo de registro Acesso ao serviço AWS S3.
- O Google SecOps é compatível com a coleta de registros usando um ID de chave de acesso e um método secreto. Para criar o ID e o secret da chave de acesso, consulte Configurar a autenticação de ferramentas com a AWS.
Especifique os valores nos campos a seguir.
- Tipo de origem: Amazon SQS V2
- Nome da fila: o nome da fila do SQS de onde os dados serão lidos.
- URI do S3: o URI do bucket.
s3://your-log-bucket-name/- Substitua
your-log-bucket-namepelo nome real do bucket do S3.
- Substitua
Opções de exclusão da origem: selecione a opção de exclusão de acordo com suas preferências de ingestão.
Idade máxima do arquivo: inclua arquivos modificados nos últimos dias. O padrão é 180 dias.
ID da chave de acesso da fila do SQS: uma chave de acesso da conta que é uma string alfanumérica de 20 caracteres.
Chave de acesso secreta da fila do SQS: uma chave de acesso de conta que é uma string alfanumérica de 40 caracteres.
Opções avançadas
- Nome do feed: um valor predefinido que identifica o feed.
- Namespace do recurso: namespace associado ao feed.
- Rótulos de ingestão: rótulos aplicados a todos os eventos desse feed.
Clique em Criar feed.
Para mais informações sobre como configurar vários feeds para diferentes tipos de registro nessa família de produtos, consulte Configurar feeds por produto.
Tabela de mapeamento de UDM
| Campo de registro | Mapeamento de UDM | Lógica |
|---|---|---|
aclRequired |
target.resource.attribute.labels.key: "aclRequired"target.resource.attribute.labels.value: valor de aclRequired |
Mapeado diretamente do campo de registro bruto aclRequired. |
authenticationtype |
extensions.auth.auth_details |
Mapeado diretamente do campo de registro bruto authenticationtype. |
bucket |
target.resource.name |
Mapeado diretamente do campo de registro bruto bucket. |
bucket |
target.resource.resource_type: "STORAGE_BUCKET" |
O analisador define resource_type como "STORAGE_BUCKET" se o campo bucket estiver presente. |
bucketowner |
target.resource.product_object_id |
Mapeado diretamente do campo de registro bruto bucketowner. |
bytes_sent |
network.sent_bytes |
Mapeado diretamente do campo de registro bruto bytes_sent após a conversão em um número inteiro sem sinal e a substituição de "-" por "0". |
ciphersuite |
network.application_protocol: "HTTPS" |
O analisador define application_protocol como "HTTPS" se o campo ciphersuite estiver presente. |
ciphersuite |
network.tls.cipher |
Mapeado diretamente do campo de registro bruto ciphersuite. |
errorcode |
security_result.action_details |
Mapeado diretamente do campo de registro bruto errorcode. |
errorcode |
security_result.action: "BLOCK" |
O analisador define action como "BLOCK" se o campo errorcode tiver "AccessDenied" (não diferencia maiúsculas de minúsculas). |
hostheader |
target.hostname |
Extraído do campo de registro bruto hostheader, possivelmente removendo o número da porta. |
hostheader |
target.port |
Extraído do campo de registro bruto hostheader se houver um número de porta. |
hostid |
target.resource.attribute.labels.key: "ID de solicitação estendida do S3"target.resource.attribute.labels.value: valor de hostid |
Mapeado diretamente do campo de registro bruto hostid. |
http_capture |
network.http.method |
O método HTTP é extraído do campo http_capture. |
http_capture |
network.http.version |
A versão HTTP é extraída do campo http_capture. |
http_capture |
target.url |
O URL de destino é construído usando hostheader e http_request_uri (extraídos de http_capture), com o prefixo "http://" ou "https://" com base na presença de ciphersuite. |
httpstatus |
network.http.response_code |
Mapeado diretamente do campo de registro bruto httpstatus após a conversão em um número inteiro. |
object_version_id |
target.resource.product_object_id |
Mapeado diretamente do campo de registro bruto object_version_id. |
objectsize |
target.file.size |
Mapeado diretamente do campo de registro bruto objectsize após a conversão em um número inteiro sem sinal e a substituição de "-" por "0". |
operation |
metadata.product_event_type |
Mapeado diretamente do campo de registro bruto operation. |
referrer |
network.http.referral_url |
Mapeado diretamente do campo de registro bruto referrer após a remoção das aspas. |
remoteip |
metadata.event_type: "USER_RESOURCE_ACCESS" |
O analisador define event_type como "USER_RESOURCE_ACCESS" se o campo remoteip estiver vazio. |
remoteip |
principal.ip |
Mapeado diretamente do campo de registro bruto remoteip. |
requester |
target.resource.attribute.labels.key: "ARN do ponto de acesso"target.resource.attribute.labels.value: valor de requester |
Mapeado diretamente do campo de registro bruto requester. |
requester_user |
principal.user.userid |
Mapeado diretamente do campo de registro bruto requester_user. |
requestid |
network.session_id |
Mapeado diretamente do campo de registro bruto requestid. |
request_time_ms |
network.session_duration.nanos |
Mapeado diretamente do campo de registro bruto request_time_ms após a conversão em um número inteiro, substituindo "-" por "0" e preenchendo com zeros para representar nanossegundos. |
signatureversion |
target.resource.attribute.labels.key: "Versão da assinatura"target.resource.attribute.labels.value: valor de signatureversion |
Mapeado diretamente do campo de registro bruto signatureversion. |
time |
metadata.event_timestamp |
Analisado do campo de registro bruto time e convertido em um carimbo de data/hora. |
tlsVersion |
network.tls.version |
Mapeado diretamente do campo de registro bruto tlsVersion. |
useragent |
network.http.user_agent |
Mapeado diretamente do campo de registro bruto useragent após a remoção das aspas. |
| (lógica do analisador) | metadata.event_type: "NETWORK_HTTP" |
O analisador define o event_type padrão como "NETWORK_HTTP". |
| (lógica do analisador) | metadata.log_type: "AWS_S3_SERVER_ACCESS" |
O analisador define log_type como "AWS_S3_SERVER_ACCESS". |
| (lógica do analisador) | metadata.product_name: "AWS S3 Server Access" |
O analisador define product_name como "AWS S3 Server Access". |
| (lógica do analisador) | metadata.product_version: "HTTP/http_version" |
O analisador define o product_version usando o http_version extraído. |
| (lógica do analisador) | metadata.vendor_name: "AMAZON" |
O analisador define vendor_name como "AMAZON". |
| (lógica do analisador) | network.application_protocol: "HTTP" |
O analisador define application_protocol como "HTTP" se o campo ciphersuite não estiver presente. |
| (lógica do analisador) | timestamp |
O analisador define o evento timestamp como o horário atual quando o evento é processado. |
Registro de alterações
Confira o registro de alterações deste analisador
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.