Recolha registos de acesso ao servidor do AWS S3
Este documento explica como recolher registos de acesso ao servidor do AWS S3 configurando um feed do Google Security Operations. O analisador extrai campos através de padrões grok, processa potenciais entradas JSON e mapeia os campos extraídos para o UDM. Executa transformações de dados, conversões de tipos 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
Certifique-se de que cumpre os seguintes pré-requisitos:
- Instância do Google SecOps
- Acesso privilegiado ao AWS
Como configurar o registo de acesso ao servidor AWS S3
O Google SecOps suporta a recolha de registos através do Amazon SQS com o Amazon S3.
- Inicie sessão na consola de gestão da AWS.
- Aceda à consola do Amazon S3.
- Aceda a Amazon S3 > Buckets.
- Selecione um contentor existente ou crie um novo.
- Clique em Propriedades.
- Na secção Registo de acesso ao servidor, clique em Editar.
- Selecione Ativar.
- No campo Bucket de destino, introduza um nome para o novo bucket para o qual enviar os objetos de registo ou selecione um bucket existente como destino.
- Clique em Guardar alterações.
- Para criar a fila SQS para o contentor S3, configure uma instância do Amazon SQS com o armazenamento S3. Para mais informações, consulte o artigo Configurar um contentor para notificações (tópico do SNS ou fila do SQS).
Com base no serviço e na região, identifique os pontos finais para a conetividade consultando a seguinte documentação da AWS:
- Para obter informações sobre qualquer origem de registo, consulte o artigo Pontos finais e quotas da gestão de identidade e acesso da AWS.
- Para obter informações sobre as origens de registo do S3, consulte o artigo Pontos finais e quotas do Amazon Simple Storage Service.
- Para obter informações sobre origens de registo do SQS, consulte o artigo Pontos finais e quotas do Amazon Simple Queue Service.
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 de acesso ao serviço AWS S3
- Clique no pacote Amazon Cloud Platform.
- Localize o tipo de registo Acesso ao serviço AWS S3.
- O Google SecOps suporta a recolha de registos através de um ID da chave de acesso e de um método secreto. Para criar o ID da chave de acesso e o segredo, consulte o artigo Configure a autenticação de ferramentas com a AWS.
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 |
---|---|---|
aclRequired |
target.resource.attribute.labels.key : "aclRequired"target.resource.attribute.labels.value : Valor de aclRequired |
Mapeado diretamente a partir do campo de registo não processado aclRequired . |
authenticationtype |
extensions.auth.auth_details |
Mapeado diretamente a partir do campo de registo não processado authenticationtype . |
bucket |
target.resource.name |
Mapeado diretamente a partir do campo de registo não processado bucket . |
bucket |
target.resource.resource_type : "STORAGE_BUCKET" |
O analisador define o resource_type como "STORAGE_BUCKET" se o campo bucket estiver presente. |
bucketowner |
target.resource.product_object_id |
Mapeado diretamente a partir do campo de registo não processado bucketowner . |
bytes_sent |
network.sent_bytes |
Mapeado diretamente a partir do campo de registo não processado bytes_sent após a conversão para um número inteiro não assinado e a substituição de "-" por "0". |
ciphersuite |
network.application_protocol : "HTTPS" |
O analisador define o application_protocol como "HTTPS" se o campo ciphersuite estiver presente. |
ciphersuite |
network.tls.cipher |
Mapeado diretamente a partir do campo de registo não processado ciphersuite . |
errorcode |
security_result.action_details |
Mapeado diretamente a partir do campo de registo não processado errorcode . |
errorcode |
security_result.action : "BLOCK" |
O analisador define o elemento action como "BLOCK" se o campo errorcode contiver "AccessDenied" (não é sensível a maiúsculas e minúsculas). |
hostheader |
target.hostname |
Extraído do campo de registo não processado hostheader , removendo potencialmente o número da porta. |
hostheader |
target.port |
Extraído do campo de registo não processado hostheader se estiver presente um número de porta. |
hostid |
target.resource.attribute.labels.key : "ID do pedido alargado do S3"target.resource.attribute.labels.value : valor de hostid |
Mapeado diretamente a partir do campo de registo não processado 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 com 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 a partir do campo de registo não processado httpstatus após a conversão para um número inteiro. |
object_version_id |
target.resource.product_object_id |
Mapeado diretamente a partir do campo de registo não processado object_version_id . |
objectsize |
target.file.size |
Mapeado diretamente a partir do campo de registo não processado objectsize após a conversão para um número inteiro não assinado e a substituição de "-" por "0". |
operation |
metadata.product_event_type |
Mapeado diretamente a partir do campo de registo não processado operation . |
referrer |
network.http.referral_url |
Mapeado diretamente a partir do campo de registo não processado referrer após a remoção das aspas. |
remoteip |
metadata.event_type : "USER_RESOURCE_ACCESS" |
O analisador define o event_type como "USER_RESOURCE_ACCESS" se o campo remoteip estiver vazio. |
remoteip |
principal.ip |
Mapeado diretamente a partir do campo de registo não processado remoteip . |
requester |
target.resource.attribute.labels.key : "Access Point ARN"target.resource.attribute.labels.value : valor de requester |
Mapeado diretamente a partir do campo de registo não processado requester . |
requester_user |
principal.user.userid |
Mapeado diretamente a partir do campo de registo não processado requester_user . |
requestid |
network.session_id |
Mapeado diretamente a partir do campo de registo não processado requestid . |
request_time_ms |
network.session_duration.nanos |
Mapeado diretamente a partir do campo de registo não processado request_time_ms após a conversão para um número inteiro, a substituição de "-" por "0" e o preenchimento com zeros para representar nanosegundos. |
signatureversion |
target.resource.attribute.labels.key : "Signature Version"target.resource.attribute.labels.value : valor de signatureversion |
Mapeado diretamente a partir do campo de registo não processado signatureversion . |
time |
metadata.event_timestamp |
Analisado a partir do campo de registo não processado time e convertido numa data/hora. |
tlsVersion |
network.tls.version |
Mapeado diretamente a partir do campo de registo não processado tlsVersion . |
useragent |
network.http.user_agent |
Mapeado diretamente a partir do campo de registo não processado useragent após a remoção das aspas. |
(Lógica do analisador) | metadata.event_type : "NETWORK_HTTP" |
O analisador define o event_type predefinido como "NETWORK_HTTP". |
(Lógica do analisador) | metadata.log_type : "AWS_S3_SERVER_ACCESS" |
O analisador define o log_type como "AWS_S3_SERVER_ACCESS". |
(Lógica do analisador) | metadata.product_name : "AWS S3 Server Access" |
O analisador define o product_name como "Acesso ao servidor AWS S3". |
(Lógica do analisador) | metadata.product_version : "HTTP/http_version " |
O analisador define o product_version através do http_version extraído. |
(Lógica do analisador) | metadata.vendor_name : "AMAZON" |
O analisador define o vendor_name como "AMAZON". |
(Lógica do analisador) | network.application_protocol : "HTTP" |
O analisador define o application_protocol como "HTTP" se o campo ciphersuite não estiver presente. |
(Lógica do analisador) | timestamp |
O analisador define o timestamp do evento para a hora atual quando o evento é processado. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.