GCP - App Engine Enum
Informações Básicas
O App Engine da Google Cloud Platform (GCP) é uma plataforma robusta e sem servidor projetada para o desenvolvimento e hospedagem de aplicativos da web em grande escala. O design desta plataforma foca na simplificação do processo de desenvolvimento e no aprimoramento da gerenciabilidade de aplicativos. As principais características e benefícios do App Engine da GCP incluem:
Arquitetura sem servidor: O App Engine lida automaticamente com a infraestrutura, incluindo provisionamento de servidores, configuração e dimensionamento. Isso permite que os desenvolvedores se concentrem em escrever código sem se preocupar com o hardware subjacente.
Dimensionamento automático: O App Engine pode dimensionar automaticamente sua aplicação em resposta à quantidade de tráfego recebido. Ele dimensiona para lidar com o aumento do tráfego e reduz quando o tráfego diminui, ajudando a otimizar custos e desempenho.
Suporte a Linguagens e Runtimes: Suporta linguagens de programação populares como Java, Python, Node.js, Go, Ruby, PHP e .NET. Você pode executar suas aplicações em um ambiente padrão ou flexível. O ambiente padrão é mais restritivo, mas altamente otimizado para linguagens específicas, enquanto o ambiente flexível permite mais personalização.
Serviços Integrados: O App Engine se integra a muitos outros serviços da GCP, como Cloud SQL, Cloud Storage, Cloud Datastore e mais. Essa integração simplifica a arquitetura de aplicativos baseados em nuvem.
Versionamento e Divisão de Tráfego: Você pode implantar facilmente várias versões de sua aplicação e depois dividir o tráfego entre elas para testes A/B ou lançamentos graduais.
Insights da Aplicação: O App Engine fornece serviços integrados como logging, autenticação de usuários e um conjunto de ferramentas de desenvolvedor para monitorar e gerenciar aplicações.
Segurança: Oferece recursos de segurança integrados como versionamento de aplicativos, certificados SSL/TLS para conexões seguras e gerenciamento de identidade e acesso.
Firewall
Um firewall simples pode ser configurado para as instâncias que executam os Apps com as seguintes opções:
SA
A conta de serviço padrão usada por esses Apps é <proj-name>@appspot.gserviceaccount.com
que tem a função de Editor sobre o projeto e as SAs dentro da instância do APP Engine são executadas com escopo de cloud-platform (entre outros).
Armazenamento
O código-fonte e metadados são armazenados automaticamente em buckets com nomes como <proj-id>.appspot.com
e staging.<proj-id>.appspot.com
e <country>.<proj-id>.appspot.com
Cada arquivo do App é armazenado com o sha1 do conteúdo como nome de arquivo:
Dentro da pasta ae
de staging.<proj-id>.appspot.com
, existe uma pasta por versão com os arquivos de código-fonte e o arquivo manifest.json
que descreve os componentes do App:
Containers
O aplicativo da web será executado dentro de um contêiner e o Code Build é usado para construir o contêiner.
URLs e Regiões
A página da web padrão será exposta no URL <project-uniq-name>.appspot.com
embora o URL das versões mais antigas seja ligeiramente diferente, como https://20240117t001540-dot-<project-uniq-name>.uc.r.appspot.com
(observe o carimbo de data e hora inicial).
Pode parecer que é apenas possível implantar 1 aplicativo da web do App Engine por região, mas é possível indicar service: <servicename>
no arquivo app.yml
e criar um novo serviço (uma nova web). O formato do URL para esta nova web será <servicename>-dot-<project-uniq-name>.appspot.com
.
Enumeração
Cada vez que você faz upload de um novo código para o App, uma nova versão é criada. Todas as versões são armazenadas e até têm um URL para acessá-las. Portanto, modificar o código de uma versão antiga pode ser uma ótima técnica de persistência.
Assim como nas Funções em Nuvem, existe a possibilidade de que o aplicativo dependa de segredos que são acessados em tempo de execução por meio de variáveis de ambiente. Essas variáveis são armazenadas em um arquivo app.yaml
que pode ser acessado da seguinte forma:
Escalação de Privilégios
pageGCP - AppEngine PrivescEnumeração Não Autenticada
pageGCP - App Engine Unauthenticated EnumPós-Exploração
pageGCP - App Engine Post ExploitationPersistência
pageGCP - App Engine PersistenceÚltima actualización