GCP - App Engine Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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 인증서 및 신원 및 접근 관리와 같은 내장 보안 기능을 제공합니다.
간단한 방화벽은 다음 옵션으로 Apps를 실행하는 인스턴스에 대해 구성할 수 있습니다:
이 Apps에서 사용되는 기본 서비스 계정은 **<proj-name>@appspot.gserviceaccount.com
**이며, 프로젝트에 대해 Editor 역할을 가지고 있으며 APP Engine 인스턴스 내의 SAs는 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 **<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
파일에 저장되며, 다음과 같이 접근할 수 있습니다:
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)