I log per richiesta di Google Cloud Armor per il nome del criterio di sicurezza, la priorità della regola di corrispondenza, l'azione associata e le informazioni correlate vengono registrati nell'ambito del logging per il bilanciamento del carico HTTP(S), del bilanciamento del carico del proxy TCP esterno e del bilanciamento del carico del proxy SSL esterno. Il logging dei nuovi servizi di backend è disabilitato per impostazione predefinita, quindi devi abilitare il logging per registrare le informazioni di logging complete per Google Cloud Armor.
Poiché i log di Google Cloud Armor fanno parte dei log di Cloud Load Balancing, la generazione dei log di Google Cloud Armor è soggetta alla frequenza di campionamento dei log configurata per il bilanciatore del carico. Se riduci la frequenza di campionamento per il bilanciamento del carico HTTP(S), quello esterno del proxy TCP o il bilanciamento del carico del proxy SSL esterno, i log delle richieste Google Cloud Armor vengono campionati a questa frequenza ridotta.
Utilizzando il logging, puoi visualizzare ogni richiesta valutata da un criterio di sicurezza di Google Cloud Armor e il risultato o l'azione intrapresa. Ad esempio, per visualizzare le richieste rifiutate, puoi utilizzare filtri come jsonPayload.enforcedSecurityPolicy.outcome="DENY"
o jsonPayload.statusDetails="denied_by_security_policy"
.
Per abilitare il logging per il bilanciamento del carico HTTP(S), consulta Logging e monitoraggio del bilanciamento del carico HTTP(S). Per il bilanciamento del carico del proxy TCP esterno e il bilanciamento del carico del proxy SSL esterno, puoi utilizzare i comandi dell'interfaccia a riga di comando di Google Cloud come elencato nella pagina Logging e monitoraggio del bilanciamento del carico HTTP(S) precedente. Non puoi abilitare il logging per il bilanciamento del carico del proxy TCP esterno e il bilanciamento del carico del proxy SSL esterno utilizzando la console Google Cloud.
Puoi anche impostare diversi livelli di logging per valutare se i criteri di sicurezza e le relative regole funzionano come previsto. Per informazioni complete, consulta la sezione Logging dettagliato.
Voci di log dei criteri di sicurezza
Le seguenti voci di log in Esplora log sono relative al criterio di sicurezza e al logging delle regole di Google Cloud Armor. Le voci includono la seguente struttura in jsonPayload
. I dettagli della richiesta HTTP vengono visualizzati nel messaggio httpRequest
.
statusDetails
(stringa): una descrizione testuale del codice di risposta.redirected_by_security_policy
: la richiesta è stata reindirizzata da una regola di reindirizzamento,GOOGLE_RECAPTCHA
oEXTERNAL_302
.denied_by_security_policy
: una richiesta è stata rifiutata dal bilanciatore del carico a causa di un criterio di sicurezza di Google Cloud Armor.body_denied_by_security_policy
: un corpo della richiesta è stato rifiutato dal bilanciatore del carico a causa di un criterio di sicurezza di Google Cloud Armor.
enforcedSecurityPolicy
: la regola del criterio di sicurezza applicata.name
(stringa): il nome del criterio di sicurezza.priority
(numero): la priorità della regola corrispondente nel criterio di sicurezza.adaptiveProtection
: informazioni sulla regola di Adaptive Protection di cui è stato eseguito il deployment automatico, se applicabile.autoDeployAlertId
: l'ID avviso degli eventi rilevati da Adaptive Protection.
configuredAction
(stringa): il nome dell'azione configurata nella regola di corrispondenza, ad esempioALLOW
,DENY
,GOOGLE_RECAPTCHA
,EXTERNAL_302
,THROTTLE
(per una regola di limitazione),RATE_BASED_BAN
(per una regola di esclusione basata sulla tariffa).rateLimitAction
: informazioni sull'azione di limitazione della frequenza quando viene trovata una corrispondenza con una regola di limitazione o una regola di esclusione basata sulla tariffa.key
(stringa): valore chiave del limite di frequenza (fino a 32 byte). Questo campo viene omesso se il tipo di chiave èALL
o se il tipo di chiave èHTTP-HEADER
oHTTP-COOKIE
e l'intestazione o il cookie specificato non è presente nella richiesta.outcome
(stringa): i valori possibili sono i seguenti:"RATE_LIMIT_THRESHOLD_CONFORM"
se è al di sotto della soglia di limite di frequenza configurata."RATE_LIMIT_THRESHOLD_EXCEED"
se al di sopra della soglia di frequenza configurata."BAN_THRESHOLD_EXCEED"
se al di sopra della soglia di esclusione configurata.
outcome
(stringa): il risultato dell'esecuzione dell'azione configurata, ad esempioACCEPT
,DENY
,REDIRECT
,EXEMPT
.preconfiguredExprIds
(stringa): gli ID di tutte le espressioni di regola WAF preconfigurate che hanno attivato la regola.
previewSecurityPolicy
: completata se una richiesta corrisponde a una regola configurata per l'anteprima (presente solo quando una regola di anteprima avrebbe avuto la priorità sulla regola applicata).name
(stringa): il nome del criterio di sicurezzapriority
(numero): la priorità della regola corrispondente nel criterio di sicurezza.configuredAction
(stringa): il nome dell'azione configurata nella regola di corrispondenza, ad esempioALLOW
,DENY
,GOOGLE_RECAPTCHA
,EXTERNAL_302
,THROTTLE
(per una regola di limitazione),RATE_BASED_BAN
(per una regola di esclusione basata sulla tariffa).rateLimitAction
: informazioni sull'azione di limitazione della frequenza quando viene trovata una corrispondenza con una regola di limitazione o una regola di esclusione basata sulla tariffa.key
(stringa): valore chiave del limite di frequenza (fino a 32 byte). Questo campo viene omesso se il tipo di chiave èALL
o se il tipo di chiave èHTTP-HEADER
oHTTP-COOKIE
e l'intestazione o il cookie specificato non sono presenti nella richiesta.outcome
(stringa): i valori possibili sono i seguenti:"RATE_LIMIT_THRESHOLD_CONFORM"
se è al di sotto della soglia di limite di frequenza configurata."RATE_LIMIT_THRESHOLD_EXCEED"
se al di sopra della soglia di frequenza configurata."BAN_THRESHOLD_EXCEED"
se al di sopra della soglia di esclusione configurata.
outcome
(stringa): il risultato dell'esecuzione del file configurato.outcome
(stringa): il risultato dell'esecuzione dell'azione configurata, ad esempioACCEPT
,DENY
,REDIRECT
,EXEMPT
.preconfiguredExprIds
(stringa): gli ID di tutte le espressioni di regola WAF preconfigurate che hanno attivato la regola.
enforcedEdgeSecurityPolicy
(Anteprima): la regola del criterio di sicurezza perimetrale applicata.name
(stringa): il nome del criterio di sicurezza.priority
(numero): la priorità della regola corrispondente nel criterio di sicurezza.configuredAction
(stringa): il nome dell'azione configurata nella regola di corrispondenza, ad esempioALLOW
,DENY
.outcome
(stringa): il risultato dell'esecuzione dell'azione configurata, ad esempioACCEPT
,DENY
.
previewEdgeSecurityPolicy
(Anteprima): compilato se una richiesta corrisponde a una regola del criterio di sicurezza perimetrale configurata per l'anteprima (presente solo quando una regola di anteprima avrebbe avuto la priorità sulla regola applicata).name
(stringa): il nome del criterio di sicurezza.priority
(numero): la priorità della regola corrispondente nel criterio di sicurezza.configuredAction
(stringa): il nome dell'azione configurata nella regola di corrispondenza, ad esempioALLOW
,DENY
.outcome
(stringa): il risultato dell'esecuzione dell'azione configurata, ad esempioACCEPT
,DENY
.
Logging dettagliato
Può essere difficile capire perché una regola WAF preconfigurata è stata attivata da una richiesta specifica. I log eventi predefiniti di Google Cloud Armor contengono la regola che è stata attivata e la firma secondaria. Tuttavia, potrebbe essere necessario identificare i dettagli della richiesta in arrivo che ha attivato la regola per la risoluzione dei problemi, la convalida delle regole o l'ottimizzazione delle regole.
Puoi modificare il livello di dettaglio registrato per un criterio utilizzando il flag --log-level
. Questo flag può avere i valori NORMAL
o VERBOSE
:
--log-level=[NORMAL | VERBOSE]
Ad esempio:
gcloud compute security-policies update ca-policy-1 \ --log-level=VERBOSE
Ti consigliamo di attivare il logging dettagliato quando crei un criterio, apporti modifiche a un criterio o risolvi i relativi problemi.
Valori registrati quando il logging dettagliato è attivato
Se il logging dettagliato è abilitato, vengono registrate informazioni aggiuntive nel log delle richieste di bilanciamento del carico che viene inviato a Cloud Logging. Quando è abilitato il logging dettagliato, vengono visualizzati i seguenti campi aggiuntivi:
matchedFieldType
(stringa): tipo di campo che causa la corrispondenza.ARG_NAMES
ARG_VALUES
BODY
- Quando il campo
BODY
è nel log, significa che l'intero corpo del post corrisponde a una regola.
- Quando il campo
COOKIE_VALUES
COOKIE_NAMES
FILENAME
HEADER_VALUES
RAW_URI
REFERER
REQUEST_LINE
URI
USER_AGENT
HEADER_NAMES
ARGS_GET
X_FILENAME
ARG_NAME_COUNT
TRANSFER_ENCODING
REQUEST_METHOD
matchedFieldName
(stringa): se corrisponde alla parte del valore di una coppia chiave-valore, il valore della chiave viene memorizzato in questo campo. altrimenti è vuoto.matchedFieldValue
(stringa): un prefisso di massimo 16 byte per la parte del campo che determina la corrispondenza.matchedFieldLength
(intero): la lunghezza totale del campo.matchedOffset
(intero): l'offset iniziale all'interno del campo che causa la corrispondenza.matchedLength
(intero): la durata della corrispondenza.
Ad esempio, potresti inviare questa richiesta a un progetto in cui sono abilitate le regole WAF SQL injection:
curl http://IP_ADDR/?sql_table=abc%20pg_catalog%20xyz
La voce in Esplora log sarà simile alla seguente:
enforcedSecurityPolicy: { name: "user-staging-sec-policy" priority: 100 configuredAction: "DENY" outcome: "DENY preconfiguredExprIds: [ 0: "owasp-crs-v030001-id942140-sqli" ] matchedFieldType: "ARG_VALUES" matchedFieldName: "sql_table" matchedFieldValue: "pg_catalog" matchedFieldLength: 18 matchedOffset: 4 matchedLength: 10 }
Mantenere la privacy quando il logging dettagliato è attivato
Quando utilizzi il logging dettagliato, Google Cloud Armor registra gli snippet degli elementi delle richieste in entrata che hanno attivato una determinata regola WAF preconfigurata. Questi snippet possono contenere porzioni di intestazioni di richiesta, parametri di richiesta o elementi del corpo POST. È possibile che uno snippet contenga dati sensibili, ad esempio un indirizzo IP o altri dati sensibili della richiesta in entrata, in base alle informazioni contenute nelle intestazioni o nel corpo della richiesta e a ciò che attiva la regola WAF.
Abilitando il logging dettagliato, tieni presente che c'è il rischio di accumulare dati potenzialmente sensibili nei tuoi log in Logging. Ti consigliamo di attivare il logging dettagliato solo durante la creazione e la convalida delle regole o per la risoluzione dei problemi. Durante il normale funzionamento, ti consigliamo di lasciare disattivato il logging dettagliato.
Visualizzazione dei log
Puoi visualizzare i log per un criterio di sicurezza di Google Cloud Armor solo nella console Google Cloud.
Console
In Google Cloud Console, vai alla pagina Sicurezza di rete.
Nella pagina Criteri di sicurezza, nella riga relativa a un criterio di sicurezza, fai clic su
Menu per il criterio di cui vuoi visualizzare i log.Seleziona Visualizza log.
Gestione di bot
Per offrire visibilità su come Google Cloud Armor valuta i token reCAPTCHA Enterprise, jsonPayload
ha il seguente campo aggiuntivo:
securityPolicyRequestData
: dati relativi alla richiesta durante l'elaborazione da parte di un criterio di sicurezza, indipendentemente da quale regola viene abbinata alla fine.recaptchaActionToken
: dati relativi a un token dell'azione reCAPTCHA Enterprise.score (float)
: un punteggio di legittimità utente incorporato in un token d'azione reCAPTCHA Enterprise. Presente solo quando un token dell'azione reCAPTCHA Enterprise è allegato alla richiesta e viene decodificato correttamente in base a una regola del criterio di sicurezza. Per ulteriori informazioni, consulta la pagina Applicare la valutazione di reCAPTCHA Enterprise.
recaptchaSessionToken
: dati relativi a un token di sessione reCAPTCHA Enterprise.score (float)
: un punteggio di legittimità utente incorporato in un token di sessione reCAPTCHA Enterprise. Presente solo quando un token di sessione reCAPTCHA Enterprise è associato alla richiesta e viene decodificato correttamente in base a una regola del criterio di sicurezza. Per ulteriori informazioni, consulta la pagina Applicare la valutazione di reCAPTCHA Enterprise.
Esempi di log
Di seguito è riportato un esempio di dettagli di log per una regola di limitazione che blocca una richiesta:
jsonPayload: { enforcedSecurityPolicy: { priority: 100 name: "sample-prod-policy" configuredAction: "THROTTLE" outcome: "DENY" rateLimitAction: { key:"sample-key" outcome:"RATE_LIMIT_THRESHOLD_EXCEED" } } @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" statusDetails: "denied_by_security_policy" } httpRequest: {8} resource: {2} timestamp: "2021-03-17T19:16:48.185763Z"
Di seguito è riportato un esempio di dettagli di log per una regola di esclusione basata su tariffe che blocca una richiesta:
jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" enforcedSecurityPolicy: { priority: 150 name: "sample-prod-policy" outcome: "DENY" configuredAction: "RATE_BASED_BAN" rateLimitAction: { key:"sample-key" outcome:"BAN_THRESHOLD_EXCEED" } } statusDetails: "denied_by_security_policy" } httpRequest: {8} resource: {2} timestamp: "2021-03-17T19:27:17.393244Z"
Passaggi successivi
Scopri di più sulla risoluzione dei problemi di Google Cloud Armor.