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 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 des journaux configuré pour votre équilibreur de charge. Si vous réduisez le taux d'échantillonnage pour votre équilibreur de charge, les journaux de vos requêtes Google Cloud Armor sont échantillonnés ce taux réduit. De plus, si vous utilisez référencement de services inter-projets, des journaux sont générés sous le projet hôte ou de service qui inclut votre l'interface et le mappage d'URL de l'équilibreur de charge. Par conséquent, nous recommandons aux administrateurs du projet frontal d'accorder des autorisations de lecture des journaux et des métriques aux administrateurs du projet 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 en fonction de la règle de correspondance 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 pour un équilibreur de charge d'application externe, consultez 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 Google Cloud CLI comme indiqué sur la page Journalisation et surveillance de l'équilibreur de charge d'application externe précédente. 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 de Threat Intelligence, le cas échéant.
      • categories: (chaîne) noms de la ou 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 (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 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 (aperçu) : 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 (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 à Règles Google Cloud Armor.

    Accéder aux règles 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 inclut 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 Appliquez 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 reCAPTCHA Le jeton de session est associé à la requête et il a bien été décodé. 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 digitale est et qu'une stratégie de sécurité évalue la demande (qu'une expression de la stratégie corresponde ou non à la demande).

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"

Étape suivante

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