GCP - App Engine Enum
기본 정보
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 인증서 및 식별 및 액세스 관리와 같은 내장 보안 기능을 제공합니다.
방화벽
다음 옵션을 사용하여 실행 중인 인스턴스에 대한 간단한 방화벽을 구성할 수 있습니다:
SA
이러한 애플리케이션에서 사용되는 기본 서비스 계정은 **<proj-name>@appspot.gserviceaccount.com
**이며 프로젝트 및 APP Engine 인스턴스 내의 SAs에게 프로젝트에 대한 Editor 역할을 부여하며 cloud-platform 범위로 실행됩니다.
저장소
소스 코드 및 메타데이터는 <proj-id>.appspot.com
, staging.<proj-id>.appspot.com
및 <country>.<proj-id>.appspot.com
과 같은 이름의 버킷에 자동으로 저장됩니다.
앱의 모든 파일은 콘텐츠의 sha1를 파일 이름으로 사용하여 저장됩니다:
staging.<proj-id>.appspot.com
의 ae
폴더 안에는 버전당 하나의 폴더가 있으며 소스 코드 파일과 앱의 구성 요소를 설명하는 manifest.json
파일이 포함되어 있습니다:
컨테이너
웹 앱은 컨테이너 내에서 실행되며 Code Build가 컨테이너를 빌드하는 데 사용됩니다.
URL 및 지역
기본 웹 페이지는 URL **<project-uniq-name>.appspot.com
**에 노출되지만 이전 버전의 URL은 약간 다를 수 있습니다. **https://20240117t001540-dot-<project-uniq-name>.uc.r.appspot.com
**와 같이 (초기 타임스탬프 주목).
한 지역당 1개의 앱 엔진 웹 애플리케이션만 배포할 수 있는 것처럼 보일 수 있지만, **app.yml
**에서 **service: <servicename>
**를 지정하고 새 서비스(새 웹)를 만들 수 있습니다. 이 새 웹의 URL 형식은 **<servicename>-dot-<project-uniq-name>.appspot.com
**입니다.
열거
앱에 새 코드를 업로드할 때마다 새 버전이 생성됩니다. 모든 버전이 저장되며 접근할 수 있는 URL도 있습니다. 따라서 이전 버전의 코드를 수정하는 것은 훌륭한 지속성 기술일 수 있습니다.
Cloud Functions와 마찬가지로, 애플리케이션이 런타임에서 환경 변수를 통해 액세스하는 비밀 정보에 의존할 수 있습니다. 이러한 변수는 app.yaml
파일에 저장되어 있으며 다음과 같이 액세스할 수 있습니다:
권한 상승
pageGCP - AppEngine Privesc인증되지 않은 열거
pageGCP - App Engine Unauthenticated Enum후반 공격
pageGCP - App Engine Post Exploitation지속성
pageGCP - App Engine Persistence最終更新