Coletar registros de acesso ao servidor do AWS S3
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 a 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 o registro 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 ou crie um.
- 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 em que os objetos de registro de eventos serão enviados ou selecione um bucket existente 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 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 de conectividade consultando a seguinte documentação da AWS:
- Para informações sobre qualquer fonte de geração de registros, consulte Endpoints e cotas do AWS Identity and Access Management.
- Para informações sobre fontes de geração de registros do S3, consulte Endpoints e cotas do Amazon Simple Storage Service.
- Para informações sobre fontes de geração de registros 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 do SIEM > Feeds
- Central de conteúdo > Pacotes de conteúdo
Configure feeds em Configurações do SIEM > Feeds
Para configurar vários feeds para diferentes tipos de registros nessa família de produtos, consulte Configurar feeds por produto.
Para configurar um único feed, siga estas etapas:
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Na próxima página, clique em Configurar um único feed.
- Na lista Tipo de origem, selecione Amazon S3 ou Amazon SQS.
- Na lista Tipo de registro, selecione Acesso ao servidor AWS S3.
- Clique em Próxima.
- O Google SecOps oferece suporte à coleta de registros usando um ID de chave de acesso e um método secreto. Para criar o ID da chave de acesso e o secret, consulte Configurar a autenticação da ferramenta com a AWS.
- Com base na configuração de acesso ao servidor do AWS S3 que você criou, especifique valores para os parâmetros de entrada:
- Se você estiver usando o Amazon S3, especifique valores para os seguintes campos:
- Região
- URI do S3
- URI é um
- Opção de exclusão da origem
- ID da chave de acesso
- Chave de acesso secreta
- Se você estiver usando o Amazon SQS, especifique valores para os seguintes campos:
- Região
- Nome da fila
- Número da conta
- ID da chave de acesso à fila
- Chave de acesso secreta da fila
- Opção de exclusão da origem
- Se você estiver usando o Amazon S3, especifique valores para os seguintes campos:
- Clique em Próximo e, em seguida, Enviar.
Configurar feeds na Central de conteúdo
É possível configurar o feed de ingestão no Google SecOps usando o Amazon SQS (preferencial) ou o Amazon S3.
Especifique valores para os seguintes campos:
- Região: região em que o bucket do S3 ou a fila do SQS está hospedada.
- Nome da fila: nome da fila do SQS de onde os dados de registro são lidos.
- Número da conta: número da conta proprietária da fila do SQS.
- ID da chave de acesso à fila: ID da chave de acesso à conta de 20 caracteres. Por exemplo,
AKIAOSFOODNN7EXAMPLE
. - Chave de acesso secreta da fila: chave de acesso secreta de 40 caracteres. Por exemplo,
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
. - Opção de exclusão da origem: opção para excluir arquivos e diretórios após a transferência dos dados.
Opções avançadas
- Nome do feed: um valor pré-preenchido que identifica o feed.
- Tipo de origem: método usado para coletar registros no Google SecOps.
- Namespace do recurso: namespace associado ao feed.
- Rótulos de ingestão: rótulos aplicados a todos os eventos deste feed.
Tabela de mapeamento do UDM
Campo de registro | Mapeamento do 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 depois de convertê-lo em um número inteiro sem sinal e substituir "-" 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 contiver "AccessDenied" (sem diferenciar maiúsculas e minúsculas). |
hostheader |
target.hostname |
Extraído do campo de registro bruto hostheader , removendo potencialmente o número da porta. |
hostheader |
target.port |
Extraído do campo de registro bruto hostheader se um número de porta estiver presente. |
hostid |
target.resource.attribute.labels.key : "ID da 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 é criado 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 depois de convertido 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 depois de convertê-lo em um número inteiro sem sinal e substituir "-" 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 o 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 para um número inteiro, substituindo "-" por "0" e adicionando zeros para representar nanossegundos. |
signatureversion |
target.resource.attribute.labels.key : "Signature Version"target.resource.attribute.labels.value : Value of 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 : "Acesso ao servidor do AWS S3" |
O analisador define o product_name como "Acesso ao servidor do AWS S3". |
(Lógica do analisador) | metadata.product_version : "HTTP/http_version " |
O analisador sintático 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 a hora atual quando o evento é processado. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.