GCP - Basic Information

Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya HackTricks AWS)!

Njia nyingine za kusaidia HackTricks:

Mfumo wa Maliasili

Google Cloud hutumia Mfumo wa Maliasili ambao ni sawa, kwa dhana, na ile ya mfumo wa faili wa jadi. Hii hutoa mtiririko wa mzazi/mtoto wa mantiki na pointi maalum za kiambatisho kwa sera na idhini.

Kwa kiwango kikubwa, inaonekana kama hivi:

Organization
--> Folders
--> Projects
--> Resources

Mashine ya kawaida (inayoitwa Compute Instance) ni rasilimali. Rasilimali iko katika mradi, labda pamoja na Compute Instances nyingine, vikasha vya kuhifadhi, n.k.

Uhamiaji wa Miradi

Inawezekana kuhamisha mradi bila shirika lolote kwenda kwa shirika lenye ruhusa roles/resourcemanager.projectCreator na roles/resourcemanager.projectMover. Ikiwa mradi uko ndani ya shirika lingine, ni lazima kuwasiliana na msaada wa GCP ili kuwatoa nje ya shirika kwanza. Kwa maelezo zaidi angalia hapa.

Sera za Shirika

Zinaruhusu kudhibiti kwa pamoja rasilimali za wingu za shirika lako:

  • Kudhibiti kwa pamoja ili kupanga vizuizi juu ya jinsi rasilimali za shirika lako zinaweza kutumika.

  • Kutambua na kuanzisha mipaka kwa timu zako za maendeleo ili kubaki ndani ya mipaka ya kufuata sheria.

  • Kusaidia wamiliki wa miradi na timu zao kuhamia haraka bila wasiwasi wa kuvunja sheria za kufuata.

Sera hizi zinaweza kuundwa ili kuathiri shirika lote, folda au miradi. Wazao wa kichwa cha ieraki ya rasilimali iliyolengwa wanarithi sera ya shirika.

Ili kuamua sera ya shirika, unachagua kizuizi, ambacho ni aina maalum ya kizuizi dhidi ya huduma ya Google Cloud au kikundi cha huduma za Google Cloud. Unapangilia kizuizi hicho na vizuizi unavyotaka.

Matumizi ya Kawaida

  • Punguza ushirikiano wa rasilimali kulingana na kikoa.

  • Punguza matumizi ya akaunti za huduma za Kitambulisho na Ufikiaji.

  • Weka kizuizi kwenye eneo la kimwili la rasilimali zinazoundwa mpya.

  • Lemaza uundaji wa akaunti za huduma.

Kuna vizuizi vingi zaidi vinavyokupa udhibiti wa kina wa rasilimali za shirika lako. Kwa maelezo zaidi, angalia orodha ya vizuizi vyote vya Huduma ya Sera ya Shirika.

Sera za Shirika za Kimsingi

Hizi ni sera ambazo Google itaongeza kwa chaguo-msingi wakati wa kuweka shirika lako la GCP:

Sera za Usimamizi wa Ufikiaji

  • Mawasiliano yaliyozuiwa na kikoa: Inazuia kuongeza watumiaji kwa Mawasiliano ya Msingi nje ya vikoa vyako vilivyospecifika. Hii inapunguza Mawasiliano ya Msingi kuruhusu utambulisho wa watumiaji walioandaliwa katika vikoa vyako vilivyochaguliwa kupokea arifa za jukwaa.

  • Kugawana iliyozuiwa na kikoa: Inazuia kuongeza watumiaji kwa sera za IAM nje ya vikoa vyako vilivyospecifika. Hii inapunguza sera za IAM kuruhusu utambulisho wa watumiaji walioandaliwa katika vikoa vyako vilivyochaguliwa kupata rasilimali ndani ya shirika hili.

  • Kuzuia upatikanaji wa umma: Inazuia vikasha vya Uhifadhi wa Wingu kutolewa kwa umma. Hii inahakikisha kuwa mwandishi wa programu hawezi kusanidi vikasha vya Uhifadhi wa Wingu kuwa na upatikanaji wa mtandao usiothibitishwa.

  • Upatikanaji wa kiwango cha kikasha cha kawaida: Inazuia orodha za kudhibiti upatikanaji wa kiwango cha vitu (ACLs) katika vikasha vya Uhifadhi wa Wingu. Hii inasimamia upatikanaji wako kwa kutumia sera za IAM kwa uwiano kote kwa vitu vyote katika vikasha vya Uhifadhi wa Wingu.

  • Hitaji la kuingia kwa OS: Mashine za Virtual zilizoanzishwa katika miradi mipya zitakuwa na Kuingia kwa OS imewezeshwa. Hii inakuruhusu kusimamia upatikanaji wa SSH kwa mifano yako kwa kutumia IAM bila kuhitaji kuunda na kusimamia funguo za SSH za kibinafsi.

Sera za Usalama zaidi kwa akaunti za huduma

  • Lemaza ruzuku za IAM za moja kwa moja: Inazuia akaunti za huduma za App Engine na Compute Engine za msingi kutolewa moja kwa moja jukumu la IAM la Mhariri kwenye mradi wakati wa uundaji. Hii inahakikisha akaunti za huduma hazipati majukumu ya IAM yenye ruhusa nyingi sana mara tu zinapoanzishwa.

  • Lemaza uundaji wa funguo za akaunti ya huduma: Inazuia uundaji wa funguo za umma za akaunti za huduma. Hii husaidia kupunguza hatari ya kufunua siri za kudumu.

  • Lemaza kupakia funguo za akaunti ya huduma: Inazuia kupakia funguo za umma za akaunti za huduma. Hii husaidia kupunguza hatari ya vifaa vya funguo vilivyovuja au kutumiwa tena.

Sera za Usanidi wa Mtandao wa VPC

  • Tambua IPs za nje zilizoruhusiwa kwa mifano ya VM: Inazuia uundaji wa mifano ya Compute na anwani ya IP ya umma, ambayo inaweza kuwafunua kwa trafiki ya mtandao.

  • Lemaza ujumuishaji wa VM uliofichwa: Inazuia uundaji wa VM zilizofichwa kwenye VM za Compute Engine. Hii inapunguza hatari ya usalama ya kuwa na VM zisizofuatiliwa.

  • Lemaza bandari ya serial ya VM: Inazuia upatikanaji wa bandari ya serial kwa VM za Compute Engine. Hii inazuia kuingia kwenye bandari ya seva kwa kutumia API ya Compute Engine.

  • Punguza mitandao iliyoruhusiwa kwenye visa vya SQL vya Wingu: Inazuia safu za mtandao wa umma au zisizo za ndani kufikia hifadhidata zako za SQL za Wingu.

  • Punguza Uhamishaji wa Itifaki Kulingana na Aina ya Anwani ya IP: Inazuia uhamishaji wa itifaki wa VM kwa anwani za IP za nje.

  • Punguza upatikanaji wa IP ya umma kwenye visa vya SQL vya Wingu: Inazuia uundaji wa visa vya SQL vya Wingu na anwani ya IP ya umma, ambayo inaweza kuwafunua kwa trafiki ya mtandao.

  • Punguza kuondolewa kwa lieni ya mradi wa VPC uliogawanyika: Inazuia kufutwa kwa bahati mbaya kwa miradi ya mwenyeji wa VPC iliyoshirikiwa.

  • Inaweka mipangilio ya DNS ya ndani kwa miradi mipya kuwa Zonal DNS Pekee: Inazuia matumizi ya mipangilio ya zamani ya DNS ambayo ina upatikanaji mdogo wa huduma.

  • Ruka uundaji wa mtandao wa msingi: Inazuia uundaji wa moja kwa moja wa mtandao wa VPC wa msingi na rasilimali zinazohusiana. Hii inakwepa sheria za firewall za msingi zenye ruhusa nyingi.

  • Lemaza Matumizi ya IPv6 ya Nje ya VPC: Inazuia uundaji wa vikoa vya IPv6 vya nje, ambavyo vinaweza kufunuliwa kwa upatikanaji wa mtandao usioidhinishwa.

Vyeo vya IAM

Hivi ni kama sera za IAM katika AWS kwa kila jukumu lina seti ya ruhusa.

Walakini, tofauti na AWS, hakuna repo iliyosanidiwa ya vyeo. Badala yake, rasilimali hutoa vyeo vya upatikanaji X kwa mabalozi Y, na njia pekee ya kugundua ni nani anaye ruhusa ya kupata rasilimali ni kutumia njia ya get-iam-policy juu ya rasilimali hiyo. Hii inaweza kuwa tatizo kwa sababu hii inamaanisha kuwa njia pekee ya kugundua ruhusa gani mabalozi anayo ni kuuliza kila rasilimali ni nani anayetoa ruhusa, na mtumiaji anaweza kutokuwa na ruhusa ya kupata ruhusa kutoka kwa rasilimali zote.

Kuna aina tatu za vyeo katika IAM:

  • Vyeo vya Msingi/Primitiv, ambavyo ni pamoja na vyeo vya Mmiliki, Mhariri, na Mwangaliaji ambavyo vilikuwepo kabla ya kuanzishwa kwa IAM.

  • Vyeo vilivyopangwa, ambavyo hutoa upatikanaji wa kina kwa huduma maalum na kusimamiwa na Google Cloud. Kuna vyeo vingi vilivyopangwa, unaweza kuona vyote pamoja na ruhusa wanayo hapa.

  • Vyeo vya desturi, ambavyo hutoa upatikanaji wa kina kulingana na orodha iliyotajwa na mtumiaji ya ruhusa.

Kuna maelfu ya ruhusa katika GCP. Ili kuthibitisha ikiwa jukumu lina ruhusa unaweza tafuta ruhusa hapa na uone ni vyeo vipi vina hiyo ruhusa.

Unaweza pia tafuta hapa vyeo vilivyopangwa vilivyotolewa na kila bidhaa. Kumbuka kwamba baadhi ya vyeo haviwezi kuambatishwa kwa watumiaji na tu kwa SAs kwa sababu baadhi ya ruhusa wanazojumuisha. Zaidi ya hayo, kumbuka kwamba ruhusa itaanza tu kufanya kazi ikiwa itaambatishwa kwa huduma inayofaa.

Au angalia ikiwa jukumu la desturi linaweza kutumia ruhusa maalum hapa.

pageGCP - IAM, Principals & Org Policies Enum

Watumiaji

Katika konsoli ya GCP hakuna usimamizi wa Watumiaji au Vikundi, hilo hufanywa katika Google Workspace. Hata hivyo, unaweza kusawazisha mtoa huduma tofauti wa utambulisho katika Google Workspace.

Unaweza kupata watumiaji na vikundi vya Workspaces katika https://admin.google.com.

MFA inaweza kulazimishwa kwa watumiaji wa Workspaces, hata hivyo, mshambuliaji anaweza kutumia token kufikia GCP kupitia cli ambayo haitalindwa na MFA (itailindwa na MFA tu wakati mtumiaji anapoingia kuiunda: gcloud auth login).

Vikundi

Wakati shirika linapoanzishwa, inapendekezwa sana kuunda vikundi kadhaa. Ikiwa unasimamia yeyote kati yao unaweza kuwa umekiuka sehemu au sehemu muhimu ya shirika:

Kikundi

Kazi

gcp-organization-admins (kikundi au akaunti binafsi inayohitajika kwa orodha ya ukaguzi)

Kusimamia rasilimali yoyote inayomilikiwa na shirika. Tengeneza jukumu hili kwa uangalifu; waadmink wa org wana ufikiaji wa rasilimali zako zote za Google Cloud. Vinginevyo, kwa sababu hii ni jukumu lenye haki kubwa, fikiria kutumia akaunti binafsi badala ya kuunda kikundi.

gcp-network-admins (inahitajika kwa orodha ya ukaguzi)

Kuunda mitandao, subneti, sheria za firewall, na vifaa vya mtandao kama Cloud Router, Cloud VPN, na cloud load balancers.

gcp-billing-admins (inahitajika kwa orodha ya ukaguzi)

Kuanzisha akaunti za malipo na kufuatilia matumizi yao.

gcp-developers (inahitajika kwa orodha ya ukaguzi)

Kubuni, kuandika, na kujaribu programu.

gcp-security-admins

Kuanzisha na kusimamia sera za usalama kwa shirika lote, ikiwa ni pamoja na usimamizi wa ufikiaji na sera za kizuizi za shirika. Angalia mwongozo wa msingi wa usalama wa Google Cloud kwa maelezo zaidi kuhusu kupanga miundombinu yako ya usalama wa Google Cloud.

gcp-devops

Kuunda au kusimamia mifumo ya mwisho hadi mwisho inayosaidia uingizaji wa mara kwa mara na utoaji, ufuatiliaji, na utoaji wa mfumo.

gcp-logging-admins

gcp-logging-viewers

gcp-monitor-admins

gcp-billing-viewer (haipo tena kwa chaguo-msingi)

Kufuatilia matumizi kwenye miradi. Wanachama wa kawaida ni sehemu ya timu ya fedha.

gcp-platform-viewer (haipo tena kwa chaguo-msingi)

Kupitia habari za rasilimali katika shirika la Google Cloud.

gcp-security-reviewer (haipo tena kwa chaguo-msingi)

Kupitia usalama wa wingu.

gcp-network-viewer (haipo tena kwa chaguo-msingi)

Kupitia mipangilio ya mtandao.

grp-gcp-audit-viewer (haipo tena kwa chaguo-msingi)

Kuona kumbukumbu za ukaguzi.

gcp-scc-admin (haipo tena kwa chaguo-msingi)

Kusimamia Kituo cha Amri cha Usalama.

gcp-secrets-admin (haipo tena kwa chaguo-msingi)

Kusimamia siri katika Meneja wa Siri.

Sera ya Nenosiri ya Chaguo-msingi

  • Tumia nywila imara

  • Kati ya herufi 8 na 100

  • Usitumie tena

  • Bila muda wa kumalizika

  • Ikiwa watu wanatumia Workspace kupitia mtoa huduma wa tatu, mahitaji haya hayatumiki.

Akaunti za Huduma

Hizi ni mawakala ambao rasilimali zinaweza kuwa nazo zimeambatanishwa na kupata urahisi kuingiliana na GCP. Kwa mfano, ni rahisi kupata tokeni ya uthibitishaji ya Akaunti ya Huduma iliyounganishwa na VM katika metadata. Inawezekana kukutana na mizozo fulani unapotumia IAM na mipangilio ya ufikiaji. Kwa mfano, akaunti yako ya huduma inaweza kuwa na jukumu la IAM la compute.instanceAdmin lakini kifaa ulichovunja ulikuwa umepunguzwa na kizuizi cha wigo cha https://www.googleapis.com/auth/compute.readonly. Hii itazuia kufanya mabadiliko yoyote kwa kutumia tokeni ya OAuth ambayo imepewa moja kwa moja kwa kifaa chako.

Ni sawa na vivutio vya IAM kutoka AWS. Lakini tofauti na AWS, akaunti yoyote ya huduma inaweza kuambatanishwa na huduma yoyote (haina haja ya kuruhusu kupitia sera).

Baadhi ya akaunti za huduma utakazopata kimsingi zinaundwa moja kwa moja na GCP unapoanza kutumia huduma, kama:

PROJECT_NUMBER-compute@developer.gserviceaccount.com
PROJECT_ID@appspot.gserviceaccount.com

Hata hivyo, pia niwezekana kuunda na kuambatanisha akaunti za huduma za desturi, ambazo zitaonekana kama hivi:

SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com

Vipimo vya Upatikanaji

Vipimo vya upatikanaji vinahusishwa na vitambulisho vya OAuth vilivyozalishwa ili kupata upande wa API ya GCP. Vinaweza kizuia ruhusa za kitambulisho cha OAuth. Hii inamaanisha kwamba ikiwa kitambulisho kinamiliki rasilimali lakini hakina uwezo wa kupata rasilimali hiyo, kitambulisho hicho hakiwezi kutumika kwa (ku)abusa ruhusa hizo.

Google kimsingi inapendekeza kwamba vipimo vya upatikanaji visitumike na kutegemea kabisa kwenye IAM. Jukwaa la usimamizi wa wavuti linathibitisha hili, lakini vipimo vya upatikanaji vinaweza bado kutumika kwenye mifano kwa kutumia akaunti za huduma za desturi kwa njia ya programu.

Unaweza kuona ni vipimo gani vime teuliwa kwa kuuliza:

curl 'https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=<access_token>'

{
"issued_to": "223044615559.apps.googleusercontent.com",
"audience": "223044615559.apps.googleusercontent.com",
"user_id": "139746512919298469201",
"scope": "openid https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/cloud-platform https://www.googleapis.com/auth/appengine.admin https://www.googleapis.com/auth/sqlservice.login https://www.googleapis.com/auth/compute https://www.googleapis.com/auth/accounts.reauth",
"expires_in": 2253,
"email": "username@testing.com",
"verified_email": true,
"access_type": "offline"
}

Scope zilizotangulia ni zile zinazozalishwa kwa default kwa kutumia gcloud kupata data. Hii ni kwa sababu unapotumia gcloud kwanza unajenga OAuth token, na kisha kutumia kuwasiliana na endpoints.

Scope muhimu zaidi kati ya hizo ni cloud-platform, ambayo kimsingi inamaanisha kwamba ni rahisi kupata huduma yoyote kwenye GCP.

Unaweza kupata orodha ya scopes zote zinazowezekana hapa.

Ikiwa una vyeti vya kivinjari vya gcloud, ni rahisi kupata token na scopes nyingine, kwa kufanya kitu kama:

# Maybe you can get a user token with other scopes changing the scopes array from ~/.config/gcloud/credentials.db

# Set new scopes for SDKs credentials
gcloud auth application-default login --scopes=https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/sqlservice.login,https://www.googleapis.com/auth/appengine.admin,https://www.googleapis.com/auth/compute,https://www.googleapis.com/auth/accounts.reauth,https://www.googleapis.com/auth/admin.directory.user,https://www.googleapis.com/auth/admin.directory.group,https://www.googleapis.com/auth/admin.directory.domain,https://www.googleapis.com/auth/admin.directory.user

# Print new token
gcloud auth application-default print-access-token

# To use this token with some API you might need to use curl to indicate the project header with --header "X-Goog-User-Project: <project-name>"

Sera za IAM za Terraform, Vizuizi na Wanachama

Kama ilivyoelezwa na terraform katika https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/google_project_iam kutumia terraform na GCP kuna njia tofauti za kumpa mamlaka mkuu juu ya rasilimali:

  • Wanachama: Unaweka mamlaka kama wanachama wa majukumu bila vikwazo juu ya jukumu au mamlaka. Unaweza kuweka mtumiaji kama mwanachama wa jukumu kisha weka kikundi kama mwanachama wa jukumu hilo hilo na pia weka mamlaka hizo (mtumiaji na kikundi) kama wanachama wa majukumu mengine.

  • Vizuizi: Mamlaka kadhaa zinaweza kufungwa kwa jukumu. Mamlaka hizo bado zinaweza kufungwa au kuwa wanachama wa majukumu mengine. Hata hivyo, ikiwa mamlaka ambayo hayajafungwa kwa jukumu yamewekwa kama mwanachama wa jukumu lililofungwa, wakati vizuizi vinapotekelezwa tena, uanachama utaondoka.

  • Sera: Sera ni ya msingi, inaonyesha majukumu na mamlaka kisha, mamlaka hayo hawawezi kuwa na majukumu zaidi na majukumu hayo hawawezi kuwa na mamlaka zaidi isipokuwa sera hiyo imebadilishwa (hata katika sera nyingine, vizuizi au wanachama). Kwa hivyo, wakati jukumu au mamlaka yanapowekwa katika sera, haki zake zote zinapunguzwa na sera hiyo. Kwa wazi, hii inaweza kukiukwa ikiwa mamlaka anapewa chaguo la kubadilisha sera au ruhusa ya kupanda hadhi ya mamlaka (kama kuunda mamlaka mpya na kumfunga jukumu jipya).

Marejeo

Last updated