GCP - App Engine Enum
Informations de base
Google Cloud Platform's (GCP) App Engine est une plateforme robuste et sans serveur conçue pour le développement et l'hébergement d'applications web à grande échelle. La conception de cette plateforme met l'accent sur la rationalisation du processus de développement et l'amélioration de la gestion des applications. Les principales fonctionnalités et avantages de l'App Engine de GCP incluent :
Architecture sans serveur : App Engine gère automatiquement l'infrastructure, y compris la provision de serveurs, la configuration et la mise à l'échelle. Cela permet aux développeurs de se concentrer sur l'écriture de code sans se soucier du matériel sous-jacent.
Mise à l'échelle automatique : App Engine peut mettre automatiquement à l'échelle votre application en réponse à la quantité de trafic qu'elle reçoit. Il s'adapte pour gérer l'augmentation du trafic et se réduit lorsque le trafic diminue, aidant à optimiser les coûts et les performances.
Prise en charge des langages et des runtimes : Il prend en charge des langages de programmation populaires tels que Java, Python, Node.js, Go, Ruby, PHP et .NET. Vous pouvez exécuter vos applications dans un environnement standard ou flexible. L'environnement standard est plus restrictif mais hautement optimisé pour des langages spécifiques, tandis que l'environnement flexible permet plus de personnalisation.
Services intégrés : App Engine s'intègre à de nombreux autres services GCP, tels que Cloud SQL, Cloud Storage, Cloud Datastore, et plus encore. Cette intégration simplifie l'architecture des applications basées sur le cloud.
Versioning et répartition du trafic : Vous pouvez déployer facilement plusieurs versions de votre application et ensuite répartir le trafic entre elles pour des tests A/B ou des déploiements progressifs.
Informations sur l'application : App Engine fournit des services intégrés tels que le journalisation, l'authentification des utilisateurs, et une suite d'outils de développement pour surveiller et gérer les applications.
Sécurité : Il offre des fonctionnalités de sécurité intégrées telles que le versioning de l'application, des certificats SSL/TLS pour des connexions sécurisées, et la gestion des identités et des accès.
Pare-feu
Un pare-feu simple peut être configuré pour les instances exécutant les applications avec les options suivantes :
SA
Le compte de service par défaut utilisé par ces applications est <nom-projet>@appspot.gserviceaccount.com
qui a le rôle Éditeur sur le projet et les SAs à l'intérieur de l'instance de l'App Engine s'exécutent avec une portée cloud-platform (entre autres).
Stockage
Le code source et les métadonnées sont automatiquement stockés dans des buckets avec des noms tels que <id-projet>.appspot.com
et staging.<id-projet>.appspot.com
et <pays>.<id-projet>.appspot.com
Chaque fichier de l'application est stocké avec le sha1 du contenu comme nom de fichier :
À l'intérieur du dossier ae
de staging.<id-projet>.appspot.com
, un dossier par version existe avec les fichiers de code source et un fichier manifest.json
qui décrit les composants de l'application :
Conteneurs
L'application web sera finalement exécutée à l'intérieur d'un conteneur et Code Build est utilisé pour construire le conteneur.
URLs & Régions
La page web par défaut sera exposée à l'URL <project-uniq-name>.appspot.com
bien que l'URL des anciennes versions sera légèrement différente, comme https://20240117t001540-dot-<project-uniq-name>.uc.r.appspot.com
(notez le timestamp initial).
Il pourrait sembler qu'il n'est possible de déployer qu'une seule application web App Engine par région, mais il est possible d'indiquer service: <nom-du-service>
dans le fichier app.yml
et de créer un nouveau service (un nouveau site web). Le format de l'URL pour ce nouveau site web sera <nom-du-service>-dot-<project-uniq-name>.appspot.com
.
Énumération
Chaque fois que vous téléchargez un nouveau code sur l'application, une nouvelle version est créée. Toutes les versions sont stockées et ont même une URL pour y accéder. Ainsi, modifier le code d'une ancienne version pourrait être une excellente technique de persistance.
Comme avec les Cloud Functions, il est possible que l'application dépende de secrets auxquels on accède au moment de l'exécution via des variables d'environnement. Ces variables sont stockées dans un fichier app.yaml
qui peut être consulté comme suit :
Élévation de privilèges
pageGCP - AppEngine PrivescÉnumération non authentifiée
pageGCP - App Engine Unauthenticated EnumPost-exploitation
pageGCP - App Engine Post ExploitationPersistance
pageGCP - App Engine PersistenceDernière mise à jour