GCP - App Engine Enum
Basic Information
Google Cloud Platform의 (GCP) App Engine은 대규모 웹 애플리케이션 개발 및 호스팅을 위한 강력한 서버리스 플랫폼입니다. 이 플랫폼의 설계는 개발 과정을 간소화하고 애플리케이션의 관리 용이성을 높이는 데 중점을 둡니다. GCP의 App Engine의 주요 기능 및 이점은 다음과 같습니다:
서버리스 아키텍처: App Engine은 서버 프로비저닝, 구성 및 확장을 포함한 인프라를 자동으로 처리합니다. 이를 통해 개발자는 하드웨어에 대해 걱정하지 않고 코드 작성에 집중할 수 있습니다.
자동 확장: App Engine은 애플리케이션이 받는 트래픽 양에 따라 자동으로 확장할 수 있습니다. 트래픽이 증가하면 확장하고, 트래픽이 감소하면 축소하여 비용과 성능을 최적화합니다.
언어 및 런타임 지원: Java, Python, Node.js, Go, Ruby, PHP, .NET과 같은 인기 있는 프로그래밍 언어를 지원합니다. 표준 환경 또는 유연한 환경에서 애플리케이션을 실행할 수 있습니다. 표준 환경은 더 제한적이지만 특정 언어에 최적화되어 있으며, 유연한 환경은 더 많은 커스터마이징을 허용합니다.
통합 서비스: App Engine은 Cloud SQL, Cloud Storage, Cloud Datastore 등 많은 다른 GCP 서비스와 통합됩니다. 이 통합은 클라우드 기반 애플리케이션의 아키텍처를 단순화합니다.
버전 관리 및 트래픽 분할: 여러 버전의 애플리케이션을 쉽게 배포하고 A/B 테스트 또는 점진적 롤아웃을 위해 트래픽을 분할할 수 있습니다.
애플리케이션 인사이트: App Engine은 로깅, 사용자 인증 및 애플리케이션 모니터링 및 관리를 위한 개발자 도구 모음을 포함한 내장 서비스를 제공합니다.
보안: 애플리케이션 버전 관리, 안전한 연결을 위한 SSL/TLS 인증서 및 ID 및 액세스 관리와 같은 내장 보안 기능을 제공합니다.
Firewall
간단한 방화벽은 다음 옵션을 사용하여 앱을 실행하는 인스턴스에 대해 구성할 수 있습니다:
SA
이 앱에서 사용하는 기본 서비스 계정은 **<proj-name>@appspot.gserviceaccount.com
**이며, 프로젝트에 대한 Editor 역할을 가지고 있으며, APP Engine 인스턴스 내의 SA는 **cloud-platform scope (기타 포함)**으로 실행됩니다.
Storage
소스 코드 및 메타데이터는 자동으로 버킷에 저장되며, 이름은 <proj-id>.appspot.com
, staging.<proj-id>.appspot.com
, <country>.<proj-id>.appspot.com
과 같습니다.
앱의 모든 파일은 내용의 sha1을 파일 이름으로 저장됩니다:
staging.<proj-id>.appspot.com
의 ae
폴더 내에는 버전별로 하나의 폴더가 있으며, 소스 코드 파일과 manifest.json
파일이 있어 앱의 구성 요소를 설명합니다:
Containers
웹 앱은 궁극적으로 컨테이너 내에서 실행되며 Code Build를 사용하여 컨테이너를 빌드합니다.
URLs & Regions
기본 웹 페이지는 URL **<project-uniq-name>.appspot.com
**에 노출되지만, 이전 버전의 URL은 약간 다를 수 있습니다. 예를 들어 https://20240117t001540-dot-<project-uniq-name>.uc.r.appspot.com
(초기 타임스탬프를 참고하세요).
한 지역당 1개의 app engine 웹 애플리케이션만 배포할 수 있는 것처럼 보일 수 있지만, **app.yml
**에서 **service: <servicename>
**을 지정하여 새로운 서비스(새로운 웹)를 만들 수 있습니다. 이 새로운 웹의 URL 형식은 **<servicename>-dot-<project-uniq-name>.appspot.com
**이 됩니다.
Enumeration
새 코드를 앱에 업로드할 때마다 새 버전이 생성됩니다. 모든 버전이 저장되며, 접근할 수 있는 URL도 있습니다. 따라서 오래된 버전의 코드를 수정하는 것은 훌륭한 지속성 기술이 될 수 있습니다.
Cloud Functions와 마찬가지로, 애플리케이션이 런타임 시 환경 변수를 통해 접근하는 비밀에 의존할 가능성이 있습니다. 이러한 변수는 app.yaml
파일에 저장되며 다음과 같이 접근할 수 있습니다:
권한 상승
GCP - AppEngine Privesc인증되지 않은 Enum
GCP - App Engine Unauthenticated Enum사후 익스플로잇
GCP - App Engine Post Exploitation지속성
GCP - App Engine PersistenceLast updated