Utilizzo del logging delle richieste

I log di Google Cloud Armor per richiesta relativi al nome del criterio di sicurezza, alla priorità delle regole di corrispondenza, all'azione associata e alle informazioni correlate vengono registrati come parte del logging per bilanciatori del carico delle applicazioni esterni e bilanciatori del carico di rete con proxy esterni. Il logging per i nuovi servizi di backend è disabilitato per impostazione predefinita, quindi devi abilitarlo per registrare informazioni di logging complete per Google Cloud Armor.

I log di Google Cloud Armor fanno parte dei log di Cloud Load Balancing. Ciò significa che 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 bilanciatore del carico, i log delle richieste Google Cloud Armor vengono campionati a questa velocità ridotta. Inoltre, se utilizzi il riferimento al servizio multiprogetto, i log vengono generati nel progetto host o di servizio che include il frontend e la mappa URL del bilanciatore del carico. Consigliamo quindi agli amministratori del progetto frontend di concedere le autorizzazioni per leggere i log e le metriche agli amministratori del progetto di backend.

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 un bilanciatore del carico delle applicazioni esterno, consulta Logging e monitoraggio del bilanciatore del carico delle applicazioni esterno. Per il bilanciatore del carico di rete proxy esterno, puoi utilizzare i comandi di Google Cloud CLI elencati nella precedente pagina Logging e monitoraggio del bilanciatore del carico delle applicazioni esterno. Non puoi abilitare il logging per il bilanciatore del carico di rete proxy esterno utilizzando la console Google Cloud.

Inoltre, puoi impostare diversi livelli di logging per valutare più facilmente se i criteri di sicurezza e le relative regole funzionano come previsto. Per informazioni complete, consulta Logging dettagliato.

Voci di log dei criteri di sicurezza

Le seguenti voci di log in Esplora log riguardano il logging delle regole e dei criteri di sicurezza 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: richiesta rifiutata dal bilanciatore del carico a causa di un criterio di sicurezza di Google Cloud Armor.
    • body_denied_by_security_policy: il 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 di corrispondenza nel criterio di sicurezza.
    • adaptiveProtection: informazioni sulla regola di protezione adattiva di cui è stato eseguito il deployment automatico, se applicabile.
      • autoDeployAlertId: l'ID avviso degli eventi rilevati da Adaptive Protection.
    • configuredAction (stringa): 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 della limitazione di frequenza quando viene soddisfatta una regola di limitazione o una regola di esclusione basata sulla tariffa.
      • key (stringa): valore della chiave per la limitazione 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 specificati non è presente nella richiesta.
      • outcome (stringa). I valori possibili sono i seguenti:
        • "RATE_LIMIT_THRESHOLD_CONFORM" se il limite di frequenza è inferiore alla soglia configurata.
        • "RATE_LIMIT_THRESHOLD_EXCEED" se al di sopra della soglia del 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.
    • threatIntelligence: informazioni sugli elenchi di indirizzi IP corrispondenti da Threat Intelligence, se applicabile.
      • categories: (stringa) i nomi degli elenchi di indirizzi IP corrispondenti.
  • previewSecurityPolicy: compilato se una richiesta corrisponde a una regola configurata per l'anteprima (presente solo quando una regola di anteprima aveva 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): 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 della limitazione di frequenza quando viene soddisfatta una regola di limitazione o una regola di esclusione basata sulla tariffa.
      • key (stringa): valore della chiave per la limitazione 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 specificati non è presente nella richiesta.
      • outcome (stringa). I valori possibili sono i seguenti:
        • "RATE_LIMIT_THRESHOLD_CONFORM" se il limite di frequenza è inferiore alla soglia configurata.
        • "RATE_LIMIT_THRESHOLD_EXCEED" se al di sopra della soglia del limite di frequenza configurata.
        • "BAN_THRESHOLD_EXCEED" se superiore alla soglia di esclusione configurata.
    • outcome (stringa): il risultato dell'esecuzione dell'elemento 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.
    • threatIntelligence: informazioni sugli elenchi di indirizzi IP corrispondenti da Threat Intelligence, se applicabile.
      • categories: (stringa) i nomi degli elenchi di indirizzi IP corrispondenti.
  • 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): compilata se una richiesta corrisponde a una regola del criterio di sicurezza perimetrale configurata per l'anteprima (presente solo quando una regola di anteprima aveva 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.

Visualizzazione dei log

Puoi visualizzare i log per un criterio di sicurezza di Google Cloud Armor solo nella console Google Cloud.

Console

  1. Nella console Google Cloud, vai a Criteri di Google Cloud Armor.

    Vai ai criteri di Google Cloud Armor

  2. Fai clic su Azioni.

  3. Seleziona Visualizza log.

Richiedi logging dei dati

Quando utilizzato con Google Cloud Armor, jsonPayload ha il seguente campo aggiuntivo:

  • securityPolicyRequestData: dati relativi alla richiesta durante l'elaborazione da parte di un criterio di sicurezza, indipendentemente dalla regola abbinata.
    • recaptchaActionToken: dati relativi a un token di azione reCAPTCHA Enterprise.
      • score (float): un punteggio di legittimità dell'utente incorporato in un token di azione reCAPTCHA Enterprise. Presente solo quando alla richiesta è associato un token di azione reCAPTCHA Enterprise e viene decodificato correttamente in base a una regola del criterio di sicurezza. Per maggiori informazioni, consulta Applicare la valutazione di 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. È presente solo quando alla richiesta viene associato un token di sessione reCAPTCHA Enterprise e viene decodificato correttamente in base a una regola del criterio di sicurezza.
    • tlsJa3Fingerprint: un'impronta JA3 TTL/SSL se il client si connette tramite HTTPS, HTTP/2 o HTTP/3. Presente solo se l'impronta è disponibile ed esiste un criterio di sicurezza che valuta la richiesta (indipendentemente dal fatto che un'espressione nel criterio corrisponda alla richiesta).

Esempi di log

Di seguito è riportato un esempio di dettagli dei 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 sulla 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.