Utiliser la journalisation des requêtes

Les journaux à la demande de Google Cloud Armor pour le nom de la stratégie de sécurité, la priorité de la règle de correspondance, l'action associée et les informations associées sont consignés dans le cadre de la journalisation pour les équilibreurs de charge d'application et les é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 Google Cloud Armor.

Les journaux Google Cloud Armor font partie des journaux Cloud Load Balancing. Cela signifie que la génération de journaux Google Cloud Armor est soumise au taux d'échantillonnage de 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 Google Cloud Armor sont échantillonnés à ce taux. En outre, si vous utilisez le référencement de services multiprojets, les journaux sont générés sous 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 d'interface d'accorder des autorisations de lecture des journaux et des métriques aux administrateurs du projet de backend.

À l'aide de la journalisation, vous pouvez afficher chaque requête évaluée par une stratégie de sécurité Google Cloud Armor ainsi que le résultat ou l'action entreprise. 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 pour un équilibreur de charge d'application externe, consultez la page Journalisation et surveillance de l'équilibreur de charge d'application externe. Pour l'équilibreur de charge réseau proxy externe, vous pouvez utiliser les commandes de la 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 Google 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é Google 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 (chaîne) : 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é Google 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é Google Cloud Armor.
  • enforcedSecurityPolicy: règle de la stratégie de sécurité qui a été appliquée.
    • name (chaîne) : nom de la stratégie de sécurité.
    • priority (chiffre) : priorité de la règle de correspondance dans la stratégie de sécurité.
    • adaptiveProtection : informations sur la règle Adaptive Protection déployée automatiquement, le cas échéant.
      • autoDeployAlertId : ID d'alerte des événements détectés par Adaptive Protection.
    • configuredAction (chaîne) : 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 (chaîne) : valeur de la clé de limite de débit (jusqu'à 32 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 (chaîne) : 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 (chaîne) : résultat de l'exécution de l'action configurée, par exemple ACCEPT, DENY, REDIRECT, EXEMPT.
    • preconfiguredExprIds (chaîne) : ID de toutes les expressions de règles WAF préconfigurées qui ont déclenché la règle.
    • threatIntelligence: informations sur la ou les listes d'adresses IP correspondantes issues de Threat Intelligence, le cas échéant.
      • categories: (chaîne) noms de la ou des listes d'adresses IP correspondantes.
  • previewSecurityPolicy: renseigné si une requête correspond à une règle configurée pour l'aperçu (présent uniquement lorsqu'une règle d'aperçu aurait été prioritaire sur la règle appliquée).
    • name (chaîne) : nom de la stratégie de sécurité
    • priority (chiffre) : priorité de la règle de correspondance dans la stratégie de sécurité.
    • configuredAction (chaîne) : 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 (chaîne) : valeur de la clé de limite de débit (jusqu'à 32 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 (chaîne) : 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 (chaîne) : résultat de l'exécution de la configuration.
    • outcome (chaîne) : résultat de l'exécution de l'action configurée, par exemple ACCEPT, DENY, REDIRECT, EXEMPT.
    • preconfiguredExprIds (chaîne) : ID de toutes les expressions de règles WAF préconfigurées qui ont déclenché la règle.
    • threatIntelligence: informations sur la ou les listes d'adresses IP correspondantes issues de Threat Intelligence, le cas échéant.
      • categories: (chaîne) noms de la ou des listes d'adresses IP correspondantes.
  • enforcedEdgeSecurityPolicy (aperçu) : règle de la stratégie de sécurité périphérique qui a été appliquée.
    • name (chaîne) : nom de la stratégie de sécurité.
    • priority (chiffre) : priorité de la règle de correspondance dans la stratégie de sécurité.
    • configuredAction (chaîne) : nom de l'action configurée dans la règle de correspondance (par exemple, ALLOW, DENY).
    • outcome (chaîne) : résultat de l'exécution de l'action configurée, par exemple ACCEPT, DENY.
  • previewEdgeSecurityPolicy (Preview) : 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 uniquement lorsqu'une règle d'aperçu aurait priorité sur la règle appliquée).
    • name (chaîne) : nom de la stratégie de sécurité.
    • priority (chiffre) : priorité de la règle de correspondance dans la stratégie de sécurité.
    • configuredAction (chaîne) : nom de l'action configurée dans la règle de correspondance (par exemple, ALLOW, DENY).
    • outcome (chaîne) : résultat de l'exécution de l'action configurée, par exemple ACCEPT, DENY.

Afficher les journaux

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

Console

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

    Accéder aux stratégies Google Cloud Armor

  2. Cliquez sur Actions.

  3. Sélectionnez Afficher les journaux.

Demander la journalisation des données

Lorsqu'il est utilisé avec Google 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 liées à un jeton d'action reCAPTCHA.
      • score (float): 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 (float): 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é.
    • tlsJa3Fingerprint: empreinte TTL/SSL JA3 si le client se connecte à l'aide de HTTPS, HTTP/2 ou HTTP/3. Présent uniquement si l'empreinte est disponible et qu'une stratégie de sécurité évalue la requête (qu'une expression de la stratégie 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

Découvrez comment résoudre les problèmes liés à Google Cloud Armor.