GCP - Taarifa za Msingi

Reading time: 16 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Hifadhi ya Rasilimali

Google Cloud inatumia Hifadhi ya Rasilimali ambayo ni sawa, kimsingi, na ile ya mfumo wa kawaida wa faili. Hii inatoa mtiririko wa kazi wa kimantiki wa mzazi/kijakazi pamoja na maeneo maalum ya kiambatisho kwa sera na ruhusa.

Kwa kiwango cha juu, inaonekana hivi:

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

Masafa ya mashine ya virtual (inayoitwa Compute Instance) ni rasilimali. Rasilimali inapatikana katika mradi, labda pamoja na Compute Instances nyingine, mifuko ya uhifadhi, n.k.

Uhamasishaji wa Miradi

Inawezekana kuhamasisha mradi bila shirika lolote kwenda shirika lenye ruhusa roles/resourcemanager.projectCreator na roles/resourcemanager.projectMover. Ikiwa mradi uko ndani ya shirika lingine, inahitajika kuwasiliana na msaada wa GCP ili kuhamasisha kutoka shirika hilo kwanza. Kwa maelezo zaidi angalia hii.

Sera za Shirika

Ruhusu kuimarisha udhibiti juu ya rasilimali za wingu za shirika lako:

  • Kuimarisha udhibiti ili kuweka vizuizi juu ya jinsi rasilimali za shirika lako zinaweza kutumika.
  • Mwelekeo na kuanzisha mipaka kwa timu zako za maendeleo ili kubaki ndani ya mipaka ya kufuata sheria.
  • Saidia wamiliki wa miradi na timu zao kuhamasisha haraka bila wasiwasi wa kuvunja sheria.

Sera hizi zinaweza kuundwa ili kuathiri shirika lote, folda au miradi. Wana wa node ya rasilimali iliyolengwa wanarithi sera za shirika.

Ili kufafanua sera ya shirika, unachagua kizuizi, ambacho ni aina maalum ya vizuizi dhidi ya huduma ya Google Cloud au kundi la huduma za Google Cloud. Unapanga kizuizi hicho kwa vizuizi unavyotaka.

Matumizi ya kawaida

  • Punguza ushirikiano wa rasilimali kulingana na kikoa.
  • Punguza matumizi ya akaunti za huduma za Usimamizi wa Utambulisho na Upatikanaji.
  • Punguza eneo halisi la rasilimali mpya zilizoundwa.
  • Zima 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 Sera za Shirika.

Sera za Shirika za Kawaida

Hizi ni sera ambazo Google itaongeza kwa default wakati wa kuanzisha shirika lako la GCP:

Sera za Usimamizi wa Upatikanaji

  • Wasiliana na kikoa kilichozuiliwa: Inazuia kuongeza watumiaji kwenye Wasiliana Muhimu nje ya maeneo yako yaliyotajwa. Hii inazuia Wasiliana Muhimu kuruhusu tu utambulisho wa watumiaji waliosimamiwa katika maeneo yako yaliyoteuliwa kupokea arifa za jukwaa.
  • Ushirikiano wa kikoa kilichozuiliwa: Inazuia kuongeza watumiaji kwenye sera za IAM nje ya maeneo yako yaliyotajwa. Hii inazuia sera za IAM kuruhusu tu utambulisho wa watumiaji waliosimamiwa katika maeneo yako yaliyoteuliwa kufikia rasilimali ndani ya shirika hili.
  • Kuzuia upatikanaji wa umma: Inazuia mifuko ya Uhifadhi wa Wingu kufichuliwa kwa umma. Hii inahakikisha kwamba mendelevu hawezi kupanga mifuko ya Uhifadhi wa Wingu kuwa na upatikanaji wa intaneti usio na uthibitisho.
  • Upatikanaji wa kiwango cha mifuko wa umoja: Inazuia orodha za udhibiti wa upatikanaji wa kiwango cha kitu (ACLs) katika mifuko ya Uhifadhi wa Wingu. Hii inarahisisha usimamizi wako wa upatikanaji kwa kutumia sera za IAM kwa usawa katika vitu vyote katika mifuko ya Uhifadhi wa Wingu.
  • Hitaji kuingia kwa OS: VMs zilizoundwa katika miradi mipya zitakuwa na kuingia kwa OS kuliwezesha. Hii inakuwezesha kusimamia upatikanaji wa SSH kwa mifano yako kwa kutumia IAM bila kuhitaji kuunda na kusimamia funguo za SSH za kibinafsi.

Sera za usalama za ziada kwa akaunti za huduma

  • Zima ruhusa za IAM za kiotomatiki: Inazuia akaunti za huduma za App Engine na Compute Engine kupewa ruhusa ya Mhariri wa IAM kiotomatiki wakati wa uundaji wa mradi. Hii inahakikisha akaunti za huduma hazipati ruhusa za IAM zenye nguvu kupita kiasi wakati wa uundaji.
  • Zima uundaji wa funguo za akaunti za huduma: Inazuia uundaji wa funguo za umma za akaunti za huduma. Hii husaidia kupunguza hatari ya kufichua ithibitisho endelevu.
  • Zima upakuaji wa funguo za akaunti za huduma: Inazuia upakuaji wa funguo za umma za akaunti za huduma. Hii husaidia kupunguza hatari ya kufichua au kutumia tena vifaa vya funguo.

Sera za usanidi wa mtandao wa VPC salama

  • Fafanua IP za nje zinazoruhusiwa kwa mifano ya VM: Inazuia uundaji wa mifano ya Compute zikiwa na IP ya umma, ambayo inaweza kuzifichua kwa trafiki ya intaneti.
  • Zima uhalisia wa ndani wa VM: Inazuia uundaji wa VMs za ndani kwenye VMs za Compute Engine. Hii inapunguza hatari ya usalama ya kuwa na VMs za ndani zisizofuatiliwa.
  • Zima bandari ya serial ya VM: Inazuia upatikanaji wa bandari ya serial kwa VMs za Compute Engine. Hii inazuia pembejeo kwenye bandari ya serial ya seva kwa kutumia API ya Compute Engine.
  • Punguza mitandao iliyoidhinishwa kwenye mifano ya Cloud SQL: Inazuia maeneo ya mtandao ya umma au yasiyo ya ndani kufikia hifadhidata zako za Cloud SQL.
  • Punguza Uhamasishaji wa Itifaki kulingana na aina ya IP: Inazuia uhamasishaji wa itifaki ya VM kwa anwani za IP za nje.
  • Punguza upatikanaji wa IP ya umma kwenye mifano ya Cloud SQL: Inazuia uundaji wa mifano ya Cloud SQL zikiwa na IP ya umma, ambayo inaweza kuzifichua kwa trafiki ya intaneti.
  • Punguza kuondolewa kwa dhamana ya mradi wa VPC iliyoshirikiwa: Inazuia kufutwa kwa bahati mbaya kwa miradi ya mwenyeji wa VPC iliyoshirikiwa.
  • Weka mipangilio ya DNS ya ndani kwa miradi mipya kuwa DNS ya Kihuduma tu: Inazuia matumizi ya mipangilio ya zamani ya DNS ambayo imepunguza upatikanaji wa huduma.
  • Skip uundaji wa mtandao wa default: Inazuia uundaji wa kiotomatiki wa mtandao wa VPC wa default na rasilimali zinazohusiana. Hii inakwepa sheria za moto za default zenye nguvu kupita kiasi.
  • Zima matumizi ya IPv6 ya nje ya VPC: Inazuia uundaji wa subnet za nje za IPv6, ambazo zinaweza kufichuliwa kwa upatikanaji wa intaneti usioidhinishwa.

Majukumu ya IAM

Hizi ni kama sera za IAM katika AWS kwani kila jukumu lina seti ya ruhusa.

Hata hivyo, tofauti na katika AWS, hakuna repo ya kati ya majukumu. Badala yake, rasilimali zinatoa majukumu X kwa wakala Y, na njia pekee ya kugundua nani ana upatikanaji wa rasilimali ni kutumia mbinu ya get-iam-policy juu ya rasilimali hiyo.
Hii inaweza kuwa tatizo kwa sababu hii inamaanisha kwamba njia pekee ya kugundua ni ruhusa zipi wakala ana ni kuuliza kila rasilimali ni nani inayoipa ruhusa, na mtumiaji huenda hana ruhusa za kupata ruhusa kutoka kwa rasilimali zote.

Kuna aina tatu za majukumu katika IAM:

  • Majukumu ya Msingi/Msingi, ambayo yanajumuisha Mmiliki, Mhariri, na Mtazamaji ambayo yalikuwepo kabla ya kuanzishwa kwa IAM.
  • Majukumu yaliyotangazwa, ambayo yanatoa upatikanaji wa kina kwa huduma maalum na yanadhibitiwa na Google Cloud. Kuna majukumu mengi yaliyotangazwa, unaweza kuona yote pamoja na ruhusa zao hapa.
  • Majukumu ya Kijadi, ambayo yanatoa upatikanaji wa kina kulingana na orodha ya ruhusa iliyotolewa na mtumiaji.

Kuna maelfu ya ruhusa katika GCP. Ili kuangalia ikiwa jukumu lina ruhusa unaweza kutafuta ruhusa hapa na kuona ni majukumu gani yana hiyo.

Unaweza pia kutafuta hapa majukumu yaliyotangazwa yanayotolewa na kila bidhaa. Kumbuka kwamba baadhi ya majukumu hayawezi kuunganishwa na watumiaji na tu kwa SAs kwa sababu ya ruhusa wanazozishikilia.
Zaidi ya hayo, kumbuka kwamba ruhusa zitachukua madhara tu ikiwa zime unganishwa na huduma husika.

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

Watumiaji

Katika konso ya GCP hakuna usimamizi wa Watumiaji au Vikundi, hiyo inafanywa katika Google Workspace. Ingawa unaweza kusawazisha mtoa huduma tofauti wa utambulisho katika Google Workspace.

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

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

Vikundi

Wakati shirika linaundwa vikundi kadhaa vinapendekezwa kwa nguvu kuundwa. Ikiwa unasimamia yoyote kati yao unaweza kuwa umepata hatari kwa shirika lote au sehemu muhimu ya shirika:

KikundiFunguo
gcp-organization-admins
(akaunti za kikundi au mtu binafsi zinahitajika kwa orodha ya ukaguzi)
Kusimamia rasilimali yoyote inayomilikiwa na shirika. Panga jukumu hili kwa uangalifu; wasimamizi wa shirika wana upatikanaji wa rasilimali zako zote za Google Cloud. Badala yake, kwa sababu kazi hii ina mamlaka makubwa, fikiria kutumia akaunti za mtu binafsi badala ya kuunda kikundi.
gcp-network-admins
(zinahitajika kwa orodha ya ukaguzi)
Kuunda mitandao, subnet, sheria za moto, na vifaa vya mtandao kama vile Cloud Router, Cloud VPN, na mizani ya mzigo wa wingu.
gcp-billing-admins
(zinahitajika kwa orodha ya ukaguzi)
Kuweka akaunti za bili na kufuatilia matumizi yao.
gcp-developers
(zinahitajika kwa orodha ya ukaguzi)
Kubuni, kuandika, na kupima programu.
gcp-security-admins
Kuweka na kusimamia sera za usalama kwa shirika lote, ikiwa ni pamoja na usimamizi wa upatikanaji na sera za vizuizi vya shirika. Tazama mwongozo wa misingi ya usalama wa Google Cloud kwa maelezo zaidi kuhusu kupanga miundombinu yako ya usalama wa Google Cloud.
gcp-devopsKuunda au kusimamia mipango ya mwisho hadi mwisho inayosaidia uunganisho wa kuendelea na utoaji, ufuatiliaji, na usanidi wa mfumo.
gcp-logging-admins
gcp-logging-viewers
gcp-monitor-admins
gcp-billing-viewer
(sio tena kwa default)
Kufuatilia matumizi kwenye miradi. Wanachama wa kawaida ni sehemu ya timu ya fedha.
gcp-platform-viewer
(sio tena kwa default)
Kukagua taarifa za rasilimali katika shirika la Google Cloud.
gcp-security-reviewer
(sio tena kwa default)
Kukagua usalama wa wingu.
gcp-network-viewer
(sio tena kwa default)
Kukagua usanidi wa mtandao.
grp-gcp-audit-viewer
(sio tena kwa default)
Kukagua kumbukumbu za ukaguzi.
gcp-scc-admin
(sio tena kwa default)
Kusimamia Kituo cha Amri ya Usalama.
gcp-secrets-admin
(sio tena kwa default)
Kusimamia siri katika Meneja wa Siri.

Sera ya Nywila ya Kawaida

  • Lazimisha nywila zenye nguvu
  • Kati ya herufi 8 na 100
  • Hakuna kurudiwa
  • Hakuna muda wa kumalizika
  • Ikiwa watu wanapata Workspace kupitia mtoa huduma wa tatu, masharti haya hayatumiki.

Akaunti za huduma

Hizi ni wakala ambao rasilimali zinaweza kuwa zilizounganishwa na upatikanaji wa kuingiliana kwa urahisi na GCP. Kwa mfano, inawezekana kufikia tokeni ya uthibitisho ya Akaunti ya Huduma iliyounganishwa na VM katika metadata.
Inawezekana kukutana na baadhi ya mizozo unapokuwa ukitumia IAM na mipaka ya upatikanaji. Kwa mfano, akaunti yako ya huduma inaweza kuwa na jukumu la IAM la compute.instanceAdmin lakini mfano uliyovunja umewekwa mipaka na kizuizi cha https://www.googleapis.com/auth/compute.readonly. Hii itakuzuia kufanya mabadiliko yoyote kwa kutumia tokeni ya OAuth ambayo inatolewa kiotomatiki kwa mfano wako.

Ni sawa na majukumu ya IAM kutoka AWS. Lakini tofauti na katika AWS, akaunti yoyote ya huduma inaweza kuunganishwa na huduma yoyote (haihitaji kuiruhusu kupitia sera).

Baadhi ya akaunti za huduma ambazo utaziona kwa kweli zinaundwa kiotomatiki na GCP unapokuwa ukitumia huduma, kama:

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

Hata hivyo, inawezekana pia kuunda na kuunganisha kwenye rasilimali akaunti za huduma za kawaida, ambazo zitakuwa kama hii:

SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com

Keys & Tokens

Kuna njia 2 kuu za kufikia GCP kama akaunti ya huduma:

  • Via OAuth tokens: Hizi ni token ambazo utapata kutoka maeneo kama vile metadata endpoints au kuiba maombi ya http na zinapunguzwa na access scopes.
  • Keys: Hizi ni jozi za funguo za umma na za faragha ambazo zitakuruhusu kusaini maombi kama akaunti ya huduma na hata kuunda token za OAuth ili kufanya vitendo kama akaunti ya huduma. Funguo hizi ni hatari kwa sababu ni ngumu zaidi kuzitenga na kudhibiti, ndiyo maana GCP inapendekeza kutosababisha hizo.
  • Kumbuka kwamba kila wakati akaunti ya SA inaundwa, GCP inaunda funguo kwa akaunti ya huduma ambayo mtumiaji hawezi kufikia (na haitatajwa katika programu ya wavuti). Kulingana na thread hii funguo hii inatumiwa ndani na GCP kutoa ufikiaji wa metadata endpoints ili kuunda token za OAuth zinazopatikana.

Access scopes

Access scope zime unganishwa na token za OAuth zilizozalishwa ili kufikia viwango vya API vya GCP. Zinapunguza idhini za token ya OAuth.
Hii ina maana kwamba ikiwa token inamhusu Mmiliki wa rasilimali lakini haina katika scope ya token kufikia rasilimali hiyo, token haiwezi kutumika (ku)kuza hizo haki.

Google kwa kweli inapendekeza kwamba access scopes zisitumike na kutegemea kabisa IAM. Kituo cha usimamizi wa wavuti kwa kweli kinatekeleza hili, lakini access scopes bado zinaweza kutumika kwa mifano kwa kutumia akaunti za huduma za kawaida kimaandishi.

Unaweza kuona ni scopes zipi zime pewa kwa kuuliza:

bash
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"
}

Mipaka ya awali ni zile zinazozalishwa kwa default kwa kutumia gcloud ili kufikia data. Hii ni kwa sababu unapoitumia gcloud kwanza unaunda token ya OAuth, kisha unaitumia kuwasiliana na maeneo ya mwisho.

Mipaka muhimu zaidi kati ya hizo ni cloud-platform, ambayo kimsingi inamaanisha kwamba inawezekana kufikia huduma yoyote katika GCP.

Unaweza kupata orodha ya mipaka yote inayowezekana hapa.

Ikiwa una gcloud akreditif za kivinjari, inawezekana kupata token yenye mipaka mingine, ukifanya kitu kama:

bash
# 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, Mikataba na Uanachama

Kama ilivyoainishwa na terraform katika https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/google_project_iam kutumia terraform na GCP kuna njia tofauti za kutoa ufikiaji kwa principal juu ya rasilimali:

  • Uanachama: Unapoweka principals kama wanachama wa majukumu bila vizuizi juu ya jukumu au principals. Unaweza kuweka mtumiaji kama mwanachama wa jukumu kisha kuweka kundi kama mwanachama wa jukumu hilo hilo na pia kuweka principals hao (mtumiaji na kundi) kama wanachama wa majukumu mengine.
  • Mikataba: Principals kadhaa wanaweza kuunganishwa na jukumu. Principals hao bado wanaweza kuunganishwa au kuwa wanachama wa majukumu mengine. Hata hivyo, ikiwa principal ambaye hajaunganishwa na jukumu amewekwa kama mwanachama wa jukumu lililounganishwa, wakati wa pili mkataba unapotumika, uanachama utaondoka.
  • Sera: Sera ni mamlaka, inaonyesha majukumu na principals na kisha, principals hao hawawezi kuwa na majukumu zaidi na majukumu hayo hayawezi kuwa na principals zaidi isipokuwa sera hiyo ibadilishwe (hata katika sera nyingine, mikataba au uanachama). Kwa hivyo, wakati jukumu au principal inapoainishwa katika sera, haki zake zote zinapunguziliwa mbali na sera hiyo. Kwa wazi, hii inaweza kupuuziliwa mbali ikiwa principal atapewa chaguo la kubadilisha sera au ruhusa za kupandisha hadhi (kama kuunda principal mpya na kumuweka kwenye jukumu jipya).

Marejeo

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks