Chargement...
Aucun résultat.

Mettez en pratique vos compétences dans la console Google Cloud

Accédez à plus de 700 ateliers et cours

Protéger les API avec Apigee X et Cloud Armor

Atelier 1 heure 30 minutes universal_currency_alt 1 crédit show_chart Débutant
info Cet atelier peut intégrer des outils d'IA pour vous accompagner dans votre apprentissage.
Accédez à plus de 700 ateliers et cours

GSP909

Logo des ateliers d'auto-formation Google Cloud

Présentation

Dans cet atelier, vous allez utiliser une règle de protection contre les menaces Apigee X pour protéger les API contre les menaces basées sur le contenu. Vous ajouterez également Cloud Armor à un équilibreur de charge HTTPS externe global pour fournir des fonctionnalités de pare-feu d'application Web telles que la protection contre les attaques par déni de service distribué (DDoS), l'atténuation des risques faisant partie du top 10 de l'OWASP et le contrôle des accès basé sur l'adresse IP et la géolocalisation.

Un équilibreur de charge et un groupe d'instances géré de VM de pont ont été créés pour fournir un accès à votre instance d'exécution. L'architecture de cette configuration est illustrée ci-dessous :

Diagramme de flux illustrant l'architecture de configuration

Les appels d'API entrants accèdent au projet client via un équilibreur de charge HTTPS externe global. L'équilibreur de charge HTTPS externe ne peut pas transférer les appels vers le projet locataire. Au lieu de cela, l'équilibreur de charge transfère la requête à un groupe d'instances géré de VM de pont dans le projet client. Ces VM de pont se trouvent dans le réseau appairé connecté à l'instance d'exécution Apigee, ce qui leur permet de transférer les appels d'API vers l'instance d'exécution.

Tout le trafic HTTP envoyé à l'équilibreur de charge sera transféré aux VM de pont, puis à l'instance d'exécution Apigee. Vous allez ajouter des règles de sécurité Cloud Armor pour empêcher l'envoi de trafic spécifique à l'environnement d'exécution.

Les attaques JSON et XML utilisent des charges utiles conçues pour surcharger les analyseurs JSON et XML, et provoquer des attaques par déni de service au niveau de l'application. Cloud Armor ne détecte pas ces types d'attaques, mais Apigee en est capable. Les règles JSONThreatProtection et XMLThreatProtection peuvent détecter ces charges utiles malveillantes sans les charger dans un analyseur. Vous allez utiliser la règle JSONThreatProtection pour vous protéger contre les charges utiles JSON incorrectes.

Les instructions de cet atelier s'appliquent aux organisations payantes et aux organisations d'évaluation.

Objectifs

Dans cet atelier, vous allez apprendre à effectuer les tâches suivantes :

  • Utiliser les règles de protection contre les menaces d'Apigee pour bloquer les charges utiles JSON et XML malveillantes
  • Créer une stratégie Cloud Armor
  • Créer une règle Cloud Armor pour bloquer et autoriser les requêtes
  • Appliquer une stratégie Cloud Armor à un équilibreur de charge
  • Tester une stratégie Cloud Armor à l'aide du trafic HTTP

Prérequis

Avant de cliquer sur le bouton "Démarrer l'atelier"

Lisez ces instructions. Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Démarrer l'atelier, indique combien de temps les ressources Google Cloud resteront accessibles.

Cet atelier pratique vous permet de suivre les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Des identifiants temporaires vous sont fournis pour vous permettre de vous connecter à Google Cloud le temps de l'atelier.

Pour réaliser cet atelier :

  • Vous devez avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome).
Remarque : Ouvrez une fenêtre de navigateur en mode incognito (recommandé) ou de navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
  • Vous disposez d'un temps limité. N'oubliez pas qu'une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Remarque : Utilisez uniquement le compte de participant pour cet atelier. Si vous utilisez un autre compte Google Cloud, des frais peuvent être facturés à ce compte. Remarque : Nous vous recommandons d'utiliser une nouvelle fenêtre de navigation privée pour effectuer cet atelier.

Démarrer l'atelier et se connecter à la console Google Cloud

  1. Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, une boîte de dialogue s'affiche pour vous permettre de sélectionner un mode de paiement. Sur la gauche, vous trouverez le panneau "Détails concernant l'atelier", qui contient les éléments suivants :

    • Le bouton "Ouvrir la console Google Cloud"
    • Le temps restant
    • Les identifiants temporaires que vous devez utiliser pour cet atelier
    • Des informations complémentaires vous permettant d'effectuer l'atelier
  2. Cliquez sur Ouvrir la console Google Cloud (ou effectuez un clic droit et sélectionnez Ouvrir le lien dans la fenêtre de navigation privée si vous utilisez le navigateur Chrome).

    L'atelier lance les ressources, puis ouvre la page "Se connecter" dans un nouvel onglet.

    Conseil : Réorganisez les onglets dans des fenêtres distinctes, placées côte à côte.

    Remarque : Si la boîte de dialogue Sélectionner un compte s'affiche, cliquez sur Utiliser un autre compte.
  3. Si nécessaire, copiez le nom d'utilisateur ci-dessous et collez-le dans la boîte de dialogue Se connecter.

    {{{user_0.username | "Username"}}}

    Vous trouverez également le nom d'utilisateur dans le panneau "Détails concernant l'atelier".

  4. Cliquez sur Suivant.

  5. Copiez le mot de passe ci-dessous et collez-le dans la boîte de dialogue Bienvenue.

    {{{user_0.password | "Password"}}}

    Vous trouverez également le mot de passe dans le panneau "Détails concernant l'atelier".

  6. Cliquez sur Suivant.

    Important : Vous devez utiliser les identifiants fournis pour l'atelier. Ne saisissez pas ceux de votre compte Google Cloud. Remarque : Si vous utilisez votre propre compte Google Cloud pour cet atelier, des frais supplémentaires peuvent vous être facturés.
  7. Accédez aux pages suivantes :

    • Acceptez les conditions d'utilisation.
    • N'ajoutez pas d'options de récupération ni d'authentification à deux facteurs (ce compte est temporaire).
    • Ne vous inscrivez pas à des essais sans frais.

Après quelques instants, la console Cloud s'ouvre dans cet onglet.

Remarque : Pour accéder aux produits et services Google Cloud, cliquez sur le menu de navigation ou saisissez le nom du service ou du produit dans le champ Recherche. Icône du menu de navigation et champ de recherche

Activer Cloud Shell

Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud. Cloud Shell vous permet d'accéder via une ligne de commande à vos ressources Google Cloud.

  1. Cliquez sur Activer Cloud Shell Icône Activer Cloud Shell en haut de la console Google Cloud.

  2. Passez les fenêtres suivantes :

    • Accédez à la fenêtre d'informations de Cloud Shell.
    • Autorisez Cloud Shell à utiliser vos identifiants pour effectuer des appels d'API Google Cloud.

Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET : . Le résultat contient une ligne qui déclare l'ID_PROJET pour cette session :

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.

  1. (Facultatif) Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list
  1. Cliquez sur Autoriser.

Résultat :

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Facultatif) Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project

Résultat :

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Remarque : Pour consulter la documentation complète sur gcloud, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.

Tâche 1 : Créer un flux partagé de protection contre les menaces JSON

Dans cette tâche, vous allez créer un flux partagé avec une règle JSONThreatProtection, puis utiliser un hook de flux pour l'activer pour toutes les API Apigee.

La règle JSONThreatProtection rejettera les requêtes JSON entrantes qui dépassent les limites spécifiées. En plaçant la règle dans un flux partagé et en associant le flux partagé à un hook de flux, la règle peut protéger n'importe quelle requête pour tous les proxys déployés dans un environnement.

Ouvrir la console Apigee

Pour ouvrir la console Apigee :

  • Dans la console Google Cloud, dans le champ Rechercher, saisissez Apigee, puis cliquez sur Apigee API Management dans les résultats de recherche.

La console Apigee s'ouvre. La page de destination propose des liens rapides vers des emplacements couramment utilisés.

  • Dans le menu de navigation (Menu de navigation), à côté de Apigee, cliquez sur Épingler (Icône Épingler).

Apigee est désormais épinglé au menu de navigation.

Créer le flux partagé

  1. Dans le menu de navigation, sélectionnez Développement de proxys > Flux partagés.

  2. Cliquez sur Créer.

    Un flux partagé peut contenir un ensemble de règles et de conditions, et peut être exécuté dans des proxys d'API ou d'autres flux partagés à l'aide d'une règle FlowCallout. Dans cet atelier, vous allez utiliser le flux partagé dans un hook de flux, qui l'associe à chaque proxy déployé dans l'organisation d'évaluation.

  3. Nommez le flux partagé protect-json, puis cliquez sur Créer.

  4. Cliquez sur l'onglet Développer.

  5. Dans le menu de gauche du flux partagé, dans la section Flux partagés, cliquez sur Par défaut.

  6. Dans le volet sharedflows/default.xml, cliquez sur Add policy step (Ajouter une étape de règle) (Icône "Ajouter une étape de règle").

  7. Pour Select policy (Sélectionner une règle), sélectionnez Créer une règle.

  8. Sélectionnez JSON Threat Protection (Protection contre les menaces JSON), puis définissez le nom à afficher et le nom sur JTP-Protect.

  9. Cliquez sur Ajouter.

    La règle JSONThreatProtection contient plusieurs éléments qui définissent des limites pour les requêtes JSON entrantes. En général, vous définissez ces limites en fonction des valeurs maximales de vos API. Dans ce cas, conservez la configuration par défaut de la règle.

    Cette règle ne s'exécutera que si l'en-tête Content-Type de la requête est défini sur application/json, ce qui indique que la requête entrante contient une charge utile JSON.

  10. Cliquez sur Enregistrer.

  11. Cliquez sur Déployer et, pour Environnement, sélectionnez eval.

  12. Cliquez sur Déployer, puis sur Confirmer.

Associer le flux partagé à un hook de flux

Le flux partagé sera associé au hook de flux de pré-proxy afin qu'il soit exécuté avant le proxy.

  1. Accédez à Management > Environments (Gestion > Environnements).

  2. Cliquez sur eval > Flow Hooks (Hooks de flux).

  3. Dans le menu déroulant de la ligne Pre-proxy (Pré-proxy), sélectionnez le flux partagé protect-json, puis cliquez sur Enregistrer.

    Vous testerez ce hook de flux dans une tâche ultérieure.

Cliquez sur Vérifier ma progression pour valider l'objectif. Créer un flux partagé et un hook de flux

Tâche 2 : Ajouter une stratégie de sécurité Cloud Armor

Dans cette tâche, vous allez ajouter une stratégie de sécurité Cloud Armor pour protéger votre équilibreur de charge et contrôler l'accès à vos API.

Cloud Armor est le pare-feu d'application Web de Google Cloud. Une seule stratégie Cloud Armor peut être spécifiée pour un équilibreur de charge. Dans cet atelier, vous allez utiliser une stratégie de sécurité Cloud Armor pour rejeter un trafic spécifique avant qu'il n'atteigne l'instance d'exécution Apigee, ce qui protège votre API.

Diagramme de flux illustrant l'architecture de configuration avec Cloud Armor en surbrillance

Remarque : L'équilibreur de charge ne peut pas être entièrement configuré tant que l'adresse IP de l'instance d'exécution Apigee n'est pas connue. Il est donc possible que l'équilibreur de charge affiche des instances non saines tant que sa configuration n'est pas terminée.

Créer une stratégie de sécurité

  1. Dans l'onglet "Console Cloud", dans le menu de navigation (bouton du menu de navigation), cliquez sur Afficher tous les produits, puis sélectionnez Sécurité réseau dans la section Mise en réseau et accédez à Règles Cloud Armor.

  2. Cliquez sur Créer une stratégie.

  3. Dans le champ Nom, spécifiez protect-apis.

    Cette stratégie de sécurité utilisera des règles pour bloquer le trafic spécifique destiné à nos API Apigee.

  4. Dans le champ Action de règle par défaut, sélectionnez Refuser.

    L'accès aux API sera refusé aux utilisateurs, sauf s'ils correspondent à une règle autorisant spécifiquement le trafic.

  5. Dans la liste déroulante État de refus, sélectionnez 403 (Accès interdit).

    Si une requête ne correspond à aucune règle autorisant le trafic, le code d'état "403 Interdit" est renvoyé à l'utilisateur.

  6. Cliquez sur Étape suivante.

Ajouter une règle de stratégie de sécurité pour autoriser les requêtes par code de pays d'origine

Cette règle n'autorisera que les requêtes provenant des pays spécifiés.

  1. Cliquez sur Ajouter une règle.

  2. Cliquez sur Mode avancé.

    Une règle en mode de base ne peut spécifier que des adresses IP ou des plages d'adresses IP à mettre en correspondance. Dans ce cas, vous souhaitez spécifier les codes pays autorisés.

  3. Pour Correspondance, spécifiez l'expression suivante :

    origin.region_code == 'US'

    Pour Cloud Armor, region_code est spécifié en tant que région ISO 3166-2. Cette règle correspond aux requêtes provenant des États-Unis.

  4. Dans le champ Action, sélectionnez Autoriser.

  5. Définissez la priorité sur 1000, puis cliquez sur ENREGISTRER LA MODIFICATION DE LA RÈGLE.

Ajouter une règle pour bloquer les attaques par injection SQL

Cette règle bloque les requêtes qui contiennent des entrées SQL susceptibles d'entraîner une injection SQL.

  1. Cliquez sur Ajouter une règle.

  2. Cliquez sur Mode avancé.

  3. Pour Correspondance, spécifiez l'expression suivante :

    evaluatePreconfiguredExpr('sqli-stable', ['owasp-crs-v030001-id942251-sqli', 'owasp-crs-v030001-id942420-sqli', 'owasp-crs-v030001-id942431-sqli', 'owasp-crs-v030001-id942460-sqli', 'owasp-crs-v030001-id942421-sqli', 'owasp-crs-v030001-id942432-sqli'])

    Cette expression spécifie une règle Cloud Armor préconfigurée. Les règles préconfigurées utilisent des signatures conformes aux normes de l'industrie Open Source pour détecter les requêtes malveillantes. Vous pouvez désactiver des signatures spécifiques en fournissant les noms des signatures à désactiver.

    Dans ce cas, les signatures de niveau de sensibilité 3 et 4 sont désactivées. Le niveau de sensibilité d'une signature, également appelé niveau de paranoïa, spécifie un compromis entre un niveau de sécurité plus élevé et un nombre plus important de faux positifs.

    Le niveau 1 est le niveau de sécurité par défaut. Il ne devrait que rarement, voire jamais, générer de faux positifs. Le niveau 2 ajoute une protection supplémentaire contre les attaques avancées et obscurcies. Les signatures de niveau 3 et 4 sont plus agressives et sont bien plus susceptibles de générer des faux positifs. Par exemple, les requêtes POST avec des charges utiles JSON simples peuvent être signalées par des signatures de niveau 3 ou 4.

  4. Laissez le champ Action défini sur Refuser et le champ État de refus défini sur 403 (Accès interdit).

  5. Définissez la priorité sur 500.

    Lorsqu'une règle de stratégie Cloud Armor est évaluée, la première règle rencontrée qui correspond à la requête spécifie l'action à entreprendre. La vérification de l'injection SQL doit avoir lieu avant la vérification de la région, car nous voulons rejeter les requêtes qui proviennent d'une région autorisée, mais qui contiennent également des schémas d'injection SQL. En choisissant un nombre de priorité plus petit, la vérification de l'injection SQL sera effectuée avant la vérification de la région.

  6. Cliquez sur ENREGISTRER LA MODIFICATION DE LA RÈGLE.

    Regardez le résumé à droite. La stratégie contient 3 règles. Les règles sont évaluées dans l'ordre croissant de leur numéro de priorité, et la première règle correspondante est utilisée.

    La première règle refuse l'accès si des schémas d'injection SQL sont détectés.

    La deuxième règle autorise l'accès si l'origine est les États-Unis.

    La dernière règle refuse l'accès à l'ensemble du trafic.

  7. Cliquez sur Créer une stratégie.

    L'onglet "Stratégies" indique que la nouvelle stratégie protect-apis ne comporte aucune cible, car vous ne l'avez pas encore associée à votre équilibreur de charge.

Associer la stratégie à l'équilibreur de charge

  1. À côté de protect-apis, cliquez sur le bouton de menu de la stratégie (bouton du menu "Stratégie"), puis sur Appliquer la stratégie à la cible.

  2. Dans le menu déroulant Backend Service 1 (Service backend 1), sélectionnez apigee-proxy-backend, puis cliquez sur Ajouter.

    La page de détails de la stratégie protect-apis doit bientôt indiquer que la stratégie s'applique à une cible.

    Remarque : La propagation des modifications Cloud Armor vers la cible peut prendre quelques minutes.

Cliquez sur Vérifier ma progression pour valider l'objectif. Ajouter une stratégie de sécurité Cloud Armor

Tâche 3 : Attendre la fin du provisionnement de l'instance Apigee

Dans cette tâche, vous allez attendre la fin du provisionnement de l'organisation d'évaluation Apigee.

Le provisionnement de l'organisation Apigee peut prendre un certain temps. Vous pouvez surveiller la progression du provisionnement de l'organisation à l'aide de l'API Apigee.

Démarrer le script de surveillance

  1. Dans Cloud Shell, vérifiez que la variable GOOGLE_CLOUD_PROJECT contient le nom de votre projet à l'aide de la commande suivante :

    echo ${GOOGLE_CLOUD_PROJECT}

    La variable GOOGLE_CLOUD_PROJECT doit contenir le nom de votre projet, qui est identique au nom de votre organisation Apigee.

  2. Si la variable GOOGLE_CLOUD_PROJECT n'est pas définie, définissez-la manuellement à l'aide d'une commande semblable à celle-ci, en remplaçant {project} par le nom de votre projet :

    export GOOGLE_CLOUD_PROJECT={project} Remarque : Les accolades doivent être supprimées lors de cette étape.
  3. Copiez la commande suivante dans Cloud Shell :

    export INSTANCE_NAME=eval-instance; export ENV_NAME=eval; export PREV_INSTANCE_STATE=; echo "waiting for runtime instance ${INSTANCE_NAME} to be active"; while : ; do export INSTANCE_STATE=$(curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://apigee.googleapis.com/v1/organizations/${GOOGLE_CLOUD_PROJECT}/instances/${INSTANCE_NAME}" | jq "select(.state != null) | .state" --raw-output); [[ "${INSTANCE_STATE}" == "${PREV_INSTANCE_STATE}" ]] || (echo; echo "INSTANCE_STATE=${INSTANCE_STATE}"); export PREV_INSTANCE_STATE=${INSTANCE_STATE}; [[ "${INSTANCE_STATE}" != "ACTIVE" ]] || break; echo -n "."; sleep 5; done; echo; echo "instance created, waiting for environment ${ENV_NAME} to be attached to instance"; while : ; do export ATTACHMENT_DONE=$(curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://apigee.googleapis.com/v1/organizations/${GOOGLE_CLOUD_PROJECT}/instances/${INSTANCE_NAME}/attachments" | jq "select(.attachments != null) | .attachments[] | select(.environment == \"${ENV_NAME}\") | .environment" --join-output); [[ "${ATTACHMENT_DONE}" != "${ENV_NAME}" ]] || break; echo -n "."; sleep 5; done; echo; echo "${ENV_NAME} environment attached, waiting for hello-world to be deployed"; while : ; do export ATTACHMENT_DONE=$(curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://apigee.googleapis.com/v1/organizations/${GOOGLE_CLOUD_PROJECT}/instances/${INSTANCE_NAME}/attachments" | jq "select(.attachments != null) | .attachments[] | select(.environment == \"${ENV_NAME}\") | .environment" --join-output); [[ "${ATTACHMENT_DONE}" != "${ENV_NAME}" ]] || break; echo -n "."; sleep 5; done; echo "***ORG IS READY TO USE***";

    Cette série de commandes utilise l'API Apigee pour déterminer quand l'instance d'exécution a été créée et l'environnement d'évaluation associé.

  4. Attendez que l'instance soit prête.

    Lorsque le texte ***ORG IS READY TO USE*** s'affiche, l'instance est prête.

    Remarque : Si la commande indique immédiatement que l'organisation est prête à être utilisée, il se peut que l'atelier ait été préchauffé avant que vous ne le commenciez.

    Pendant que vous attendez que l'organisation soit prête, vous pouvez consulter une présentation de Cloud Armor, des règles personnalisées et des règles préconfigurées.

Cliquez sur Vérifier ma progression pour valider l'objectif. Attendre que l'instance soit prête

Tâche 4 : Testez depuis une région autorisée

Dans cette tâche, vous allez vérifier que la stratégie de sécurité Cloud Armor protège vos API, mais autorise le trafic acceptable provenant de la région autorisée, et que le hook de flux protège contre les menaces JSON.

Une machine virtuelle nommée apigeex-test-vm a été créée automatiquement pour vous. Vous pouvez utiliser cette machine pour appeler l'API depuis les États-Unis.

  1. Dans Cloud Shell, ouvrez une connexion SSH à votre VM de test aux États-Unis :

    TEST_VM_ZONE=$(gcloud compute instances list --filter="name=('apigeex-test-vm')" --format "value(zone)") gcloud compute ssh apigeex-test-vm --zone=${TEST_VM_ZONE} --force-key-file-overwrite
  2. Si l'invite Do you want to continue (Y/n)? (Voulez-vous continuer (OUI/non) ?) s'affiche, appuyez sur Y pour continuer.

  3. Pour chaque question posée dans Cloud Shell, cliquez sur Entrée ou Retour pour spécifier la valeur par défaut.

    L'identité avec laquelle vous êtes connecté est propriétaire du projet. La connexion SSH à cette machine est donc autorisée.

    Votre session Cloud Shell s'exécute désormais dans la VM.

  4. Vérifiez que le proxy d'API hello-world est désormais accessible :

    export PREV_STATUS_CODE=; echo "waiting for hello-world to be accessible"; while : ; do export STATUS_CODE=$(curl -k -s -o /dev/null -w "%{http_code}" --max-time 5 -X GET "https://eval.example.com/hello-world"); [[ "${STATUS_CODE}" == "${PREV_STATUS_CODE}" ]] || (echo; echo "STATUS_CODE=${STATUS_CODE}"); export PREV_STATUS_CODE=${STATUS_CODE}; [[ "${STATUS_CODE}" != "200" ]] || break; echo -n "."; sleep 5; done; echo; echo "***HELLO-WORLD IS ACCESSIBLE***";

    Le déploiement du proxy hello-world et sa disponibilité via l'équilibreur de charge externe peuvent prendre un peu de temps. Lorsque ces commandes renvoient ***HELLO-WORLD IS ACCESSIBLE***, le proxy hello-world est disponible.

  5. Appelez le proxy d'API hello-world déployé dans l'environnement eval :

    curl -i -k "https://eval.example.com/hello-world"

    Une entrée DNS pour le nom d'hôte eval.example.com a été créée avec l'adresse IP entrante de votre équilibreur de charge.

    L'option -i affiche le code d'état et l'en-tête de la réponse.

    L'option -k ignore la vérification du certificat TLS de l'équilibreur de charge, car le certificat TLS utilisé pour l'équilibreur de charge est un certificat autosigné, et non un certificat vérifié par une autorité de certification connue.

    Remarque : L'option -k permettant de contourner la validation des certificats ne doit pas être utilisée dans un environnement de production.

    La VM se trouve aux États-Unis. Votre commande curl doit donc renvoyer la réponse Hello, Guest! générée par le proxy hello-world :

    HTTP/2 200 x-powered-by: Apigee access-control-allow-origin: * x-frame-options: ALLOW-FROM RESOURCE-URL x-xss-protection: 1 x-content-type-options: nosniff content-type: text/plain; charset=utf-8 content-length: 13 etag: W/"d-GHB1ZrJKk/wdVTdB/jgBsw" date: Mon, 30 Aug 2021 19:14:45 GMT alt-svc: clear alt-svc: clear x-request-id: b5532b95-c051-4f21-a131-07da1574edc3 server: apigee via: 1.1 google, 1.1 google Hello, Guest!
  6. Appelez le proxy hello-world à l'aide de cette commande :

    curl -i -k -X POST "https://eval.example.com/hello-world" -H "Content-Type: application/json" -d '{ "ThisIsAReallyLongElementNameIMeanReallyReallyReallyLong": 42 }'

    Cette requête dépasse la limite ObjectEntryNameLength spécifiée dans la règle JSONThreatProtection incluse dans le flux partagé. Le flux partagé est associé à tous les proxys d'API à l'aide du hook de flux pre-proxy.

    La réponse doit ressembler à ceci :

    HTTP/2 500 content-type: application/json x-request-id: 5360a9fb-b0b9-4fce-968c-22c2d3fd57dd content-length: 235 date: Mon, 30 Aug 2021 19:16:17 GMT server: apigee via: 1.1 google alt-svc: clear {"fault":{"faultstring":"JSONThreatProtection[JTP-Protect]: Execution failed. reason: JSONThreatProtection[JTP-Protect]: Exceeded object entry name length at line 1","detail":{"errorcode":"steps.jsonthreatprotection.ExecutionFailed"}}} Remarque : Le code d'état par défaut renvoyé est 500, ce qui indique une erreur de serveur. Dans le cadre d'une utilisation en production de cette règle, il est plus judicieux de réécrire l'erreur indiquant un problème avec la requête (comme "400 Bad Request"), et non une erreur de serveur.
  7. Essayez d'appeler le proxy d'API hello-world à l'aide de cette commande :

    curl -i -k "https://eval.example.com/hello-world?item=name'%20OR%20'a'='a"

    Le paramètre de requête item utilise un modèle d'injection SQL qui peut avoir des conséquences indésirables si une requête SQL est créée en concaténant des chaînes.

    Cloud Armor détecte le modèle d'injection SQL et bloque la requête, en renvoyant une réponse "403 Interdit" :

    HTTP/2 403 content-length: 134 content-type: text/html; charset=UTF-8 date: Thu, 22 Jul 2021 18:50:03 GMT alt-svc: clear <!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden Remarque : La propagation des règles Cloud Armor peut prendre quelques minutes. Si la requête n'est pas bloquée, réessayez l'appel jusqu'à ce qu'elle le soit.
  8. Saisissez exit pour fermer la connexion SSH à votre machine virtuelle située aux États-Unis.

Tâche 5 : Tester la règle de sécurité à partir d'une région non autorisée

Dans cette tâche, vous allez vérifier que la stratégie de sécurité Cloud Armor n'autorise pas le trafic pour une région qui n'a pas été ajoutée à la liste d'autorisation.

Une machine virtuelle nommée apigeex-outside-us a été créée automatiquement dans la zone . Vous pouvez utiliser cette machine pour appeler l'API depuis l'extérieur des États-Unis.

  1. Dans Cloud Shell, ouvrez une connexion SSH à votre VM de test située en dehors des États-Unis :
export SECOND_VM_NAME=apigeex-outside-us export SECOND_VM_ZONE={{{project_0.default_zone_2| Secondary Zone}}} gcloud compute ssh ${SECOND_VM_NAME} --zone=${SECOND_VM_ZONE} --force-key-file-overwrite
  1. Si vous êtes invité à donner votre autorisation, cliquez sur Autoriser.

  2. Pour chaque question posée dans Cloud Shell, cliquez sur Entrée ou Retour pour spécifier la valeur par défaut.

    L'identité avec laquelle vous êtes connecté est propriétaire du projet. La connexion SSH à cette machine est donc autorisée.

    Votre session Cloud Shell s'exécute désormais dans la VM.

  3. Appelez le proxy d'API hello-world déployé dans l'environnement eval :

    curl -i -k "https://eval.example.com/hello-world"

    La VM ne se trouve pas aux États-Unis. Cloud Armor doit donc bloquer la requête et renvoyer une erreur 403 :

    HTTP/2 403 content-length: 134 content-type: text/html; charset=UTF-8 date: Thu, 22 Jul 2021 22:47:06 GMT alt-svc: clear <!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden

Tâche 6 : Explorer la surveillance des stratégies pour Cloud Armor

Dans cette tâche, vous allez consulter le tableau de bord des stratégies Cloud Armor dans Cloud Monitoring.

  1. Dans l'onglet de la console Cloud, accédez à Monitoring > Tableaux de bord.

  2. Cliquez sur Network Security Policies (Stratégies de sécurité réseau).

    Ce tableau de bord indique le taux de requêtes autorisées et bloquées pour toutes les stratégies Cloud Armor. Vous n'avez actuellement qu'une seule stratégie.

  3. Dans le volet Règles, cliquez sur protect-apis.

    Ce tableau de bord indique le taux de requêtes autorisées et bloquées pour la stratégie protect-apis.

    Pour enregistrer les détails de chaque requête, vous devez activer la journalisation des requêtes pour l'équilibreur de charge.

Félicitations !

Dans cet atelier, vous avez créé une stratégie Cloud Armor et l'avez utilisée pour refuser ou autoriser le trafic entrant en fonction de vos règles Cloud Armor.

Étapes suivantes et informations supplémentaires

Formations et certifications Google Cloud

Les formations et certifications Google Cloud vous aident à tirer pleinement parti des technologies Google Cloud. Nos cours portent sur les compétences techniques et les bonnes pratiques à suivre pour être rapidement opérationnel et poursuivre votre apprentissage. Nous proposons des formations pour tous les niveaux, à la demande, en salle et à distance, pour nous adapter aux emplois du temps de chacun. Les certifications vous permettent de valider et de démontrer vos compétences et votre expérience en matière de technologies Google Cloud.

Dernière mise à jour du manuel : 28 janvier 2025

Dernier test de l'atelier : 28 janvier 2025

Copyright 2025 Google LLC. Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.

Avant de commencer

  1. Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
  2. Les ateliers doivent être effectués dans le délai imparti et ne peuvent pas être mis en pause. Si vous quittez l'atelier, vous devrez le recommencer depuis le début.
  3. En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.

Utilisez la navigation privée

  1. Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
  2. Cliquez sur Ouvrir la console en navigation privée

Connectez-vous à la console

  1. Connectez-vous à l'aide des identifiants qui vous ont été attribués pour l'atelier. L'utilisation d'autres identifiants peut entraîner des erreurs ou des frais.
  2. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
  3. Ne cliquez pas sur Terminer l'atelier, à moins que vous n'ayez terminé l'atelier ou que vous ne vouliez le recommencer, car cela effacera votre travail et supprimera le projet.

Ce contenu n'est pas disponible pour le moment

Nous vous préviendrons par e-mail lorsqu'il sera disponible

Parfait !

Nous vous contacterons par e-mail s'il devient disponible

Un atelier à la fois

Confirmez pour mettre fin à tous les ateliers existants et démarrer celui-ci

Utilisez la navigation privée pour effectuer l'atelier

Ouvrez une fenêtre de navigateur en mode navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.