AWS - Elastic Beanstalk Enum
Elastic Beanstalk
Amazon Elastic Beanstalk zapewnia uproszczoną platformę do wdrażania, zarządzania i skalowania aplikacji internetowych i usług. Obsługuje różne języki programowania i platformy, takie jak Java, .NET, PHP, Node.js, Python, Ruby oraz kontenery Docker. Usługa jest kompatybilna z szeroko stosowanymi serwerami, w tym Apache, Nginx, Passenger i IIS.
Elastic Beanstalk zapewnia prosty i elastyczny sposób wdrażania aplikacji w chmurze AWS, bez konieczności martwienia się o infrastrukturę podstawową. Automatycznie zarządza szczegółami dotyczącymi dostarczania zasobów, rozdziału obciążenia, skalowania oraz monitorowania zdrowia aplikacji, pozwalając skupić się na pisaniu i wdrażaniu kodu.
Infrastrukturą tworzoną przez Elastic Beanstalk zarządzają grupy Autoscaling w EC2 (z balanserem obciążenia). Oznacza to, że w ostatecznym rozrachunku, jeśli skompromitujesz hosta, powinieneś wiedzieć o EC2:
pageAWS - EC2, EBS, ELB, SSM, VPC & VPN EnumPonadto, jeśli używany jest Docker, można korzystać z ECS.
pageAWS - EKS EnumAplikacja i Środowiska
W AWS Elastic Beanstalk, pojęcia "aplikacja" i "środowisko" pełnią różne funkcje i mają odrębne role w procesie wdrażania.
Aplikacja
Aplikacja w Elastic Beanstalk to logiczny kontener dla kodu źródłowego aplikacji, środowisk i konfiguracji. Grupuje różne wersje kodu aplikacji i pozwala zarządzać nimi jako pojedynczą jednostkę.
Tworząc aplikację, podajesz nazwę i opis, ale nie są w tym momencie przydzielane żadne zasoby. Jest to po prostu sposób organizowania i zarządzania kodem oraz powiązanymi zasobami.
Możesz mieć wiele wersji aplikacji w ramach jednej aplikacji. Każda wersja odpowiada określonej wersji kodu, która może być wdrażana w jednym lub wielu środowiskach.
Środowisko
Środowisko to przydzielona instancja twojej aplikacji działająca na infrastrukturze AWS. To jest miejsce, gdzie kod twojej aplikacji jest wdrażany i wykonywany. Elastic Beanstalk przydziela niezbędne zasoby (np. instancje EC2, balansery obciążenia, grupy auto-scaling, bazy danych) na podstawie konfiguracji środowiska.
Każde środowisko uruchamia jedną wersję twojej aplikacji, a możesz mieć wiele środowisk do różnych celów, takich jak rozwój, testowanie, staging i produkcja.
Tworząc środowisko, wybierasz platformę (np. Java, .NET, Node.js itp.) i typ środowiska (np. serwer internetowy lub pracownik). Możesz również dostosować konfigurację środowiska, aby kontrolować różne aspekty infrastruktury i ustawienia aplikacji.
2 rodzaje Środowisk
Środowisko Serwera Internetowego: Jest przeznaczone do hostowania i obsługi aplikacji internetowych i interfejsów API. Te aplikacje zazwyczaj obsługują przychodzące żądania HTTP/HTTPS. Środowisko serwera internetowego przydziela zasoby takie jak instancje EC2, balansery obciążenia i grupy auto-scaling do obsługi ruchu przychodzącego, zarządzania pojemnością i zapewnienia wysokiej dostępności aplikacji.
Środowisko Pracownika: Jest przeznaczone do przetwarzania zadań w tle, które są często czasochłonne lub wymagające zasobów operacje, które nie wymagają natychmiastowych odpowiedzi dla klientów. Środowisko pracownika przydziela zasoby takie jak instancje EC2 i grupy auto-scaling, ale nie ma balansera obciążenia, ponieważ nie obsługuje bezpośrednio żądań HTTP/HTTPS. Zamiast tego pobiera zadania z kolejki Amazon Simple Queue Service (SQS), która działa jako bufor między środowiskiem pracownika a zadaniami, które przetwarza.
Bezpieczeństwo
Tworząc aplikację w Beanstalk, istnieją 3 bardzo ważne opcje związane z bezpieczeństwem do wyboru:
Para kluczy EC2: Będzie to klucz SSH, który będzie mógł uzyskać dostęp do instancji EC2 uruchamiających aplikację
Profil instancji IAM: Jest to profil instancji, który będą miały instancje (uprawnienia IAM)
Wygenerowana rola nosi nazwę
aws-elasticbeanstalk-ec2-role
i ma pewne interesujące uprawnienia do wszystkich ECS, wszystkich SQS, DynamoDB, elasticbeanstalk i elasticbeanstalk S3, korzystając z zarządzanych przez AWS polityk: AWSElasticBeanstalkWebTier, AWSElasticBeanstalkMulticontainerDocker, AWSElasticBeanstalkWorkerTier.Rola usługi: Jest to rola, którą usługa AWS będzie używać do wykonywania wszystkich niezbędnych działań. O ile mi wiadomo, zwykły użytkownik AWS nie może uzyskać dostępu do tej roli.
Ta rola generowana przez AWS nosi nazwę
aws-elasticbeanstalk-service-role
i korzysta z zarządzanych przez AWS polityk AWSElasticBeanstalkEnhancedHealth oraz AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy
Domyślnie wersja metadanych 1 jest wyłączona:
### Narażenie
Dane Beanstalk są przechowywane w wiadrze S3 o następującej nazwie: elasticbeanstalk-<region>-<acc-id>
(jeśli zostało utworzone w konsoli AWS). Wewnątrz tego wiadra znajdziesz załadowany kod źródłowy aplikacji.
URL utworzonej strony internetowej to http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/
Jeśli uzyskasz dostęp do odczytu do wiadra, możesz odczytać kod źródłowy i nawet znaleźć na nim wrażliwe dane uwierzytelniające.
Jeśli uzyskasz dostęp do zapisu do wiadra, możesz zmodyfikować kod źródłowy, aby zagrozić roli IAM, którą aplikacja będzie używać przy następnym uruchomieniu.
Wyliczanie
Nieuwierzytelniony dostęp
pageAWS - Elastic Beanstalk Unauthenticated EnumTrwałość
pageAWS - Elastic Beanstalk PersistencePrzywileje
pageAWS - Elastic Beanstalk PrivescPo wykorzystaniu
pageAWS - Elastic Beanstalk Post ExploitationLast updated