Utilizzo del logging delle richieste

I log a livello di 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), il bilanciamento del carico del proxy TCP e il bilanciamento del carico del proxy SSL. Il logging per i 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), il proxy TCP o il bilanciamento del carico del proxy SSL, i log delle richieste di Google Cloud Armor vengono campionati a una frequenza ridotta.

Utilizzando il logging, puoi visualizzare ogni richiesta valutata da un criterio di sicurezza di Google Cloud Armor e dal risultato o dall'azione intrapresa. Ad esempio, per visualizzare le richieste negate, 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 e il bilanciamento del carico del proxy SSL, puoi utilizzare i comandi dell'interfaccia a riga di comando di Google Cloud elencati nella pagina precedente Logging e monitoraggio del bilanciamento del carico HTTP(S). Non è possibile abilitare il logging per il bilanciamento del carico del proxy TCP e il bilanciamento del carico del proxy SSL utilizzando Google Cloud Console.

Inoltre, puoi 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 si riferiscono 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 o EXTERNAL_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 di richiesta è stato rifiutato dal bilanciatore del carico a causa di un criterio di sicurezza Google Cloud Armor.
  • enforcedSecurityPolicy: la regola del criterio di sicurezza che è stata applicata.
    • name (stringa): il nome del criterio di sicurezza.
    • priority (numero): la priorità della regola di corrispondenza nel criterio di sicurezza.
    • configuredAction (stringa): il nome dell'azione configurata nella regola di corrispondenza, ad esempio ALLOW, 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 in caso di corrispondenza con una regola di limitazione o una regola di esclusione basata sulla frequenza.
      • 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 o HTTP-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 è inferiore la soglia di limite di configurazione configurata.
        • "RATE_LIMIT_THRESHOLD_EXCEED" se superiore alla soglia di limite di frequenza configurata.
        • "BAN_THRESHOLD_EXCEED" se superiore alla soglia di esclusione configurata.
    • outcome (stringa): il risultato dell'esecuzione dell'azione configurata, ad esempio ACCEPT, DENY, REDIRECT, EXEMPT.
    • preconfiguredExprIds (stringa): gli ID di tutte le espressioni di regole WAF preconfigurate che hanno attivato la regola.
  • previewSecurityPolicy: compilato 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 sicurezza
    • priority (numero): la priorità della regola di corrispondenza nel criterio di sicurezza.
    • configuredAction (stringa): il nome dell'azione configurata nella regola di corrispondenza, ad esempio ALLOW, 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 in caso di corrispondenza con una regola di limitazione o una regola di esclusione basata sulla frequenza.
      • 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 o HTTP-COOKIE e se l'intestazione o il cookie specificati non è presente nella richiesta.
      • outcome (stringa): i valori possibili sono i seguenti:
        • "RATE_LIMIT_THRESHOLD_CONFORM" se è inferiore la soglia di limite di configurazione configurata.
        • "RATE_LIMIT_THRESHOLD_EXCEED" se superiore alla soglia di limite di frequenza configurata.
        • "BAN_THRESHOLD_EXCEED" se superiore alla soglia di esclusione configurata.
    • outcome (stringa): il risultato dell'esecuzione del parametro configurato.
    • outcome (stringa): il risultato dell'esecuzione dell'azione configurata, ad esempio ACCEPT, DENY, REDIRECT, EXEMPT.
    • preconfiguredExprIds (stringa): gli ID di tutte le espressioni di regole WAF preconfigurate che hanno attivato la regola.
  • enforcedEdgeSecurityPolicy (Anteprima): la regola del criterio di sicurezza perimetrale che è stata applicata.
    • name (stringa): il nome del criterio di sicurezza.
    • priority (numero): la priorità della regola di corrispondenza nel criterio di sicurezza.
    • configuredAction (stringa): il nome dell'azione configurata nella regola di corrispondenza, ad esempio ALLOW, DENY.
    • outcome (stringa): il risultato dell'esecuzione dell'azione configurata, ad esempio ACCEPT, 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 di corrispondenza nel criterio di sicurezza.
    • configuredAction (stringa): il nome dell'azione configurata nella regola di corrispondenza, ad esempio ALLOW, DENY.
    • outcome (stringa): il risultato dell'esecuzione dell'azione configurata, ad esempio ACCEPT, 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 nella richiesta in entrata 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 per la prima volta un criterio, apporti modifiche a un criterio o risolvi eventuali problemi.

Valori registrati quando il logging dettagliato è abilitato

Se il logging dettagliato è abilitato, vengono registrate ulteriori informazioni nel log della richiesta di bilanciamento del carico che viene inviato a Cloud Logging. I seguenti campi aggiuntivi vengono visualizzati nel log delle richieste quando il logging dettagliato è abilitato:

  • matchedFieldType (stringa): questo è il tipo di campo che determina la corrispondenza.

    • ARG_NAMES
    • ARG_VALUES
    • BODY

      • Quando il campo BODY è incluso nel log, significa che l'intero corpo del post corrisponde a una regola.
    • 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 (numero intero): la lunghezza totale del campo.

  • matchedOffset (numero intero): l'offset iniziale all'interno del campo che causa la corrispondenza.

  • matchedLength (numero 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 frammenti di intestazioni della richiesta, parametri della richiesta o elementi del corpo POST. È possibile che uno snippet contenga dati sensibili, ad esempio un indirizzo IP o altri dati sensibili provenienti dalla richiesta in entrata, a seconda di cosa si trova nelle intestazioni o nel corpo della richiesta e di ciò che attiva la regola WAF.

Se attivi il logging dettagliato, tieni presente che esiste il rischio di accumulare dati potenzialmente sensibili nei log di 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 disattivare il logging dettagliato.

Visualizzazione dei log

Puoi visualizzare i log di un criterio di sicurezza di Google Cloud Armor solo in Google Cloud Console.

Console

  1. In Google Cloud Console, vai alla pagina Sicurezza di rete.

    Vai a Sicurezza di rete

  2. 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.

  3. Seleziona Visualizza log.

Gestione di bot

Per darti 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 un criterio di sicurezza, indipendentemente dalla regola a cui viene trovata una corrispondenza.
    • recaptchaActionToken: dati relativi a un token di azione reCAPTCHA Enterprise.
      • score (float): un punteggio di legittimità dell'utente incorporato in un token dell'azione reCAPTCHA Enterprise. Sono presenti solo quando un token di azione reCAPTCHA Enterprise è allegato alla richiesta e viene decodificato correttamente in base a una regola del criterio di sicurezza. Per saperne di più, vedi Applicare la valutazione reCAPTCHA Enterprise.
    • recaptchaSessionToken: dati relativi a un token di sessione reCAPTCHA Enterprise.
      • score (float): un punteggio di legittimità dell'utente incorporato in un token di sessione reCAPTCHA Enterprise. Sono presenti solo quando un token di sessione reCAPTCHA Enterprise è allegato alla richiesta e viene decodificato correttamente in base a una regola del criterio di sicurezza. Per saperne di più, vedi Applicare la valutazione reCAPTCHA Enterprise.

Esempi di log

Di seguito è riportato un esempio di dettagli del 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 del log per una regola di esclusione basata su tariffa 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.