AWS - Elastic Beanstalk 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)
Amazon Elastic Beanstalk inatoa jukwaa rahisi kwa kupeleka, kusimamia, na kupanua programu za wavuti na huduma. Inasaidia lugha mbalimbali za programu na mifumo, kama vile Java, .NET, PHP, Node.js, Python, Ruby, na Go, pamoja na kontena za Docker. Huduma hii inafaa na seva zinazotumika sana ikiwa ni pamoja na Apache, Nginx, Passenger, na IIS.
Elastic Beanstalk inatoa njia rahisi na inayoweza kubadilishwa ili kupeleka programu zako kwenye wingu la AWS, bila haja ya kuwa na wasiwasi kuhusu miundombinu ya msingi. Inashughulikia kwa otomatiki maelezo ya ugawaji wa uwezo, usawa wa mzigo, kupanua, na uangalizi wa afya ya programu, ikikuruhusu uelekeze nguvu zako katika kuandika na kupeleka msimbo wako.
Miundombinu inayoundwa na Elastic Beanstalk inasimamiwa na Autoscaling Groups katika EC2 (ikiwa na usawa wa mzigo). Hii inamaanisha kwamba mwishoni mwa siku, ikiwa utavunja mwenyeji, unapaswa kujua kuhusu EC2:
Zaidi ya hayo, ikiwa Docker inatumika, inawezekana kutumia ECS.
Katika AWS Elastic Beanstalk, dhana za "programu" na "mazingira" zina madhumuni tofauti na zina majukumu tofauti katika mchakato wa kupeleka.
Programu katika Elastic Beanstalk ni konteina ya kimantiki kwa msimbo wa chanzo wa programu yako, mazingira, na mipangilio. Inakusanya pamoja toleo tofauti za msimbo wa programu yako na inakuruhusu kuzisimamia kama kitu kimoja.
Unapounda programu, unatoa jina na maelezo, lakini hakuna rasilimali zinazopangwa katika hatua hii. ni njia tu ya kuandaa na kusimamia msimbo wako na rasilimali zinazohusiana.
Unaweza kuwa na matoleo mengi ya programu ndani ya programu. Kila toleo linahusiana na toleo maalum la msimbo wako, ambalo linaweza kupelekwa kwenye mazingira moja au zaidi.
Mazingira ni kigezo kilichopangwa cha programu yako kinachofanya kazi kwenye miundombinu ya AWS. Hapa ndipo msimbo wa programu yako unapopelekwa na kutekelezwa. Elastic Beanstalk inatoa rasilimali zinazohitajika (mfano, EC2 instances, load balancers, auto-scaling groups, databases) kulingana na mipangilio ya mazingira.
Kila mazingira inafanya kazi na toleo moja la programu yako, na unaweza kuwa na mazingira mengi kwa madhumuni tofauti, kama vile maendeleo, majaribio, hatua, na uzalishaji.
Unapounda mazingira, unachagua jukwaa (mfano, Java, .NET, Node.js, nk.) na aina ya mazingira (mfano, seva ya wavuti au mfanyakazi). Unaweza pia kubadilisha mipangilio ya mazingira ili kudhibiti vipengele mbalimbali vya miundombinu na mipangilio ya programu.
Web Server Environment: Imeundwa ili kuhifadhi na kuhudumia programu za wavuti na APIs. Programu hizi kwa kawaida hushughulikia maombi ya HTTP/HTTPS yanayoingia. Mazingira ya seva ya wavuti yanatoa rasilimali kama EC2 instances, load balancers, na auto-scaling groups ili kushughulikia trafiki inayokuja, kusimamia uwezo, na kuhakikisha upatikanaji wa juu wa programu.
Worker Environment: Imeundwa ili kushughulikia kazi za nyuma, ambazo mara nyingi ni za muda mrefu au zinahitaji rasilimali nyingi ambazo hazihitaji majibu ya haraka kwa wateja. Mazingira ya mfanyakazi yanatoa rasilimali kama EC2 instances na auto-scaling groups, lakini hayana usawa wa mzigo kwani hayashughulii maombi ya HTTP/HTTPS moja kwa moja. Badala yake, inatumia kazi kutoka kwenye Amazon Simple Queue Service (SQS) queue, ambayo inafanya kazi kama buffer kati ya mazingira ya mfanyakazi na kazi inazoshughulikia.
Unapounda App katika Beanstalk kuna chaguzi 3 muhimu sana za usalama za kuchagua:
EC2 key pair: Hii itakuwa funguo ya SSH ambayo itakuwa na uwezo wa kufikia EC2 instances zinazofanya kazi programu
IAM instance profile: Hii ni profil ya instance ambayo instances zitakuwa nayo (IAM privileges)
Jukumu lililotengenezwa kiotomatiki linaitwa aws-elasticbeanstalk-ec2-role
na lina ufikiaji wa kuvutia juu ya ECS yote, SQS yote, DynamoDB elasticbeanstalk na elasticbeanstalk S3 kwa kutumia sera za usimamizi wa AWS: AWSElasticBeanstalkWebTier, AWSElasticBeanstalkMulticontainerDocker, AWSElasticBeanstalkWorkerTier.
Service role: Hii ni jukumu ambalo huduma ya AWS itatumia kutekeleza vitendo vyote vinavyohitajika. Kwa ufahamu wangu, mtumiaji wa kawaida wa AWS hawezi kufikia jukumu hilo.
Jukumu hili lililotengenezwa na AWS linaitwa aws-elasticbeanstalk-service-role
na linatumia sera za usimamizi za AWS AWSElasticBeanstalkEnhancedHealth na AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy
Kwa kawaida metadata version 1 imezimwa:
Data za Beanstalk zinahifadhiwa katika S3 bucket yenye jina lifuatalo: elasticbeanstalk-<region>-<acc-id>
(ikiwa iliumbwa kwenye AWS console). Ndani ya bucket hii utaona msimbo wa chanzo wa programu uliopakiwa.
URL ya tovuti iliyoundwa ni http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/
Ikiwa unapata ufikiaji wa kusoma juu ya bucket, unaweza kusoma msimbo wa chanzo na hata kupata akidi nyeti juu yake
ikiwa unapata ufikiaji wa kuandika juu ya bucket, unaweza kubadilisha msimbo wa chanzo ili kuvunja IAM role ambayo programu inatumia wakati inatekelezwa tena.
Jifunze & fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze & fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)