Raccogli i log di accesso al server AWS S3
Questo documento spiega come raccogliere i log di accesso al server AWS S3 configurando un feed di Google Security Operations. Il parser estrae i campi utilizzando i pattern grok, gestisce i potenziali input JSON e mappa i campi estratti all'UDM. Esegue trasformazioni dei dati, conversioni di tipo e logica condizionale in base alla presenza e ai valori di campi specifici per garantire una rappresentazione accurata dell'UDM.
Prima di iniziare
- Assicurati di avere un'istanza Google SecOps.
- Assicurati di disporre dell'accesso con privilegi ad AWS.
Configurare il logging degli accessi al server AWS S3
Google SecOps supporta la raccolta dei log utilizzando Amazon S3 tramite Amazon SQS.
- Accedi alla console AWS Management.
- Accedi alla console Amazon S3.
- Vai ad Amazon S3 > Bucket.
- Seleziona un bucket esistente o creane uno nuovo.
- Fai clic su Proprietà.
- Nella sezione Log degli accessi al server, fai clic su Modifica.
- Seleziona Attiva.
- Nel campo Bucket di destinazione, inserisci un nome per il nuovo bucket a cui inviare gli oggetti record di log o seleziona un bucket esistente come target.
- Fai clic su Salva modifiche.
- Per creare la coda SQS per il bucket S3, configura un'istanza Amazon SQS con lo spazio di archiviazione S3. Per saperne di più, consulta Configurare un bucket per le notifiche (argomento SNS o coda SQS).
In base al servizio e alla regione, identifica gli endpoint per la connettività facendo riferimento alla seguente documentazione AWS: * Per informazioni su qualsiasi origine di log, consulta Endpoint e quote di AWS Identity and Access Management. * Per informazioni sulle origini di log S3, consulta Endpoint e quote di Amazon Simple Storage Service. * Per informazioni sulle origini di log di SQS, consulta Endpoint e quote di Amazon Simple Queue Service.
Configura un feed in Google SecOps per importare i log di accesso al server AWS S3
- Nel menu Google SecOps, vai a Impostazioni > Feed > Aggiungi nuovo.
- Nell'elenco Tipo di origine, seleziona Amazon S3 o Amazon SQS.
- Nell'elenco Tipo di log, seleziona Accesso al server AWS S3.
- Fai clic su Avanti.
- Google SecOps supporta la raccolta dei log utilizzando un ID chiave di accesso e un metodo segreto. Per creare l'ID chiave di accesso e il segreto, consulta Configurare l'autenticazione dello strumento con AWS.
- In base alla configurazione dell'accesso al server AWS S3 che hai creato, specifica i valori per i parametri di input:
- Se utilizzi Amazon S3, specifica i valori per i seguenti campi:
- Regione
- URI S3
- L'URI è un
- Opzione di eliminazione dell'origine
- ID chiave di accesso
- Chiave di accesso segreta
- Se utilizzi Amazon SQS, specifica i valori per i seguenti campi:
- Regione
- Nome coda
- Numero account
- ID chiave di accesso alla coda
- Mettere in coda la chiave di accesso segreta
- Opzione di eliminazione dell'origine
- Se utilizzi Amazon S3, specifica i valori per i seguenti campi:
- Fai clic su Avanti, quindi su Invia.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logica |
---|---|---|
aclRequired |
target.resource.attribute.labels.key : "aclRequired"target.resource.attribute.labels.value : valore di aclRequired |
Mappato direttamente dal campo del log non elaborato aclRequired . |
authenticationtype |
extensions.auth.auth_details |
Mappato direttamente dal campo del log non elaborato authenticationtype . |
bucket |
target.resource.name |
Mappato direttamente dal campo del log non elaborato bucket . |
bucket |
target.resource.resource_type : "STORAGE_BUCKET" |
Il parser imposta resource_type su "STORAGE_BUCKET" se è presente il campo bucket . |
bucketowner |
target.resource.product_object_id |
Mappato direttamente dal campo del log non elaborato bucketowner . |
bytes_sent |
network.sent_bytes |
Mappato direttamente dal campo del log non elaborato bytes_sent dopo averlo convertito in un numero intero non firmato e sostituito "-" con "0". |
ciphersuite |
network.application_protocol : "HTTPS" |
Il parser imposta application_protocol su "HTTPS" se è presente il campo ciphersuite . |
ciphersuite |
network.tls.cipher |
Mappato direttamente dal campo del log non elaborato ciphersuite . |
errorcode |
security_result.action_details |
Mappato direttamente dal campo del log non elaborato errorcode . |
errorcode |
security_result.action : "BLOCK" |
Il parser imposta action su "BLOCK" se il campo errorcode contiene "AccessDenied" (senza distinzione tra maiuscole e minuscole). |
hostheader |
target.hostname |
Estratto dal campo del log non elaborato hostheader , con la potenziale rimozione del numero di porta. |
hostheader |
target.port |
Estratto dal campo del log non elaborato hostheader se è presente un numero di porta. |
hostid |
target.resource.attribute.labels.key : "ID richiesta estesa S3"target.resource.attribute.labels.value : valore di hostid |
Mappato direttamente dal campo del log non elaborato hostid . |
http_capture |
network.http.method |
Il metodo HTTP viene estratto dal campo http_capture . |
http_capture |
network.http.version |
La versione HTTP viene estratta dal campo http_capture . |
http_capture |
target.url |
L'URL di destinazione viene creato utilizzando hostheader e http_request_uri (estratti da http_capture ), con il prefisso "http://" o "https://" in base alla presenza di ciphersuite . |
httpstatus |
network.http.response_code |
Mappato direttamente dal campo del log non elaborato httpstatus dopo averlo convertito in un numero intero. |
object_version_id |
target.resource.product_object_id |
Mappato direttamente dal campo del log non elaborato object_version_id . |
objectsize |
target.file.size |
Mappato direttamente dal campo del log non elaborato objectsize dopo averlo convertito in un numero intero non firmato e sostituito "-" con "0". |
operation |
metadata.product_event_type |
Mappato direttamente dal campo del log non elaborato operation . |
referrer |
network.http.referral_url |
Mappato direttamente dal campo del log non elaborato referrer dopo la rimozione delle virgolette. |
remoteip |
metadata.event_type : "USER_RESOURCE_ACCESS" |
Il parser imposta event_type su "USER_RESOURCE_ACCESS" se il campo remoteip è vuoto. |
remoteip |
principal.ip |
Mappato direttamente dal campo del log non elaborato remoteip . |
requester |
target.resource.attribute.labels.key : "ARN punto di accesso"target.resource.attribute.labels.value : valore di requester |
Mappato direttamente dal campo del log non elaborato requester . |
requester_user |
principal.user.userid |
Mappato direttamente dal campo del log non elaborato requester_user . |
requestid |
network.session_id |
Mappato direttamente dal campo del log non elaborato requestid . |
request_time_ms |
network.session_duration.nanos |
Mappato direttamente dal campo del log non elaborato request_time_ms dopo averlo convertito in un numero intero, sostituendo "-" con "0" e aggiungendo zeri per rappresentare i nanosecondi. |
signatureversion |
target.resource.attribute.labels.key : "Versione firma"target.resource.attribute.labels.value : valore di signatureversion |
Mappato direttamente dal campo del log non elaborato signatureversion . |
time |
metadata.event_timestamp |
Analizzata dal campo del log non elaborato time e convertita in un timestamp. |
tlsVersion |
network.tls.version |
Mappato direttamente dal campo del log non elaborato tlsVersion . |
useragent |
network.http.user_agent |
Mappato direttamente dal campo del log non elaborato useragent dopo la rimozione delle virgolette. |
(Parser Logic) | metadata.event_type : "NETWORK_HTTP" |
Il parser imposta event_type predefinito su "NETWORK_HTTP". |
(Parser Logic) | metadata.log_type : "AWS_S3_SERVER_ACCESS" |
Il parser imposta log_type su "AWS_S3_SERVER_ACCESS". |
(Parser Logic) | metadata.product_name : "Accesso al server AWS S3" |
Il parser imposta product_name su "Accesso al server AWS S3". |
(Parser Logic) | metadata.product_version : "HTTP/http_version " |
L'analizzatore imposta product_version utilizzando http_version estratto. |
(Parser Logic) | metadata.vendor_name : "AMAZON" |
Il parser imposta vendor_name su "AMAZON". |
(Parser Logic) | network.application_protocol : "HTTP" |
Il parser imposta application_protocol su "HTTP" se il campo application_protocol non è presente.ciphersuite |
(Parser Logic) | timestamp |
Il parser imposta l'evento timestamp sull'ora corrente quando l'evento viene elaborato. |
Modifiche
2023-07-19
- Correzione di bug:
- Pattern Grok modificato per gestire un trattino (-) quando i dati non sono presenti.
- "aclRequired" è stato mappato a "target.resource.attribute.labels".
2023-05-04
- Miglioramento:
- È stato aggiunto il supporto per i log in formato JSON.
2022-07-21
- Analizzatore sintattico appena creato.
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.