Raccogli i log di Cloudflare Page Shield
Versione parser: 1.0
Questo documento spiega come importare i log di Cloudflare Page Shield in Google Security Operations utilizzando Amazon S3.
Page Shield aiuta a gestire le risorse caricate dai visitatori del tuo sito web, inclusi script, connessioni e cookie, e attiva notifiche di avviso quando le risorse cambiano o sono considerate dannose.
Prima di iniziare
- Un'istanza Google SecOps
- Account Cloudflare con Page Shield abilitato
- Accesso privilegiato alla dashboard Cloudflare
- Accesso privilegiato ad AWS (S3, IAM)
Questa opzione utilizza Cloudflare Logpush per esportare gli eventi di Page Shield in Amazon S3, che Google SecOps importa.
Abilita Page Shield
- Accedi alla dashboard di Cloudflare.
- Seleziona il tuo account e il tuo dominio.
- Vai a Sicurezza > Page Shield.
- Fai clic su Abilita Page Shield.
Crea un bucket Amazon S3
- Apri la console Amazon S3.
- Fai clic su Crea bucket.
- Fornisci i seguenti dettagli di configurazione:
- Nome bucket: inserisci un nome significativo per il bucket (ad esempio
cloudflare-pageshield-logs). - Regione: seleziona la regione AWS che preferisci (ad esempio
us-east-1).
- Nome bucket: inserisci un nome significativo per il bucket (ad esempio
- Fai clic su Crea.
- Salva il nome e la regione del bucket per riferimento futuro.
Crea un utente IAM con accesso a S3
- Apri la console IAM.
- Fai clic su Utenti > Aggiungi utente.
- Inserisci un nome utente (ad esempio
chronicle-s3-user). - Seleziona Accesso programmatico.
- Fai clic su Avanti: autorizzazioni.
- Scegli Collega direttamente i criteri esistenti.
- Cerca e seleziona il criterio AmazonS3FullAccess.
- Fai clic su Avanti: tag.
- Fai clic su Avanti: esamina.
- Fai clic su Crea utente.
- Fai clic su Scarica file .csv per salvare l'ID chiave di accesso e la chiave di accesso segreta.
Configura la policy del bucket S3 per Cloudflare
- Nella console Amazon S3, seleziona il bucket.
- Fai clic su Autorizzazioni > Policy del bucket.
- Fai clic su Modifica.
Incolla la seguente policy, sostituendo
<BUCKET_NAME>con il nome del bucket:{ "Id": "Policy1506627184792", "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1506627150918", "Action": ["s3:PutObject"], "Effect": "Allow", "Resource": "arn:aws:s3:::<BUCKET_NAME>/*", "Principal": { "AWS": ["arn:aws:iam::391854517948:user/cloudflare-logpush"] } } ] }Fai clic su Salva modifiche.
Crea un job Cloudflare Logpush
- Accedi alla dashboard di Cloudflare.
- Seleziona il tuo account e il tuo dominio.
- Vai ad Analisi e log > Log.
- Fai clic su Crea un job Logpush.
- In Seleziona una destinazione, scegli Amazon S3.
- Inserisci le seguenti informazioni sulla destinazione:
- Nome bucket: inserisci il nome del bucket S3 (ad esempio
cloudflare-pageshield-logs). - Regione bucket: seleziona la regione corrispondente al bucket S3.
- Percorso bucket (facoltativo): inserisci un prefisso del percorso (ad esempio
pageshield/).
- Nome bucket: inserisci il nome del bucket S3 (ad esempio
- Fai clic su Continua.
- Per dimostrare la proprietà, Cloudflare invierà un file alla destinazione designata. Per trovare il token, seleziona il pulsante Apri nella scheda Panoramica del file di verifica della proprietà, quindi incollalo nella dashboard di Cloudflare per verificare l'accesso al bucket. Inserisci il token di proprietà e seleziona Continua.
- In Seleziona un set di dati, scegli Eventi di Page Shield.
- Fai clic su Avanti.
- Configura il job Logpush:
- Nome job: inserisci un nome descrittivo (ad esempio
pageshield-to-s3). - Se i log corrispondono: lascia vuoto per includere tutti gli eventi o configura i filtri in base alle esigenze.
- Invia i seguenti campi: seleziona Tutti i campi o scegli campi specifici.
- Nome job: inserisci un nome descrittivo (ad esempio
- Fai clic su Invia.
Configura un feed in Google SecOps per importare i log di Page Shield
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Nella pagina successiva, fai clic su Configura un singolo feed.
- Nel campo Nome feed , inserisci un nome per il feed (ad esempio
Cloudflare Page Shield S3). - Seleziona Amazon S3 V2 come Tipo di origine.
- Seleziona Cloudflare Page Shield come Tipo di log.
- Fai clic su Avanti.
Specifica i valori per i seguenti parametri di input:
URI S3: inserisci l'URI del bucket nel formato:
s3://<BUCKET_NAME>/<BUCKET_PATH>/Opzione di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze:
- Mai: non elimina mai i file dopo i trasferimenti.
- Elimina i file trasferiti: elimina i file dopo il trasferimento riuscito.
- Elimina i file trasferiti e le directory vuote: elimina i file e le directory vuote dopo il trasferimento riuscito.
Età massima del file: include i file modificati nell'ultimo numero di giorni. Il valore predefinito è 180 giorni.
ID chiave di accesso: chiave di accesso utente con accesso al bucket S3.
Chiave di accesso segreta: chiave segreta utente con accesso al bucket S3.
Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
Fai clic su Avanti.
Esamina la nuova configurazione del feed nella schermata Finalizza, quindi fai clic su Invia.
Tabella di mapping UDM
| Campo log | Mapping UDM | Logica |
|---|---|---|
| URLContainsCDNCGIPath | event.idm.read_only_udm.additional.fields.CGI_label | Valore estratto da URLContainsCDNCGIPath, impostato come string_value nell'etichetta con chiave "CGI" |
| Action | event.idm.read_only_udm.additional.fields.action_label | Valore estratto da Action, impostato come string_value nell'etichetta con chiave "action" |
| resource.first_page_url | event.idm.read_only_udm.additional.fields.first_page_label | Valore estratto da resource.first_page_url, impostato come string_value nell'etichetta con chiave "first_page_url" |
| resource.last_page_url | event.idm.read_only_udm.additional.fields.last_page_label | Valore estratto da resource.last_page_url, impostato come string_value nell'etichetta con chiave "last_page_url" |
| name | event.idm.read_only_udm.additional.fields.name_label | Valore estratto da name, impostato come string_value nell'etichetta con chiave "name" |
| ts | event.idm.read_only_udm.metadata.event_timestamp | Convertito da ts (UNIX) a timestamp |
| event.idm.read_only_udm.metadata.event_type | Derivato in base a has_principal, has_target, has_target_user: NETWORK_CONNECTION se sia principal che target; USER_UNCATEGORIZED se target_user; STATUS_UPDATE se principal; altrimenti GENERIC_EVENT | |
| resource.url | event.idm.read_only_udm.network.http.referral_url | Valore estratto da resource.url |
| Host | event.idm.read_only_udm.principal.asset.hostname | Valore estratto da Host o host.hostname |
| Host | event.idm.read_only_udm.principal.hostname | Valore estratto da Host o host.hostname |
| alert_type | event.idm.read_only_udm.principal.resource.attribute.labels.alert_type_label | Valore estratto da alert_type, impostato come valore nell'etichetta con chiave "alert_type" |
| resource.cryptomining_score | event.idm.read_only_udm.principal.resource.attribute.labels.crypto_label | Valore estratto da resource.cryptomining_score, impostato come valore nell'etichetta con chiave "cryptominingscore%{index2}" |
| resource.dataflow_score | event.idm.read_only_udm.principal.resource.attribute.labels.dataflow_label | Valore estratto da resource.dataflow_score, impostato come valore nell'etichetta con chiave "dataflowscore%{index2}" |
| policie.description | event.idm.read_only_udm.principal.resource.attribute.labels.desc_label | Valore estratto da policie.description, impostato come valore nell'etichetta con chiave "description_%{index}" |
| version.fetched_at | event.idm.read_only_udm.principal.resource.attribute.labels.fetched_at_label | Valore estratto da version.fetched_at, impostato come valore nell'etichetta con chiave "fetchedat%{index2}" |
| version.hash | event.idm.read_only_udm.principal.resource.attribute.labels.hash_label | Valore estratto da version.hash, impostato come valore nell'etichetta con chiave "hash_%{index2}" |
| policie.id | event.idm.read_only_udm.principal.resource.attribute.labels.id_label | Valore estratto da policie.id, impostato come valore nell'etichetta con chiave "policyid%{index}" |
| data.options.remove_dashboard_links | event.idm.read_only_udm.principal.resource.attribute.labels.remove_dash_label | Valore estratto da data.options.remove_dashboard_links, impostato come valore nell'etichetta con chiave "remove_dashboard_links" |
| resource.resource_type | event.idm.read_only_udm.principal.resource.attribute.labels.res_type_label | Valore estratto da resource.resource_type, impostato come valore nell'etichetta con chiave "resourcetype%{index2}" |
| data.type | event.idm.read_only_udm.principal.resource.attribute.labels.type_label | Valore estratto da data.type, impostato come valore nell'etichetta con chiave "type" |
| data.zones | event.idm.read_only_udm.principal.resource.attribute.labels.zones_label | Valore estratto da data.zones, impostato come valore nell'etichetta con chiave "zones" |
| resource.id | event.idm.read_only_udm.principal.resource.id | Valore estratto da resource.id |
| PageURL | event.idm.read_only_udm.principal.url | Valore estratto da PageURL |
| account_id | event.idm.read_only_udm.principal.user.product_object_id | Valore estratto da account_id |
| policy_id | event.idm.read_only_udm.security_result.detection_fields.policy_id_label | Valore estratto da policy_id, impostato come valore nell'etichetta con chiave "policy_id" |
| policy_name | event.idm.read_only_udm.security_result.detection_fields.policy_name_label | Valore estratto da policy_name, impostato come valore nell'etichetta con chiave "policy_name" |
| text | event.idm.read_only_udm.security_result.description | Valore estratto da text |
| resource.first_seen_at | event.idm.read_only_udm.security_result.first_discovered_time | Convertito da resource.first_seen_at a timestamp ISO8601 |
| PolicyID | event.idm.read_only_udm.security_result.rule_name | Valore estratto da PolicyID |
| data.severity | event.idm.read_only_udm.security_result.severity | Derivato da data.severity: se "INFO" → "INFORMATIONAL"; se "WARN" → "MEDIUM"; altrimenti "UNKNOWN_SEVERITY" |
| URL | event.idm.read_only_udm.target.url | Valore estratto da URL |
| URLHost | event.idm.read_only_udm.target.user.email_addresses | Valore estratto da URLHost se corrisponde al pattern dell'email |
Log delle modifiche
Visualizza il log delle modifiche per questo parser
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.