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 de votre équilibreur de charge, vos journaux de requêtes Google Cloud Armor sont échantillonnés à ce taux réduit. De plus, si vous utilisez une référence de service inter-projets, des 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 front-end 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 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 la section 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
ouEXTERNAL_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) ouRATE_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'à 36 octets). Ce champ est omis si le type de clé estALL
, ou si le type de clé estHTTP-HEADER
ouHTTP-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 exempleACCEPT
,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) nom(s) 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) ouRATE_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'à 36 octets). Ce champ est omis si le type de clé estALL
, ou si le type de clé estHTTP-HEADER
ouHTTP-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 exempleACCEPT
,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) nom(s) 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 exempleACCEPT
,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 exempleACCEPT
,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
Dans la console Google Cloud, accédez à Règles Google Cloud Armor.
Cliquez sur
Actions.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 correspondancerecaptchaActionToken
: données associé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 la page 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 deHTTPS
,HTTP/2
ouHTTP/3
. Présent uniquement si l'empreinte est disponible et qu'une règle de sécurité évalue la requête (que l'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"
Étape suivante
Découvrez comment résoudre les problèmes liés à Google Cloud Armor.