Présentation de Google Cloud Armor Adaptive Protection

Google Cloud Armor Adaptive Protection vous aide à protéger vos applications, sites Web et services Google Cloud contre les attaques par déni de service distribué (DDoS, Distributed Denial of Service) de couche 7, telles que les inondations de protocole HTTP et les autres activités malveillantes consistant à générer des flux de forte intensité sur la couche 7 (niveau application). Adaptive Protection crée des modèles de machine learning qui permettent de :

  1. détecter les activités anormales et générer les alertes associées ;
  2. générer une signature décrivant l'attaque potentielle ;
  3. générer une règle WAF personnalisée dans Google Cloud Armor pour bloquer la signature.

Vous activez ou désactivez Adaptive Protection à l'échelle de stratégies de sécurité.

Les alertes concernant le trafic anormal (attaques potentielles), qui incluent les signatures des attaques, s'affichent dans le tableau de bord des événements Adaptive Protection, avec les journaux d'événements envoyés à Cloud Logging, où elles peuvent être analysées directement ou transférées vers un workflow en aval de surveillance de journaux ou d'événements liés à la sécurité. Des alertes d'attaques potentielles sont également générées sous forme de résultats dans Security Command Center.

Disponibilité d'Adaptive Protection

Bien que Google Cloud Armor Adaptive Protection soit en version bêta, les clients Google Cloud Armor peuvent configurer des stratégies de sécurité individuelles pour Adaptive Protection. Toutefois, lorsque Managed Protection sera en disponibilité générale, Adaptive Protection ne sera disponible que pour les clients souscrivant à Google Cloud Armor Managed Protection Plus.

Si vos projets ne sont pas déjà inscrits dans le niveau Managed Protection Plus, consultez la section Utiliser Managed Protection pour savoir comment vous inscrire.

Cloud Logging et Cloud Monitoring

Étant donné que l'utilisation d'Adaptive Protection nécessite une compréhension efficace du fonctionnement de la journalisation et des alertes dans Google Cloud, nous vous recommandons de vous familiariser avec Cloud Logging, les alertes et les règles d'alerte. Pour en savoir plus, consultez la documentation Cloud Logging et la documentation Cloud Monitoring sur les alertes.

Configurer et régler les alertes

Vous pouvez activer Adaptive Protection dans les projets dans lesquels des stratégies de sécurité Google Cloud Armor protègent déjà vos applications. Lorsque vous activez Adaptive Protection pour une stratégie de sécurité particulière, cette fonctionnalité est appliquée à tous les services de backend auxquels la stratégie de sécurité est associée.

Une fois qu'Adaptive Protection est activé, Il faut compter une période d'entraînement d'au moins une heure avant que cette fonctionnalité ne développe une base de référence fiable et commence à surveiller le trafic et générer des alertes. Au cours de la période d'entraînement, Adaptive Protection modélise le trafic entrant et les schémas d'utilisation propres à chaque service de backend, afin de constituer la base de référence pour chaque service de backend. Une fois la période d'entraînement terminée, vous recevez des alertes en temps réel lorsqu'Adaptive Protection identifie des anomalies (fréquence élevée ou volume important) dans le trafic dirigé vers l'un des services de backend associés à cette stratégie de sécurité.

Vous pouvez ajuster les alertes Adaptive Protection en fonction de plusieurs métriques. Les alertes, qui sont envoyées à Cloud Logging, incluent un niveau de confiance, une règle suggérée et une estimation de taux de trafic de référence affecté associé à la règle suggérée.

  • Le niveau de confiance indique la fiabilité selon laquelle les modèles Adaptive Protection prédisent que le changement observé dans le modèle de trafic est anormal.
  • Le taux de trafic de référence affecté associé à la règle suggérée représente le pourcentage du trafic de référence existant qui serait bloqué par la règle.

Dans Cloud Logging, vous pouvez filtrer les alertes en fonction du niveau de confiance et du taux de trafic de référence affecté, ou de ces deux paramètres à la fois. Pour en savoir plus sur le réglage des alertes, consultez la section Gérer les règles d'alerte.

Utiliser et interpréter les alertes

Dès qu'Adaptive Protection détecte une suspicion d'attaque, un événement est généré dans le tableau de bord des événements Adaptive Protection, et un élément de journal est généré dans Cloud Logging. Cette alerte se trouve dans la charge utile JSON de l'élément de journal. L'élément de journal est généré sous la ressource Règle de sécurité du réseau dans Cloud Logging. Le message de journal identifie le service de backend attaqué et inclut un score de confiance indiquant le degré de confiance avec lequel Adaptive Protection évalue le changement de modèle de trafic identifié comme une anomalie. Le message de journal inclut également une signature d'attaque qui illustre les caractéristiques du trafic d'attaque, ainsi que des suggestions de règles Google Cloud Armor que vous pouvez appliquer pour limiter l'attaque.

Comprendre les signatures d'attaque

Une alerte Adaptive Protection inclut une signature d'attaque, qui est une description des attributs de trafic de l'attaque potentielle. Vous utilisez la signature pour identifier et potentiellement bloquer l'attaque. Cette signature se présente sous deux formes : une table lisible par l'utilisateur et une règle WAF préconfigurée pour Google Cloud Armor, que vous pouvez déployer dans la stratégie de sécurité appropriée.

La signature se compose d'un ensemble d'attributs, tels que l'adresse IP source, des régions géographiques, des cookies, des user-agents, des référents et d'autres en-têtes de requête HTTP, ainsi que l'ensemble de valeurs de ces attributs qui seraient associées au trafic d'attaque potentiel. L'ensemble d'attributs n'est pas configurable par l'utilisateur. Les valeurs d'attribut dépendent des valeurs du trafic entrant vers votre service de backend.

Pour chaque valeur d'attribut indiquant selon Adaptive Protection une attaque potentielle, les éléments suivants sont répertoriés :

  • La probabilité d'attaque.
  • La proportion de l'attribut dans l'attaque, qui correspond au pourcentage du trafic d'attaque potentiel associé à cette valeur au moment où l'attaque a été détectée.
  • La proportion de l'attribut dans la base de référence, qui correspond au pourcentage du trafic de référence qui contenait cette valeur d'attribut au moment où l'attaque a été détectée.

La spécification des entrées Cloud Logging contient des détails sur les informations de chaque alerte.

Voici un exemple de table lisible par l'utilisateur contenant la signature d'une attaque potentielle :

Nom de l'attribut Valeur d'attribut Probabilité de l'attaque Proportion dans l'attaque Proportion dans la base de référence
UserAgent "foo" 0,7 0,85 0.12
UserAgent "bar" 0,6 0,7 0,4
IP source "a.b.c.d" 0,95 0,1 0,01
IP source a.b.c.e 0,95 0,1 0,01
IP source a.b.c.f 0,05 0,1 0,1
RegionCode Royaume-Uni 0,64 0.3 0,1
RegionCode IN 0,25 0,20 0.3

Une alerte Adaptive Protection et le journal des événements Cloud Logging correspondants contiennent les éléments suivants :

  • Un ID d'alerte unique, ou alertID, utilisé pour faire référence à une alerte spécifique, en cas de commentaires utilisateur (plus d'informations ci-dessous).
  • Le service de backend attaqué, ou backendService.
  • Le score de confiance, ou confidence, qui est un nombre compris entre 0 et 1 indiquant dans quelle mesure le système Adaptive Protection évalue l'événement détecté comme une attaque malveillante.

Vous recevez également un ensemble de signatures et de règles caractérisant l'attaque détectée. Plus précisément, l'ensemble fournit une liste de headerSignatures, chacune correspondant à un en-tête HTTP et contenant une liste de significantValues pour l'en-tête spécifique.

Voici un exemple de signature :

...
headerSignatures: [
  0: {
   name: "Referer"
   significantValues: [
    0: {
     value: "foo.attacker.com"
     attackLikelihood: 0.95
     proportionInAttack: 0.6
     proportionInBaseline: 0.01
    }
   ]
  }
...

L'alerte indique que la valeur foo.attacker.com dans l'en-tête Referer est importante pour la caractérisation de l'attaque. Plus précisément, 60 % du trafic d'attaque (proportionInAttack) a cette valeur Referer et seulement 1 % du trafic de référence parmi l'ensemble du trafic (proportionInBaseline) a cette même valeur Referer. De plus, parmi l'ensemble du trafic correspondant à cette valeur Referer, 95 % correspond au trafic d'attaque (attackLikelihood).

Ces valeurs suggèrent que si vous bloquez tout le trafic comportant le nom Referer et la valeur foo.attacker.com, vous parviendriez à bloquer 60 % du trafic d'attaque et 1 % du trafic de référence.

Déployer des règles suggérées

Les alertes Adaptive Protection fournissent également une règle Google Cloud Armor suggérée, rédigée dans le langage des règles personnalisées. Cette règle peut être utilisée pour créer une règle dans une stratégie de sécurité Google Cloud Armor afin de limiter l'attaque. En plus de la signature, l'alerte inclut un taux de trafic de référence affecté, pour vous aider à évaluer l'impact du déploiement de la règle. Le taux de trafic de référence affecté correspond à une prévision de proportion du trafic de référence qui correspond à la signature d'attaque identifiée par Adaptive Protection.

Vous pouvez trouver une partie de la signature d'alerte, ainsi que le taux de trafic de référence affecté dans le message de journal envoyé à Cloud Logging. Voici la charge utile JSON d'un exemple d'alerte.

...
@type: "type.googleapis.com/dos.ml.pb.CloudArmorAlert"
 alertId: "11275630857957031521"
 backendService: "test-service"
 confidence: 0.71828485
 headerSignatures: [

  0: {
   name: "RequestUri"
   significantValues: [
    0: {
     attackLikelihood: 0.88
     proportionInAttack: 0.85
     proportionInBaseline: 0.01
     value: "/"
    }
   ]
  }
  1: {
   name: "RegionCode"
   significantValues: [
    0: {
     attackLikelihood: 0.08
     proportionInAttack: 0.17
     proportionInBaseline: 0.28
     value: "US"
    }
    1: {
     attackLikelihood: 0.68
     proportionInAttack: 0.09
     proportionInBaseline: 0.01
     value: "DE"
    }
    2: {
     attackLikelihood: 0.74
     proportionInAttack: 0.05
     proportionInBaseline: 0
     value: "MD"
    }
   ]
  }
   2: {
   name: "UserAgent"
   significantValues: [
    0: {
     attackLikelihood: 0.92
     proportionInAttack: 0.85
     proportionInBaseline: 0
     value: "Unusual browser"
    }
    1: {
     attackLikelihood: 0.87
     proportionInAttack: 0.7
     proportionInBaseline: 0.1
     missing: true
    }
   ]
  }
 ]
 suggestedRule: [
  0: {
   action: "DENY"
   evaluation: {
     impactedAttackProportion: 0.95
     impactedBaselineProportion: 0.001
   }
   expression: "evaluateAdaptiveProtection('11275630857957031521')"
  }
 ]
Attack_size: 5000
}
}
...

Vous pouvez déployer des règles suggérées en copiant l'expression CEL figurant dans la signature de la règle, puis en la collant dans la condition de correspondance d'une nouvelle règle ou en cliquant sur le bouton Appliquer, dans le tableau de bord Adaptive Protection situé dans l'interface utilisateur de Google Cloud Armor.

Pour déployer la règle, vous devez créer une règle dans la stratégie de sécurité Google Cloud Armor qui protège les services de backend ciblés identifiés par l'alerte. Lors de la configuration de la règle, copiez et collez l'expression CEL contenue dans l'alerte dans le champ Match condition (Condition de correspondance) de la règle, puis définissez l'action de la règle sur deny. Dans l'exemple ci-dessus, vous copiez l'expression evaluateAdaptiveProtection('11275630857957031521') depuis la section suggestedRule de l'alerte.

Nous vous recommandons vivement de commencer par déployer la règle en mode aperçu, afin de pouvoir évaluer son impact sur le trafic de production. Lorsque vous effectuez cette opération, Google Cloud Armor journalise l'action et le trafic associé chaque fois que la règle est déclenchée, mais aucune action n'est effectuée sur le trafic correspondant.

En outre, si votre stratégie de sécurité est associée à plusieurs services de backend, vérifiez si les effets de la nouvelle règle ont des effets indésirables sur l'un des services de backend. Dans ce cas, configurez de nouvelles stratégies de sécurité pour réduire les effets indésirables, et associez-les aux services de backend appropriés.

Déployer une règle Adaptive Protection suggérée
Déployer une règle Adaptive Protection suggérée (cliquez sur l'image pour l'agrandir)

Nous vous recommandons de définir pour la nouvelle règle une priorité plus élevée que celles de toutes les règles dont l'action est définie sur Autoriser (ou règles d'autorisation). En effet, pour produire l'impact attendu et un effet maximal sur la limitation de l'attaque, la règle doit être déployée à la priorité logique la plus élevée pour garantir que tout le trafic correspondant est bloqué par la règle. Les règles d'une stratégie de sécurité Google Cloud Armor sont évaluées dans l'ordre de priorité suivant : l'évaluation s'arrête après le déclenchement de la première règle correspondante et l'action associée à la règle est engagée. Si vous devez accorder une exception pour une partie du trafic ou certains clients spécifiques à partir de cette règle, vous pouvez créer une règle d'autorisation avec une priorité plus élevée, c'est-à-dire avec une valeur numérique plus faible. Pour plus d'informations sur la priorité des règles, consultez la page Ordre d'évaluation des règles.

Surveiller, envoyer des commentaires et signaler les erreurs d'événements

Vous devez disposer des autorisations suivantes pour afficher le tableau de bord Adaptive Protection ou interagir avec lui.

  • compute.securityPolicies.list
  • compute.backendServices.list
  • logging.logEntries.list

Après avoir activé Adaptive Protection sur une stratégie de sécurité Google Cloud Armor, vous pouvez consulter la page suivante dans le panneau Sécurité du réseau > Google Cloud Armor. Il affiche le volume du trafic au fil du temps pour la stratégie de sécurité et le service de backend sélectionnés, ainsi que la durée sélectionnée. Toutes les instances d'attaques potentielles signalées par Adaptive Protection sont annotées sur le graphique et répertoriées sous le graphique. Lorsque vous cliquez sur un événement d'attaque spécifique, une fenêtre latérale avec la signature de l'attaque et la règle suggérée s'affichent au format tabulaire. Ces informations figurent dans les entrées de journal Cloud Logging qui sont décrites dans la spécification des entrées Cloud Logging. Cliquez sur le bouton Appliquer pour ajouter la règle suggérée à la même stratégie de sécurité.

Tableau de bord Adaptive Protection
Tableau de bord Adaptive Protection (cliquez sur l'image pour l'agrandir)
Détails de l'alerte Adaptive Protection
Tableau de bord Adaptive Protection (cliquez sur l'image pour l'agrandir)

Tous les résultats de la fonctionnalité Adaptive Protection ne sont pas nécessairement considérés comme une attaque, étant donné les facteurs d'environnement et de contexte qui sont propres au service de backend protégé. Si vous déterminez que l'attaque potentielle décrite par l'alerte correspond à un comportement normal ou accepté, vous pouvez signaler une erreur d'événement pour contribuer à l'entraînement des modèles Adaptive Protection. À côté de chaque événement d'attaque répertorié sous le graphique se trouve un bouton qui affiche une fenêtre interactive, vous permettant de signaler une erreur d'événement avec certaines informations de contexte (facultatives). Le signalement d'une erreur d'événement permet de réduire la probabilité d'erreurs similaires à l'avenir. Au fil du temps, cela améliore la précision de la fonctionnalité Adaptive Protection.

Surveillance, alertes et journalisation

La télémétrie Adaptive Protection est envoyée à Cloud Logging et à Security Command Center. Le message de journal Adaptive Protection envoyé à Cloud Logging est décrit dans les sections précédentes de ce document. Une entrée de journal est générée chaque fois que la fonctionnalité Adaptive Protection détecte une attaque potentielle, et chaque entrée contient un score de confiance indiquant la fiabilité de l'anomalie signalée par le modèle pour le trafic observé. Pour affiner les alertes, vous pouvez configurer une stratégie d'alerte dans Cloud Logging afin de ne déclencher une alerte que lorsqu'un message de journal Adaptive Protection affiche un score de confiance supérieur à un seuil spécifié par l'utilisateur. Nous vous recommandons de commencer par un seuil faible, avec un niveau de confiance supérieur à 0,5, afin d'éviter de passer à côté d'avertissements d'attaques potentielles. Le seuil de confiance de la stratégie d'alerte peut être augmenté au fil du temps si les alertes présentent un taux inacceptable de trafic de référence affecté.

Le tableau de bord Security Command Center contient également les résultats d'Adaptive Protection. Ils se trouvent sur la fiche Google Cloud Armor dans la catégorie Attaques DDoS d'applications. Chaque résultat inclut les détails du service, le score de confiance et la signature associés à l'attaque, et un lien vers l'alerte spécifique dans le tableau de bord Adaptive Protection.

Spécification des entrées Cloud Logging

L'alerte Adaptive Protection envoyée à Cloud Logging se compose d'une entrée de journal contenant les éléments suivants :

  • Score de confiance de l'alerte : fiabilité selon laquelle l'événement observé par Adaptive Protection est bien une attaque.
  • Signature de l'attaque.
    • Nom de l'attribut : par exemple un en-tête de requête particulier, l'origine géographique.
    • Valeur de l'attribut : valeur observée dans le trafic malveillant.
    • Probabilité d'attaque : probabilité qu'une requête donnée soit malveillante, étant donné la valeur ci-dessus pour l'attribut approprié.
    • Proportion dans l'attaque : pourcentage du trafic d'attaque potentiel contenant cette valeur d'attribut.
    • Proportion dans la base de référence : pourcentage du trafic de référence normal contenant cette valeur d'attribut.
  • Règle suggérée
    • Condition de correspondance : expression à utiliser dans la condition de correspondance des règles pour identifier le trafic malveillant.
    • Taux de trafic de référence affecté : prévision du pourcentage de trafic légitime qui serait capturé par la règle suggérée.
    • Taux de trafic d'attaque affecté : prévision du pourcentage de trafic d'attaque qui serait capturé par la règle suggérée.

Présentation du machine learning et confidentialité

  • Données d'entraînement et données de détection
    • Adaptive Protection crée plusieurs modèles pour détecter les attaques potentielles et identifier leurs signatures. Les signaux utilisés par ces modèles pour déterminer si une attaque est en cours sont établis à partir des métadonnées observées du trafic de requêtes entrantes provenant de vos projets. Ces métadonnées incluent : l'adresse IP source, la géographie source et les valeurs de certains en-têtes de requêtes HTTP.
    • Les caractéristiques réelles utilisées par les modèles sont des propriétés statistiques dérivées des signaux mentionnés ci-dessus. En d'autres termes, les données d'entraînement des modèles n'incluent pas les valeurs réelles de métadonnées, telles que les adresses IP et/ou les valeurs d'en-tête de requête.
    • Un ensemble commun de modèles de détection, qui ne sont entraînés qu'avec des données artificielles, sont partagés par tous les clients afin de déterminer si une attaque se déroule ou non, lorsqu'Adaptive Protection est activé pour la première fois. Lorsque vous signalez un faux événement d'attaque et que les modèles sont mis à jour à l'aide de signaux de trafic spécifiques à vos projets, ces modèles sont alors spécifiques à vos projets et ne sont utilisés par aucun autre client.
  • Données pour générer des signatures
    • Lorsqu'Adaptive Protection détermine qu'une attaque potentielle est en cours, il génère une signature d'attaque qui va permettre d'atténuer efficacement et rapidement l'attaque. Pour ce faire, après avoir activé Adaptive Protection sur une stratégie de sécurité, les métriques de trafic et les métadonnées de requête concernant un service de backend (associé à la stratégie de sécurité) sont enregistrées de manière continue afin d'apprendre les caractéristiques du trafic de référence.
    • Étant donné qu'Adaptive Protection a besoin d'apprendre le trafic de référence, il n'émet pas d'alertes sur des attaques potentielles avant au moins une heure après son activation.

Étape suivante