1. Introduction
Les règles de sécurité Google Cloud Armor Edge vous permettent de limiter l'accès aux objets mis en cache sur Google Cloud CDN et Google Cloud Storage. Il peut s'agir, par exemple, de s'assurer que vos utilisateurs n'accèdent pas aux objets des buckets de stockage situés dans des zones géographiques restreintes ou de s'assurer que votre distribution multimédia filtre en fonction des zones géographiques pour lesquelles vous disposez d'une licence pour le faire.
Dans cet atelier, nous allons créer un bucket GCS, y importer une image, l'associer à un équilibreur de charge, puis activer les règles Cloud CDN et Edge Security sur celui-ci.
Points abordés
- Configurer un bucket Cloud Storage avec du contenu pouvant être mis en cache
- Créer une règle de sécurité périphérique pour protéger le contenu
- Comment vérifier que la règle de sécurité Edge fonctionne comme prévu
Prérequis
- Connaissances de base sur la mise en réseau et le protocole HTTP
- Connaissances de base de la ligne de commande Unix/Linux
2. Préparation
Configuration de l'environnement au rythme de chacun
- Connectez-vous à la console Google Cloud, puis créez un projet ou réutilisez un projet existant. (Si vous ne possédez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.)
- Le nom du projet est le nom à afficher pour les participants au projet. Il s'agit d'une chaîne de caractères qui n'est pas utilisée par les API Google, et que vous pouvez modifier à tout moment.
- L'ID du projet doit être unique sur l'ensemble des projets Google Cloud et doit être immuable (vous ne pouvez pas le modifier une fois que vous l'avez défini). Cloud Console génère automatiquement une chaîne unique dont la composition importe peu, en général. Dans la plupart des ateliers de programmation, vous devrez référencer l'ID du projet (généralement identifié comme
PROJECT_ID
), donc s'il ne vous convient pas, générez-en un autre au hasard ou définissez le vôtre, puis vérifiez s'il est disponible. Il est ensuite "gelé" une fois le projet créé. - La troisième valeur est le numéro de projet, utilisé par certaines API. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
- Vous devez ensuite activer la facturation dans Cloud Console afin d'utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour arrêter les ressources afin d'éviter qu'elles ne vous soient facturées après ce tutoriel, suivez les instructions de nettoyage indiquées à la fin de l'atelier. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai gratuit pour bénéficier d'un crédit de 300 $.
Démarrer Cloud Shell
Bien que Google Cloud puisse être utilisé à distance depuis votre ordinateur portable, nous allons nous servir de Google Cloud Shell pour cet atelier de programmation, un environnement de ligne de commande exécuté dans le cloud.
Depuis la console GCP, cliquez sur l'icône Cloud Shell de la barre d'outils située dans l'angle supérieur droit :
Le provisionnement et la connexion à l'environnement prennent quelques instants seulement. Une fois l'opération terminée, le résultat devrait ressembler à ceci :
Cette machine virtuelle contient tous les outils de développement nécessaires. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Vous pouvez réaliser toutes les activités de cet atelier dans un simple navigateur.
Avant de commencer
Dans Cloud Shell, assurez-vous que l'ID de votre projet est configuré.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] PROJECT_ID=[YOUR-PROJECT-NAME] echo $PROJECT_ID
Activer les API
Activer tous les services nécessaires
gcloud services enable compute.googleapis.com gcloud services enable logging.googleapis.com gcloud services enable monitoring.googleapis.com
3. Créer un bucket Cloud Storage
Dans Cloud Console, accédez au menu de navigation > Cloud Storage > Navigateur. Cliquez sur CRÉER UN BUCKET:
Règles pour les noms de buckets :
- N'incluez aucune information sensible dans le nom des buckets, car leur espace de noms est global et public.
- Les noms de buckets ne doivent contenir que des lettres minuscules, des chiffres, des tirets (-), des traits de soulignement (_) et des points (.). Les noms contenant des points doivent être validés.
- Les noms de buckets doivent commencer et se terminer par un chiffre ou une lettre.
- Les noms de buckets doivent compter entre 3 et 63 caractères. Ceux qui comportent des points peuvent contenir jusqu'à 222 caractères, mais chaque composant séparé par un point ne peut pas posséder plus de 63 caractères.
- Les noms de buckets ne peuvent pas correspondre à une adresse IP au format décimal à points (par exemple, 192.168.5.4).
- Les noms de buckets ne peuvent pas commencer par le préfixe "goog".
- Les noms de buckets ne peuvent pas contenir "google" ni des termes semblables à "google".
- De plus, pour la conformité DNS et la compatibilité future, vous ne devez pas utiliser de traits de soulignement (_) ni un point adjacent à un autre point ou à un tiret. Par exemple, ".." ou "-." ou ".-" ne sont pas autorisés dans les noms DNS.
Cliquez sur CONTINUER.
Type d'emplacement:région
Emplacement:sélectionnez une région loin de vous
Cliquez sur CONTINUER.
Classe de stockage par défaut:Standard
Cliquez sur CONTINUER.
Décochez la case Appliquer la protection contre l'accès public sur ce bucket sous "Empêcher l'accès public".
Sélectionnez Fine Grained (Ultraprécis) sous "Contrôle des accès".
Cliquez sur CONTINUER.
Une fois votre bucket configuré, cliquez sur CRÉER:
Voilà ! Vous venez de créer un bucket Cloud Storage.
4. Importer un objet dans votre bucket
À présent, vous devez importer un objet dans un bucket.
Commencez par télécharger cette image dans une instance temporaire dans Cloud Shell. Dans l'exemple ci-dessous, l'image Google de la page d'accueil Google est utilisée.
Depuis Cloud Shell
wget --output-document google.png https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
Exécutez la commande "gsutil cp" pour importer l'image depuis l'emplacement où vous l'avez enregistrée dans le bucket que vous avez créé:
Depuis Cloud Shell
gsutil cp google.png gs://YOUR-BUCKET-NAME
Supprimez maintenant l'image téléchargée :
Depuis Cloud Shell
rm google.png
Localisez votre objet, cliquez sur les trois points à droite et modifiez les autorisations pour les rendre publiques.
5. Créer un équilibreur de charge
Nous allons maintenant créer un équilibreur de charge HTTP.
Accédez à Mise en réseau >> Services réseau >> Équilibrage de charge >> Créer un équilibreur de charge >> Équilibreur de charge HTTP >> Internet vers mes VM >> Équilibreur de charge HTTP(S) classique
Commencez par donner un nom à l'équilibreur de charge que vous allez créer.
Créer un bucket backend
Créez un bucket backend (le bucket que vous venez de créer), puis sélectionnez "Activer CDN" et "Mettre en cache le contenu statique". Cliquez sur Créer.
Créer des règles d'hôte et de chemin d'accès
Accédez à "Règles d'hôte et de chemin d'accès" sur la gauche. Nous allons utiliser une simple règle d'hôte/de chemin d'accès et envoyer n'importe quelle requête au bucket.
Créer une configuration de frontend
Sélectionnez la configuration de l'interface. Pour la configuration de l'interface, nous utiliserons HTTP (bien que HTTPS fonctionne également si vous disposez d'un certificat) et une adresse IP éphémère. Nous vérifierons également que vous avez sélectionné le réseau Premium.
Cliquez sur "Créer".
Obtenir l'adresse IP de l'équilibreur de charge
Pour obtenir l'adresse IP de l'équilibreur de charge depuis la console, cliquez sur son nom dans la liste des équilibreurs de charge associés à votre projet.
Interroger l'équilibreur de charge
Après quelques minutes, essayez d'interroger l'équilibreur de charge sur l'objet que vous avez importé. Vous aurez besoin de l'adresse IP de l'équilibreur de charge et du nom de l'image. La commande est structurée comme suit:
Depuis le terminal
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
Sortie
armanrye-macbookpro% curl -svo /dev/null http://34.98.81.123/google.png * Trying 34.98.81.123... * TCP_NODELAY set * Connected to 34.98.81.123 (34.98.81.123) port 80 (#0) > GET /google.png HTTP/1.1 > Host: YOUR_IP > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 200 OK < X-GUploader-UploadID: ADPycdtoILI76KVsvBvdVGvSfzaxys1m3zYqCepBrmJxAI48ni24cWCRIdNu-53PX3DS6iycxp6xwFbMpwtcHHZQUQmEBxAgng < Expires: Mon, 13 Dec 2021 22:58:26 GMT < Date: Mon, 13 Dec 2021 21:58:26 GMT < Cache-Control: public, max-age=3600 < Last-Modified: Mon, 13 Dec 2021 21:45:57 GMT < ETag: "8f9327db2597fa57d2f42b4a6c5a9855" < x-goog-generation: 1639431957957903 < x-goog-metageneration: 2 < x-goog-stored-content-encoding: identity < x-goog-stored-content-length: 5969 < Content-Type: image/png < x-goog-hash: crc32c=TeiHTA== < x-goog-hash: md5=j5Mn2yWX+lfS9CtKbFqYVQ== < x-goog-storage-class: STANDARD < Accept-Ranges: bytes < Content-Length: 5969 < Server: UploadServer
Vérifiez que votre contenu est diffusé à partir du CDN via CDN ou la surveillance de l'équilibrage de charge. Vous devriez pouvoir vous rapprocher d'un taux de réussite de 100 %. Si vous devez exécuter quelques requêtes, vous pouvez procéder comme suit :
Depuis le terminal
#for i in `seq 1 50`; do curl http://%loadbalncer-IP%/google.png; done
Vérifier le contenu diffusé par Cloud CDN
Vérifiez que vous diffusez du trafic à partir du CDN en accédant à Services réseau >> CDN
6. Supprimer l'objet de GCS
Maintenant que le cache est rempli, supprimons l'objet du bucket. Cela nous permet d'appliquer la règle au cache et non au backend.
Accédez à Cloud Storage >> %nom du bucket% >> des objets
Sélectionnez l'image et supprimez-la.
7. Créer une règle de sécurité périphérique pour le cache de votre CDN
Accédez à Sécurité du réseau >> Cloud Armor, puis cliquez sur "Créer une règle"
Sélectionnez les options suivantes :
Type de règle: stratégie de sécurité périphérique
Action par défaut: Refuser
Appliquez la règle à votre bucket backend.
8. Valider la stratégie de sécurité périphérique
Maintenant que nous avons créé une stratégie de sécurité Edge devant notre bucket backend, vérifions qu'elle fonctionne comme prévu.
Vérifier la stratégie de sécurité
Après quelques minutes, vous pouvez vérifier que la règle Cloud Armor est en cours d'exécution. Depuis la ligne de commande, l'exécution de la commande suivante renvoie une erreur 403
Depuis le terminal
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
Sortie
curl -svo /dev/null http://34.98.81.123/google.png * Trying 34.98.81.123... * TCP_NODELAY set * Connected to 34.98.81.123 (34.98.81.123) port 80 (#0) > GET /google.png HTTP/1.1 > Host: YOUR_IP > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 403 Forbidden < X-GUploader-UploadID: ADPycdtS6FtJOGIsiWYDrAAE8VFeQuNutcvbGoQe2t8EZxsuspVtmCjyiTv_P3CNktroHMOGFXkTCfG-Jj-rUO60ZGPpEbpqcw < Content-Type: application/xml; charset=UTF-8 < Content-Length: 111 < Date: Mon, 13 Dec 2021 23:09:35 GMT < Expires: Mon, 13 Dec 2021 23:09:35 GMT < Cache-Control: private, max-age=0 < Server: UploadServer <
Examiner les journaux
Vous pouvez ensuite consulter les journaux pour voir la règle de sécurité périphérique appliquée. Accédez à Opérations >> Consignation >> Explorateur de journaux
Saisissez l'extrait ci-dessous dans la requête, puis cliquez sur "Exécuter".
resource.type:(http_load_balancer) AND jsonPayload.enforcedEdgeSecurityPolicy.name:(%SECURITY_POLICY_NAME%)
Notez la réponse 403 et la stratégie de sécurité appliquée.
Supprimer la règle de sécurité
Supprimez la stratégie de sécurité et interrogez l'objet du cache.
Accédez à Sécurité du réseau >> Cloud Armor >> %POLICY NAME% >> cibles et supprimer le bucket cible.
Confirmer la suppression de la règle
Après quelques minutes, envoyez une autre requête curl à la ressource dans le bucket de stockage. Cette fois, vous obtenez une réponse 200.
Depuis le terminal
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
Sortie
armanrye-macbookpro% curl -svo /dev/null http://34.98.81.123/google.png * Trying 34.98.81.123... * TCP_NODELAY set * Connected to 34.98.81.123 (34.98.81.123) port 80 (#0) > GET /google.png HTTP/1.1 > Host: YOUR_IP > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 200 OK < X-GUploader-UploadID: ADPycdtI7f49P3MSuZSZ8vl6RwfwmnIDJ59EeSKp7UPvLPawdaiRHXiNWLtseQTxUxceWOvSLvpYmT3pWVkV4qeIP7M < Date: Mon, 13 Dec 2021 23:06:46 GMT < Last-Modified: Mon, 13 Dec 2021 21:45:57 GMT < ETag: "8f9327db2597fa57d2f42b4a6c5a9855" < x-goog-generation: 1639431957957903 < x-goog-metageneration: 2 < x-goog-stored-content-encoding: identity < x-goog-stored-content-length: 5969 < Content-Type: image/png < x-goog-hash: crc32c=TeiHTA== < x-goog-hash: md5=j5Mn2yWX+lfS9CtKbFqYVQ== < x-goog-storage-class: STANDARD < Accept-Ranges: bytes < Content-Length: 5969 < Server: UploadServer < Age: 1621 < Cache-Control: public,max-age=3600 < { [775 bytes data] * Connection #0 to host 34.98.81.123 left intact * Closing connection 0
Félicitations ! Vous avez terminé cet atelier sur les règles de sécurité Cloud Armor Edge.
©2020 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms de société et de produit peuvent être des marques des sociétés auxquelles ils sont associés.
9. Nettoyage de l'atelier
Accédez à Sécurité du réseau >> Cloud Armor >> %POLICY NAME%, puis sélectionnez "Supprimer".
Accédez à Cloud Storage, sélectionnez le bucket que vous avez créé, puis cliquez sur "Supprimer".
Accédez à Mise en réseau >> Services réseau >> Équilibrage de charge. Sélectionnez l'équilibreur de charge que vous avez créé et cliquez sur "Supprimer".
10. Félicitations !
Vous avez terminé l'atelier de programmation "Défendre la mise en cache périphérique avec Cloud Armor".
Points abordés
- Configurer un bucket Cloud Storage et l'équilibreur de charge cloud associé
- Créer une règle de sécurité Cloud Armor Edge
- Comment vérifier que la règle de sécurité Edge fonctionne comme prévu
Étapes suivantes
- Essayez de configurer une règle de sécurité périphérique avec un succès de cache provenant d'une ressource Compute Engine.