GCP - App Engine Enum
Grundlegende Informationen
Google Cloud Platform's (GCP) App Engine ist eine robuste, serverlose Plattform, die speziell für die Entwicklung und das Hosting von Webanwendungen im großen Maßstab entwickelt wurde. Das Design dieser Plattform konzentriert sich darauf, den Entwicklungsprozess zu optimieren und die Verwaltbarkeit von Anwendungen zu verbessern. Die wichtigsten Funktionen und Vorteile von GCP's App Engine sind:
Serverlose Architektur: App Engine übernimmt automatisch die Infrastruktur, einschließlich Serverbereitstellung, Konfiguration und Skalierung. Dies ermöglicht es Entwicklern, sich auf das Schreiben von Code zu konzentrieren, ohne sich um die zugrunde liegende Hardware kümmern zu müssen.
Automatische Skalierung: App Engine kann Ihre Anwendung automatisch entsprechend des eingehenden Datenverkehrs skalieren. Es skaliert hoch, um mit zunehmendem Datenverkehr umzugehen, und skaliert herunter, wenn der Datenverkehr abnimmt, um Kosten und Leistung zu optimieren.
Unterstützung für Sprachen und Laufzeiten: Es unterstützt beliebte Programmiersprachen wie Java, Python, Node.js, Go, Ruby, PHP und .NET. Sie können Ihre Anwendungen in einer Standard- oder einer flexiblen Umgebung ausführen. Die Standardumgebung ist restriktiver, aber hochgradig optimiert für bestimmte Sprachen, während die flexible Umgebung mehr Anpassungsmöglichkeiten bietet.
Integrierte Dienste: App Engine integriert sich mit vielen anderen GCP-Diensten wie Cloud SQL, Cloud Storage, Cloud Datastore und mehr. Diese Integration vereinfacht die Architektur von Cloud-Anwendungen.
Versionierung und Traffic-Aufteilung: Sie können problemlos mehrere Versionen Ihrer Anwendung bereitstellen und dann den Datenverkehr zwischen ihnen aufteilen, um A/B-Tests oder schrittweise Rollouts durchzuführen.
Anwendungseinblicke: App Engine bietet integrierte Dienste wie Protokollierung, Benutzerauthentifizierung und eine Reihe von Entwicklertools zur Überwachung und Verwaltung von Anwendungen.
Sicherheit: Es bietet integrierte Sicherheitsfunktionen wie Anwendungsversionierung, SSL/TLS-Zertifikate für sichere Verbindungen und Identitäts- und Zugriffsverwaltung.
Firewall
Für die Instanzen, auf denen die Apps ausgeführt werden, kann eine einfache Firewall mit den folgenden Optionen konfiguriert werden:
SA
Das Standarddienstkonto, das von diesen Apps verwendet wird, ist <proj-name>@appspot.gserviceaccount.com
, das über die Editor-Rolle im Projekt und die SAs innerhalb der APP Engine-Instanz mit cloud-platform-Berechtigungsumfang (unter anderem) ausgeführt wird.
Speicher
Der Quellcode und die Metadaten werden automatisch in Buckets mit Namen wie <proj-id>.appspot.com
und staging.<proj-id>.appspot.com
und <country>.<proj-id>.appspot.com
gespeichert.
Jede Datei der App wird mit dem sha1 des Inhalts als Dateiname gespeichert:
Im ae
-Ordner von staging.<proj-id>.appspot.com
existiert pro Version ein Ordner mit den Quellcode-Dateien und der Datei manifest.json
, die die Komponenten der App beschreibt:
Container
Die Web-App wird letztendlich innerhalb eines Containers ausgeführt und Code Build wird verwendet, um den Container zu erstellen.
URLs & Regionen
Die Standard-Webseite wird unter der URL <project-uniq-name>.appspot.com
veröffentlicht, obwohl die URL älterer Versionen leicht unterschiedlich sein wird, wie z.B. https://20240117t001540-dot-<project-uniq-name>.uc.r.appspot.com
(beachten Sie den Anfangszeitstempel).
Es könnte so aussehen, als ob nur eine App Engine-Webanwendung pro Region bereitgestellt werden kann, aber es ist möglich, service: <servicename>
in der app.yml
anzugeben und einen neuen Dienst (eine neue Webseite) zu erstellen. Das Format der URL für diese neue Webseite wird <servicename>-dot-<project-uniq-name>.appspot.com
sein.
Enumeration
Jedes Mal, wenn Sie neuen Code in die App hochladen, wird eine neue Version erstellt. Alle Versionen werden gespeichert und haben sogar eine URL zum Zugriff auf sie. Das Ändern des Codes einer alten Version könnte eine großartige Persistenztechnik sein.
Wie bei Cloud Functions besteht die Möglichkeit, dass die Anwendung auf Secrets angewiesen ist, die zur Laufzeit über Umgebungsvariablen abgerufen werden. Diese Variablen sind in einer app.yaml
-Datei gespeichert, auf die wie folgt zugegriffen werden kann:
Privilege Escalation
pageGCP - AppEngine PrivescUnauthenticated Enum
pageGCP - App Engine Unauthenticated EnumPost Exploitation
pageGCP - App Engine Post ExploitationPersistence
pageGCP - App Engine PersistenceLast updated