GCP - App Engine Enum
Podstawowe Informacje
Google Cloud Platform's (GCP) App Engine to solidna, bezserwerowa platforma przeznaczona do tworzenia i hostowania aplikacji internetowych na dużą skalę. Projekt tej platformy koncentruje się na usprawnieniu procesu tworzenia i zwiększeniu zarządzalności aplikacji. Kluczowe cechy i korzyści GCP's App Engine obejmują:
Architektura bezserwerowa: App Engine automatycznie zarządza infrastrukturą, w tym dostarczaniem serwerów, konfiguracją i skalowaniem. Pozwala to programistom skupić się na pisaniu kodu bez martwienia się o sprzęt.
Automatyczne Skalowanie: App Engine może automatycznie skalować aplikację w odpowiedzi na ilość otrzymywanego ruchu. Skaluje się w górę, aby obsłużyć zwiększony ruch, i w dół, gdy ruch maleje, co pomaga optymalizować koszty i wydajność.
Wsparcie dla Języków i Środowisk Uruchomieniowych: Obsługuje popularne języki programowania, takie jak Java, Python, Node.js, Go, Ruby, PHP i .NET. Możesz uruchamiać swoje aplikacje w standardowym lub elastycznym środowisku. Standardowe środowisko jest bardziej restrykcyjne, ale wysoce zoptymalizowane dla określonych języków, podczas gdy elastyczne środowisko pozwala na większą personalizację.
Zintegrowane Usługi: App Engine integruje się z wieloma innymi usługami GCP, takimi jak Cloud SQL, Cloud Storage, Cloud Datastore i inne. Ta integracja upraszcza architekturę aplikacji opartych na chmurze.
Wersjonowanie i Podział Ruchu: Możesz łatwo wdrażać wiele wersji swojej aplikacji, a następnie dzielić ruch między nimi na potrzeby testów A/B lub stopniowego wdrażania.
Wgląd w Aplikacje: App Engine zapewnia wbudowane usługi, takie jak logowanie, uwierzytelnianie użytkowników i zestaw narzędzi dla programistów do monitorowania i zarządzania aplikacjami.
Bezpieczeństwo: Oferuje wbudowane funkcje bezpieczeństwa, takie jak wersjonowanie aplikacji, certyfikaty SSL/TLS dla bezpiecznych połączeń oraz zarządzanie tożsamością i dostępem.
Firewall
Prosty firewall można skonfigurować dla instancji uruchamiających aplikacje z następującymi opcjami:
SA
Domyślne konto usługi używane przez te aplikacje to <proj-name>@appspot.gserviceaccount.com
, które ma rolę Editor w projekcie, a konta SA wewnątrz instancji APP Engine działają z zakresem cloud-platform (między innymi).
Storage
Kod źródłowy i metadane są automatycznie przechowywane w bucketach o nazwach takich jak <proj-id>.appspot.com
, staging.<proj-id>.appspot.com
i <country>.<proj-id>.appspot.com
Każdy plik aplikacji jest przechowywany z sha1 zawartości jako nazwą pliku:
W folderze ae
z staging.<proj-id>.appspot.com
, istnieje jeden folder na wersję z plikami kodu źródłowego i plikiem manifest.json
, który opisuje komponenty aplikacji:
Kontenery
Aplikacja webowa będzie ostatecznie uruchamiana wewnątrz kontenera i Code Build jest używany do budowy kontenera.
URL-e i Regiony
Domyślna strona internetowa będzie dostępna pod adresem URL <project-uniq-name>.appspot.com
, chociaż URL starszych wersji będzie nieco inny, np. https://20240117t001540-dot-<project-uniq-name>.uc.r.appspot.com
(zwróć uwagę na początkowy znacznik czasu).
Może się wydawać, że możliwe jest wdrożenie tylko jednej aplikacji webowej App Engine na region, ale można wskazać service: <servicename>
w app.yml
i utworzyć nową usługę (nową stronę web). Format URL dla tej nowej strony będzie <servicename>-dot-<project-uniq-name>.appspot.com
.
Enumeracja
Za każdym razem, gdy przesyłasz nowy kod do Aplikacji, tworzona jest nowa wersja. Wszystkie wersje są przechowywane i mają nawet URL do ich dostępu. Tak więc modyfikacja kodu starej wersji może być świetną techniką utrzymywania się.
Podobnie jak w przypadku Cloud Functions, istnieje szansa, że aplikacja będzie polegać na sekretach, które są dostępne w czasie wykonywania za pośrednictwem zmiennych środowiskowych. Te zmienne są przechowywane w pliku app.yaml
, który można uzyskać w następujący sposób:
Eskalacja Uprawnień
GCP - AppEngine PrivescNiezautoryzowane Enum
GCP - App Engine Unauthenticated EnumPost Exploitation
GCP - App Engine Post ExploitationUtrzymanie Dostępu
GCP - App Engine PersistenceLast updated