Utiliser la journalisation des requêtes

Les journaux par requête Google Cloud Armor concernant le nom de la stratégie de sécurité, la priorité des règles de correspondance, l'action associée et les informations connexes sont alimentés dans le cadre de la journalisation des équilibreurs de charge d'application externes et des équilibreurs de charge réseau proxy externes. La journalisation des nouveaux services de backend est désactivée par défaut. Vous devez donc activer la journalisation pour enregistrer des informations de journalisation complètes concernant Cloud Armor.

Les journaux Cloud Armor font partie des journaux Cloud Load Balancing. Cela signifie que la génération de journaux Cloud Armor est soumise au taux d'échantillonnage des journaux configuré pour votre équilibreur de charge. Si vous réduisez le taux d'échantillonnage de votre équilibreur de charge, vos journaux de requêtes Cloud Armor sont échantillonnés à ce taux réduit. De plus, si vous utilisez le référencement de services entre projets, les journaux sont générés dans le projet hôte ou de service qui inclut l'interface et le mappage d'URL de votre équilibreur de charge. Par conséquent, nous recommandons aux administrateurs du projet de frontend d'accorder aux administrateurs du projet de backend les autorisations nécessaires pour lire les journaux et les métriques.

À l'aide de la journalisation, vous pouvez afficher chaque requête évaluée par une stratégie de sécurité Cloud Armor ainsi que le résultat ou l'action entreprise en fonction de la règle correspondante de priorité la plus élevée. Par exemple, pour afficher les requêtes refusées, vous pouvez utiliser des filtres tels que jsonPayload.enforcedSecurityPolicy.outcome="DENY" ou jsonPayload.statusDetails="denied_by_security_policy".

Pour activer la journalisation d'un équilibreur de charge d'application externe, consultez la section Journalisation de la page "Journalisation et surveillance de l'équilibreur de charge d'application externe régional". Pour l'équilibreur de charge réseau proxy externe, vous pouvez utiliser les commandes Google Cloud CLI comme indiqué sur la page précédente Journalisation et surveillance de l'équilibreur de charge d'application externe. Vous ne pouvez pas activer la journalisation pour l'équilibreur de charge réseau proxy externe à l'aide de la console Trusted Cloud .

En outre, vous pouvez définir différents niveaux de journalisation pour vous aider à déterminer si vos stratégies de sécurité et leurs règles fonctionnent comme prévu. Pour en savoir plus, consultez la section Journalisation détaillée.

Entrées de journal des stratégies de sécurité

Les entrées de journal suivantes dans l'explorateur de journaux concernent la journalisation des règles et stratégies de sécurité Cloud Armor. Les entrées incluent la structure suivante dans jsonPayload. Les détails de la requête HTTP apparaissent dans le message httpRequest.

  • statusDetails : description textuelle du code de réponse.
    • redirected_by_security_policy : la requête a été redirigée par une règle de redirection, GOOGLE_RECAPTCHA ou EXTERNAL_302.
    • denied_by_security_policy : une requête a été refusée par l'équilibreur de charge en raison d'une stratégie de sécurité Cloud Armor.
    • body_denied_by_security_policy : un corps de requête a été refusé par l'équilibreur de charge en raison d'une stratégie de sécurité Cloud Armor.
  • enforcedSecurityPolicy : règle de la stratégie de sécurité qui a été appliquée.
    • name : nom de la stratégie de sécurité.
    • priority : priorité numérique de la règle de correspondance dans la stratégie de sécurité.
    • configuredAction : nom de l'action configurée dans la règle de correspondance, par exemple, ALLOW, DENY, GOOGLE_RECAPTCHA, EXTERNAL_302, THROTTLE (pour une règle de limitation) ou RATE_BASED_BAN (pour une règle d'exclusion basée sur le débit).
    • rateLimitAction : informations sur l'action de limitation du débit lorsqu'une règle de limitation ou d'exclusion basée sur le débit est mise en correspondance.
      • key : valeur de la clé de limite de débit (jusqu'à 36 octets). Ce champ est omis si le type de clé est ALL, ou si le type de clé est HTTP-HEADER ou HTTP-COOKIE et que l'en-tête ou le cookie spécifié n'est pas présent dans la requête.
      • outcome : les valeurs possibles sont les suivantes :
        • "RATE_LIMIT_THRESHOLD_CONFORM" en cas de débit inférieur au seuil de limitation de débit configuré
        • "RATE_LIMIT_THRESHOLD_EXCEED" en cas de débit supérieur au seuil de limitation de débit configuré
        • "BAN_THRESHOLD_EXCEED" en cas de débit supérieur au seuil d'exclusion configuré
    • outcome : résultat de l'exécution de l'action configurée, par exemple ACCEPT, DENY, REDIRECT, EXEMPT.
    • preconfiguredExprIds : ID de toutes les expressions de règles WAF préconfigurées qui ont déclenché la règle.
    • threatIntelligence : informations sur les listes d'adresses IP correspondantes de Threat Intelligence, le cas échéant.
      • categories : noms des listes d'adresses IP correspondantes.
  • previewSecurityPolicy : renseigné si la requête correspond à une règle configurée pour l'aperçu (présent seulement lorsqu'une règle d'aperçu est prioritaire sur la règle appliquée).
    • name : nom de la stratégie de sécurité
    • priority : priorité numérique de la règle de correspondance dans la stratégie de sécurité.
    • configuredAction : nom de l'action configurée dans la règle de correspondance, par exemple, ALLOW, DENY, GOOGLE_RECAPTCHA, EXTERNAL_302, THROTTLE (pour une règle de limitation) ou RATE_BASED_BAN (pour une règle d'exclusion basée sur le débit).
    • rateLimitAction : informations sur l'action de limitation du débit lorsqu'une règle de limitation ou d'exclusion basée sur le débit est mise en correspondance.
      • key : valeur de la clé de limite de débit (jusqu'à 36 octets). Ce champ est omis si le type de clé est ALL, ou si le type de clé est HTTP-HEADER ou HTTP-COOKIE et que l'en-tête ou le cookie spécifié n'est pas présent dans la requête.
      • outcome : les valeurs possibles sont les suivantes :
        • "RATE_LIMIT_THRESHOLD_CONFORM" en cas de débit inférieur au seuil de limitation de débit configuré
        • "RATE_LIMIT_THRESHOLD_EXCEED" en cas de débit supérieur au seuil de limitation de débit configuré
        • "BAN_THRESHOLD_EXCEED" en cas de débit supérieur au seuil d'exclusion configuré
    • outcome : résultat de l'exécution de l'action configurée, par exemple ACCEPT, DENY, REDIRECT, EXEMPT.
    • preconfiguredExprIds : ID de toutes les expressions de règles WAF préconfigurées qui ont déclenché la règle.
    • threatIntelligence : informations sur les listes d'adresses IP correspondantes de Threat Intelligence, le cas échéant.
      • categories : noms des listes d'adresses IP correspondantes.
  • enforcedEdgeSecurityPolicy : règle de la stratégie de sécurité périphérique qui a été appliquée.
    • name : nom de la stratégie de sécurité.
    • priority : priorité numérique de la règle de correspondance dans la stratégie de sécurité.
    • configuredAction : nom de l'action configurée dans la règle de correspondance (par exemple, ALLOW, DENY).
    • outcome : résultat de l'exécution de l'action configurée, par exemple ACCEPT ou DENY.
  • previewEdgeSecurityPolicy : renseigné si une requête correspond à une règle de stratégie de sécurité périphérique configurée pour l'aperçu (présent seulement lorsqu'une règle d'aperçu est prioritaire sur la règle appliquée).
    • name : nom de la stratégie de sécurité.
    • priority : priorité numérique de la règle de correspondance dans la stratégie de sécurité.
    • configuredAction : nom de l'action configurée dans la règle de correspondance (par exemple, ALLOW, DENY).
    • outcome : résultat de l'exécution de l'action configurée, par exemple ACCEPT ou DENY.

Afficher les journaux

Vous ne pouvez afficher les journaux d'une stratégie de sécurité Cloud Armor que dans la consoleTrusted Cloud .

Console

  1. Dans la console Trusted Cloud , accédez à Règles Cloud Armor.

    Accéder aux règles Cloud Armor

  2. Cliquez sur Actions.

  3. Sélectionnez Afficher les journaux.

Demander la journalisation des données

Lorsqu'il est utilisé avec Cloud Armor, jsonPayload comporte le champ supplémentaire suivant :

  • securityPolicyRequestData : données relatives à la requête pendant le traitement par une règle de sécurité, quelle que soit la règle mise en correspondance
    • recaptchaActionToken : données associées à un jeton d'action reCAPTCHA.
      • score : score de légitimité de l'utilisateur intégré dans un jeton d'action reCAPTCHA. Présent uniquement lorsqu'un jeton d'action reCAPTCHA est associé à la requête et qu'il est décodé avec succès en fonction d'une règle de stratégie de sécurité. Pour en savoir plus, consultez Appliquer l'évaluation reCAPTCHA.
    • recaptchaSessionToken : données associées à un jeton de session reCAPTCHA.
      • score : score de légitimité de l'utilisateur intégré dans un jeton de session reCAPTCHA. Présent uniquement lorsqu'un jeton de session reCAPTCHA est associé à la requête et qu'il est décodé avec succès en fonction d'une règle de stratégie de sécurité.
    • tlsJa4Fingerprint : empreinte JA4 TTL/SSL si le client se connecte à l'aide de HTTPS, HTTP/2 ou HTTP/3. Présent uniquement si l'empreinte digitale est disponible et qu'une règle de sécurité évalue la requête (qu'une expression de la règle corresponde ou non à la requête).
    • tlsJa3Fingerprint : empreinte JA3 TTL/SSL si le client se connecte à l'aide de HTTPS, HTTP/2 ou HTTP/3. Présent uniquement si l'empreinte digitale est disponible et qu'une règle de sécurité évalue la requête (qu'une expression de la règle corresponde ou non à la requête).

Exemples de journaux

Voici un exemple de détails de journal pour une règle de limitation qui bloque une requête :

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"

Voici un exemple de détails de journal pour une règle d'interdiction basée sur le taux qui bloque une requête :

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"

Étapes suivantes