Raccogli i log di Cloudflare Page Shield
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 con privilegi alla dashboard di Cloudflare
- Accesso privilegiato ad AWS (S3, IAM)
Questa opzione utilizza Cloudflare Logpush per esportare gli eventi Page Shield in Amazon S3, che poi vengono importati da Google SecOps.
Attiva Page Shield
- Accedi alla dashboard di Cloudflare.
- Seleziona il tuo account e il tuo dominio.
- Vai a Sicurezza > Page Shield.
- Fai clic su Attiva 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 le policy esistenti.
- Cerca e seleziona il criterio AmazonS3FullAccess.
- Fai clic su Avanti: tag.
- Fai clic su Successivo: 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 tuo 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 job Cloudflare Logpush
- Accedi alla dashboard di Cloudflare.
- Seleziona il tuo account e il tuo dominio.
- Vai ad Analytics 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 tuo bucket S3.
- (Facoltativo) Percorso del bucket: 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à, poi 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 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 file trasferiti: elimina i file dopo il trasferimento riuscito.
- Elimina file trasferiti e directory vuote: elimina i file e le directory vuote dopo il trasferimento riuscito.
Età massima del file: includi 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 dell'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.
Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Funzione logica |
|---|---|---|
| URLContainsCDNCGIPath | event.idm.read_only_udm.additional.fields.CGI_label | Valore estratto da URLContainsCDNCGIPath, impostato come string_value nell'etichetta con la chiave "CGI" |
| Azione | event.idm.read_only_udm.additional.fields.action_label | Valore estratto da Azione, impostato come string_value nell'etichetta con la 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 la 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 la chiave "last_page_url" |
| nome | event.idm.read_only_udm.additional.fields.name_label | Valore estratto dal nome, 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 il principale che il target; USER_UNCATEGORIZED se target_user; STATUS_UPDATE se principale; 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 tratto da Host o host.hostname |
| Host | event.idm.read_only_udm.principal.hostname | Valore tratto 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 la 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 la 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 la chiave "dataflowscore%{index2}" |
| policie.description | event.idm.read_only_udm.principal.resource.attribute.labels.desc_label | Valore tratto 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 la 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 la chiave "hash_%{index2}" |
| policie.id | event.idm.read_only_udm.principal.resource.attribute.labels.id_label | Valore tratto 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 la 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 la 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 la 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 tratto 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 la chiave "policy_id" |
| policy_name | event.idm.read_only_udm.security_result.detection_fields.policy_name_label | Valore tratto da policy_name, impostato come valore nell'etichetta con la chiave "policy_name" |
| testo | event.idm.read_only_udm.security_result.description | Valore estratto dal testo |
| 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 tratto 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 dall'URL |
| URLHost | event.idm.read_only_udm.target.user.email_addresses | Valore estratto da URLHost se corrisponde al pattern email |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.