AWS - Elastic Beanstalk Enum
Last updated
Last updated
Amazon Elastic Beanstalk pruža pojednostavljenu platformu za implementaciju, upravljanje i skaliranje veb aplikacija i usluga. Podržava različite programske jezike i okvire, poput Java, .NET, PHP, Node.js, Python, Ruby i Go, kao i Docker kontejnere. Usluga je kompatibilna sa široko korišćenim serverima uključujući Apache, Nginx, Passenger i IIS.
Elastic Beanstalk pruža jednostavan i fleksibilan način za implementaciju vaših aplikacija u AWS oblaku, bez potrebe za brigu o osnovnoj infrastrukturi. Automatski se bavi detaljima kapaciteta pružanja, balansiranja opterećenja, skaliranja i praćenja zdravlja aplikacije, omogućavajući vam da se fokusirate na pisanje i implementaciju koda.
Infrastruktura kreirana od strane Elastic Beanstalk-a upravlja se putem Autoscaling grupa u EC2 (sa balanserom opterećenja). Što znači da, ako na kraju dana ugrozite host, trebalo bi da znate o EC2:
Osim toga, ako se koristi Docker, moguće je koristiti ECS.
U AWS Elastic Beanstalk-u, koncepti "aplikacije" i "okruženja" služe različitim svrhama i imaju različite uloge u procesu implementacije.
Aplikacija u Elastic Beanstalk-u je logički kontejner za izvorni kod vaše aplikacije, okruženja i konfiguracije. Grupiše različite verzije koda vaše aplikacije i omogućava vam da ih upravljate kao jednu celinu.
Kada kreirate aplikaciju, pružate ime i opis, ali nijedan resurs nije obezbeđen u ovom trenutku. To je jednostavno način organizovanja i upravljanja vašim kodom i povezanim resursima.
Možete imati više verzija aplikacija unutar jedne aplikacije. Svaka verzija odgovara određenom izdanju vašeg koda, koji se može implementirati u jedno ili više okruženja.
Okruženje je obezbeđena instanca vaše aplikacije koja se izvršava na AWS infrastrukturi. To je gde se vaš aplikativni kod implementira i izvršava. Elastic Beanstalk obezbeđuje neophodne resurse (npr. EC2 instance, balanseri opterećenja, auto-skaliranje grupa, baze podataka) na osnovu konfiguracije okruženja.
Svako okruženje pokreće jednu verziju vaše aplikacije, i možete imati više okruženja za različite svrhe, kao što su razvoj, testiranje, staging i produkcija.
Prilikom kreiranja okruženja, birate platformu (npr. Java, .NET, Node.js, itd.) i tip okruženja (npr. veb server ili radnik). Takođe možete prilagoditi konfiguraciju okruženja kako biste kontrolisali različite aspekte infrastrukture i postavki aplikacije.
Veb Server Okruženje: Namensko je za hostovanje i pružanje veb aplikacija i API-ja. Ove aplikacije obično obrađuju dolazne HTTP/HTTPS zahteve. Veb server okruženje obezbeđuje resurse poput EC2 instanci, balansera opterećenja i auto-skaliranja grupa za upravljanje dolaznim saobraćajem, upravljanje kapacitetom i obezbeđivanje visoke dostupnosti aplikacije.
Radnik Okruženje: Namensko je za obradu zadataka u pozadini, koji su često vremenski zahtevni ili operacije koje zahtevaju resurse, a ne zahtevaju odmah odgovore klijentima. Radnik okruženje obezbeđuje resurse poput EC2 instanci i auto-skaliranja grupa, ali nema balanser opterećenja jer ne obrađuje HTTP/HTTPS zahteve direktno. Umesto toga, konzumira zadatke iz Amazon Simple Queue Service (SQS) reda, koji deluje kao bafer između radnog okruženja i zadataka koje obrađuje.
Prilikom kreiranja Aplikacije u Beanstalk-u, postoje 3 veoma važne opcije bezbednosti koje treba odabrati:
EC2 par ključeva: Ovo će biti SSH ključ koji će moći da pristupi EC2 instancama koje pokreću aplikaciju
IAM profil instance: Ovo je profil instance koji će imati instance (IAM privilegije)
Automatski generisana uloga se zove aws-elasticbeanstalk-ec2-role
i ima neke zanimljive pristupe nad svim ECS, svim SQS, DynamoDB elasticbeanstalk i elasticbeanstalk S3 koristeći AWS upravljane politike: AWSElasticBeanstalkWebTier, AWSElasticBeanstalkMulticontainerDocker, AWSElasticBeanstalkWorkerTier.
Uloga servisa: Ovo je uloga koju će AWS servis koristiti za obavljanje svih potrebnih akcija. Koliko znam, običan AWS korisnik ne može pristupiti toj ulozi.
Ova uloga generisana od strane AWS-a se zove aws-elasticbeanstalk-service-role
i koristi AWS upravljane politike AWSElasticBeanstalkEnhancedHealth i AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy
Podrazumevano je onemogućena verzija metapodataka 1:
### Izloženost
Podaci o Beanstalk-u se čuvaju u S3 kanti sa sledećim imenom: elasticbeanstalk-<region>-<acc-id>
(ako je kreiran u AWS konzoli). Unutar ove kante ćete pronaći učitani izvorni kod aplikacije.
URL kreirane veb stranice je http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/
Ako dobijete pristup za čitanje nad kantom, možete pročitati izvorni kod i čak pronaći osetljive akreditive u njemu.
Ako dobijete pristup za pisanje nad kantom, možete izmeniti izvorni kod da ugrozi IAM ulogu koju aplikacija koristi sledeći put kada se izvrši.