GCP - Basic Information

Leer AWS hakwerk vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Hulpbronhiërargie

Google Cloud maak gebruik van 'n Hulpbronhiërargie wat konseptueel soortgelyk is aan dié van 'n tradisionele lêersisteem. Dit bied 'n logiese ouer/kind-werkvloei met spesifieke aanhegtingspunte vir beleide en toestemmings.

Op 'n hoë vlak lyk dit soos dit:

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

'n Virtuele masjien (genoem 'n Rekeningsinstansie) is 'n hulpbron. 'n Hulpbron bly in 'n projek, moontlik langs ander Rekeningsinstansies, stoorhouers vir data, ens.

Projeksmigrasie

Dit is moontlik om 'n projek sonder enige organisasie te migreer na 'n organisasie met die toestemmings roles/resourcemanager.projectCreator en roles/resourcemanager.projectMover. As die projek binne 'n ander organisasie is, moet daar met GCP-ondersteuning gekontak word om hulle eerstens uit die organisasie te skuif. Vir meer inligting, kyk hier.

Organisasiebeleide

Dit maak dit moontlik om beheer oor jou organisasie se wolkhulpbronne te sentraliseer:

  • Sentraliseer beheer om beperkings te konfigureer oor hoe jou organisasie se hulpbronne gebruik kan word.

  • Definieer en stel riglyne vas vir jou ontwikkelingsspanne om binne die nakomingsgrense te bly.

  • Help projek-eienaars en hul spanne om vinnig te beweeg sonder om bekommerd te wees oor die oortreding van nakomings.

Hierdie beleide kan geskep word om die volledige organisasie, vouer(s) of projek(te) te beïnvloed. Afstammelinge van die geteikende hulpbronhiërargienoot erf die organisasiebeleid.

Om 'n organisasiebeleid te definieer, kies jy 'n beperking, wat 'n spesifieke tipe beperking teen 'n Google Cloud-diens of 'n groep Google Cloud-diens is. Jy konfigureer daardie beperking met jou gewenste beperkings.

Algemene gevalle van gebruik

  • Beperk die deel van hulpbronne op grond van domein.

  • Beperk die gebruik van Identiteit- en Toegangsbestuurdienst-rekeninge.

  • Beperk die fisiese ligging van nuut geskepte hulpbronne.

  • Deaktiveer die skepping van diensrekening.

Daar is baie meer beperkings wat jou fynkontrole oor jou organisasie se hulpbronne gee. Vir meer inligting, sien die lys van alle Organisasiebeleiddiensbeperkings.

Standaard Organisasiebeleide

Dit is die beleide wat Google standaard sal byvoeg wanneer jou GCP-organisasie opgestel word:

Toegangsbestuursbeleide

  • Domeinbeperkte kontakte: Voorkom dat gebruikers by Essensiële Kontakte buite jou gespesifiseerde domeine gevoeg word. Dit beperk Essensiële Kontakte om slegs bestuurde gebruikersidentiteite in jou gekose domeine toe te laat om platformkennisgewings te ontvang.

  • Domeinbeperkte deelname: Voorkom dat gebruikers by IAM-beleide buite jou gespesifiseerde domeine gevoeg word. Dit beperk IAM-beleide om slegs bestuurde gebruikersidentiteite in jou gekose domeine toe te laat om hulpbronne binne hierdie organisasie te benader.

  • Openbare toegang voorkoming: Voorkom dat Cloud Storage-houers aan die publiek blootgestel word. Dit verseker dat 'n ontwikkelaar nie Cloud Storage-houers kan konfigureer om ongeagte internettoegang te hê nie.

  • Uniform houertoegangsvlak: Voorkom dat voorwerpvlak-toegangsbeheerlyste (ACL's) in Cloud Storage-houers. Dit vereenvoudig jou toegangsbestuur deur IAM-beleide konsekwent toe te pas oor alle voorwerpe in Cloud Storage-houers.

  • Vereis OS-aanmelding: VM's wat in nuwe projekte geskep word, sal OS-aanmelding geaktiveer hê. Dit stel jou in staat om SSH-toegang tot jou instansies te bestuur deur gebruik te maak van IAM sonder om individuele SSH-sleutels te skep en te bestuur.

Addisionele sekuriteitsbeleide vir diensrekeninge

  • Deaktiveer outomatiese IAM-toekennings: Voorkom dat die verstek App Engine- en Compute Engine-diensrekeninge outomaties die Redakteur IAM-rol op 'n projek by skepping ontvang. Dit verseker dat diensrekeninge nie oormatig permisiewe IAM-rolle by skepping ontvang nie.

  • Deaktiveer die skepping van diensrekeningsleutels: Voorkom die skepping van openbare diensrekeningsleutels. Dit help om die risiko van die blootstelling van volgehoue geloofsbriewe te verminder.

  • Deaktiveer die oplaai van diensrekeningsleutels: Voorkom die oplaai van openbare diensrekeningsleutels. Dit help om die risiko van gelekte of hergebruikte sleutelmateriaal te verminder.

Veilige VPC-netwerkkonfigurasiebeleide

  • Definieer toegelate eksterne IP's vir VM-instansies: Voorkom die skepping van Rekeninstansies met 'n openbare IP, wat hulle aan internetverkeer kan blootstel.

  • Deaktiveer VM-geneste virtualisering: Voorkom die skepping van geneste VM's op Compute Engine VM's. Dit verminder die sekuriteitsrisiko van ongemonteerde geneste VM's.

  • Deaktiveer VM-serialpoort: Voorkom die toegang tot die serialpoort van Compute Engine VM's. Dit voorkom insette na 'n bediener se serialpoort deur die gebruik van die Compute Engine API.

  • Beperk gemagtigde netwerke op Cloud SQL-instansies: Voorkom dat openbare of nie-interne netwerkranges toegang tot jou Cloud SQL-databasisse verkry.

  • Beperk Protokolstuur op grond van die tipe IP-adres: Voorkom VM-protokolstuur vir eksterne IP-adresse.

  • Beperk openbare IP-toegang op Cloud SQL-instansies: Voorkom die skepping van Cloud SQL-instansies met 'n openbare IP, wat hulle aan internetverkeer kan blootstel.

  • Beperk gedeelde VPC-projeklienverwydering: Voorkom die ongelukkige verwydering van Gedeelde VPC-gashouerprojekte.

  • Stel die interne DNS-instelling vir nuwe projekte in op Sonaal DNS Alleenlik: Voorkom die gebruik van 'n erfenis-DNS-instelling wat 'n verminderde diensbeskikbaarheid het.

  • Slaan die standaardnetwerk skepping oor: Voorkom die outomatiese skepping van die standaard VPC-netwerk en verwante hulpbronne. Dit vermy oormatig permisiewe standaardvuremuurreeëls.

  • Deaktiveer VPC-eksterne IPv6-gebruik: Voorkom die skepping van eksterne IPv6-subnetwerke, wat aan ongemagtigde internettoegang blootgestel kan word.

IAM-rolle

Hierdie is soos IAM-beleide in AWS aangesien elke rol 'n stel toestemmings bevat.

Tog, in teenstelling met AWS, is daar geen gesentraliseerde bewaarplek van rolle nie. In plaas daarvan gee hulpbronne X-toegangsrolle aan Y-prinsipale, en die enigste manier om uit te vind wie toegang tot 'n hulpbron het, is om die get-iam-policy-metode oor daardie hulpbron te gebruik. Dit kan 'n probleem wees omdat dit beteken dat die enigste manier om uit te vind watter toestemmings 'n prinsipaal het, is om elke hulpbron te vra aan wie dit toestemmings gee, en 'n gebruiker mag nie toestemmings hê om toestemmings van alle hulpbronne te kry nie.

Daar is drie tipes rolle in IAM:

  • Basiese/Primitiewe rolle, wat die Eienaar, Redakteur, en Kykrolle insluit wat bestaan het voordat IAM ingevoer is.

  • Voorafbepaalde rolle, wat fyn toegang vir 'n spesifieke diens bied en deur Google Cloud bestuur word. Daar is baie voorafbepaalde rolle, jy kan al hulle sien met die voorregte wat hulle het hier.

  • Aangepaste rolle, wat fyn toegang volgens 'n lys van toestemmings wat deur die gebruiker gespesifiseer is, bied.

Daar is duisende toestemmings in GCP. Om te kontroleer of 'n rol toestemmings het, kan jy die toestemming hier soek en sien watter rolle dit het.

Jy kan ook hier voorafbepaalde rolle soek wat deur elke produk aangebied word. Let daarop dat sommige rolle nie aan gebruikers geheg kan word nie en net aan SAs geheg kan word as gevolg van sommige toestemmings wat hulle bevat. Verder, let daarop dat toestemmings slegs van krag sal wees as hulle aan die betrokke diens geheg is.

Of kontroleer of 'n aangepaste rol 'n spesifieke toestemming hier kan gebruik.

pageGCP - IAM, Principals & Org Policies Enum

Gebruikers

In die GCP-konsole is daar geen Gebruikers of Groepe bestuur nie, dit word in Google Workspace gedoen. Alhoewel jy 'n ander identiteitsverskaffer in Google Workspace kan sinchroniseer.

Jy kan Werkspasies gebruikers en groepe bereik by https://admin.google.com.

MFA kan aan Werkspasies-gebruikers opgelê word, maar 'n aanvaller kan 'n token gebruik om toegang tot GCP te kry via cli wat nie deur MFA beskerm sal word (dit sal slegs deur MFA beskerm word wanneer die gebruiker aanmeld om dit te genereer: gcloud auth login).

Groepe

Wanneer 'n organisasie geskep word, word dit sterk aanbeveel om verskeie groepe te skep. As jy enige van hulle bestuur, kan jy dalk die hele organisasie of 'n belangrike deel daarvan kompromitteer:

Groep

Funksie

gcp-organization-admins (groep of individuele rekeninge vereis vir lys)

Administrasie van enige hulpbron wat aan die organisasie behoort. Ken hierdie rol spaarsaam toe; org-admins het toegang tot al jou Google Cloud-hulpbronne. Alternatief, omdat hierdie funksie hoogs bevoorreg is, oorweeg om individuele rekeninge te gebruik in plaas van 'n groep te skep.

gcp-network-admins (vereis vir lys)

Netwerke, subnetwerke, firewall-reëls en netwerktoestelle soos Cloud Router, Cloud VPN, en wolk balanseringstelsels skep.

gcp-billing-admins (vereis vir lys)

Opstel van faktureringsrekeninge en monitering van hul gebruik.

gcp-developers (vereis vir lys)

Ontwerp, kodering, en toetsing van aansoeke.

gcp-security-admins

Vasstel en bestuur van sekuriteitsbeleide vir die hele organisasie, insluitend toegangsbestuur en organisasiebeleidsbeperkings. Sien die Google Cloud-sekuriteitsgrondslae-gids vir meer inligting oor die beplanning van jou Google Cloud-sekuriteitsinfrastruktuur.

gcp-devops

Skep of bestuur van begin tot einde-pyplyne wat voortdurende integrasie en aflewering, monitering, en stelselvoorsiening ondersteun.

gcp-logging-admins

gcp-logging-viewers

gcp-monitor-admins

gcp-billing-viewer (nie meer standaard nie)

Monitering van die spandering op projekte. Tipiese lede is deel van die finansiële span.

gcp-platform-viewer (nie meer standaard nie)

Hersiening van hulpbroninligting regoor die Google Cloud-organisasie.

gcp-security-reviewer (nie meer standaard nie)

Hersiening van wolksekuriteit.

gcp-network-viewer (nie meer standaard nie)

Hersiening van netwerkkonfigurasies.

grp-gcp-audit-viewer (nie meer standaard nie)

Hersiening van ouditlogs.

gcp-scc-admin (nie meer standaard nie)

Administrasie van Security Command Center.

gcp-secrets-admin (nie meer standaard nie)

Bestuur van geheime in Secret Manager.

Verstek Wagwoordbeleid

  • Dwing sterk wagwoorde af

  • Tussen 8 en 100 karakters

  • Geen hergebruik

  • Geen verval

  • As mense toegang tot Werkspasies deur 'n derde partyverskaffer verkry, word hierdie vereistes nie toegepas nie.

Diensrekeninge

Dit is die beginsels wat hulpbronne kan geheg en toegang hê om maklik met GCP te interaksieer. Byvoorbeeld, dit is moontlik om die outentiseringsleutel van 'n Diensrekening geheg aan 'n VM in die metadata te kry. Dit is moontlik om enkele konflikte te ervaar wanneer jy beide IAM en toegangsbereike gebruik. Byvoorbeeld, jou diensrekening mag die IAM-rol van compute.instanceAdmin hê, maar die instansie wat jy oortree het, is beperk met die omvangsbeperking van https://www.googleapis.com/auth/compute.readonly. Dit sal voorkom dat jy enige veranderinge kan maak met die OAuth-token wat outomaties aan jou instansie toegewys is.

Dit is soortgelyk aan IAM-rolle van AWS. Maar nie soos in AWS nie, kan enige diensrekening aan enige diens geheg word (dit hoef nie toegelaat te word via 'n beleid nie).

Verskeie van die diensrekeninge wat jy sal vind, is eintlik outomaties gegenereer deur GCP wanneer jy begin om 'n diens te gebruik, soos:

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

Dit is egter ook moontlik om aangepaste diensrekeninge te skep en daaraan te koppel, wat soos volg sal lyk:

SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com

Toegangsbereike

Toegangsbereike word geheg aan gegenereerde OAuth-tokens om toegang te verkry tot die GCP-API-eindpunte. Hulle beperk die regte van die OAuth-token. Dit beteken dat as 'n token aan 'n Eienaar van 'n hulpbron behoort, maar nie die reikwydte in die token het om daardie hulpbron te benader nie, kan die token nie gebruik word om daardie regte te misbruik nie.

Google beveel eintlik aan dat toegangsbereike nie gebruik word nie en dat u heeltemal op IAM moet staatmaak. Die webbestuursportaal dwing dit eintlik af, maar toegangsbereike kan steeds op instansies toegepas word deur middel van aangepaste diensrekeninge programmaties.

U kan sien watter reikwydtes is toegewys deur navraag te doen:

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

Die vorige omvang is diegene wat standaard gegenereer word deur gcloud te gebruik om data te ontsluit. Dit is omdat wanneer jy gcloud gebruik, skep jy eers 'n OAuth-token, en gebruik dit dan om die eindpunte te kontak.

Die belangrikste omvang van daardie potensieel is cloud-platform, wat basies beteken dat dit moontlik is om enige diens in GCP te ontsluit.

Jy kan 'n lys van alle moontlike omvang hier vind.

As jy gcloud-blaaiergelde het, is dit moontlik om 'n token met ander omvang te verkry, deur iets soos:

# 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>"

Terraform IAM-beleide, Bindings en Lede

Soos gedefinieer deur terraform in https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/google_project_iam deur terraform met GCP te gebruik, is daar verskillende maniere om 'n hoof toegang tot 'n hulpbron te verleen:

  • Lede: Jy stel hoofde as lede van rolle sonder beperkings oor die rol of die hoofde. Jy kan 'n gebruiker as 'n lid van 'n rol plaas en dan 'n groep as 'n lid van dieselfde rol plaas en ook daardie hoofde (gebruiker en groep) as lid van ander rolle plaas.

  • Bindings: Verskeie hoofde kan aan 'n rol gebind word. Daardie hoofde kan steeds gebind word of lede van ander rolle wees. Indien 'n hoof wat nie aan die rol gebind is nie, as lid van 'n gebinde rol ingestel word, sal die volgende keer dat die binding toegepas word, die lidmaatskap verdwyn.

  • Beleide: 'n Beleid is gesaghebbend, dit dui rolle en hoofde aan en dan kan daardie hoofde nie meer rolle hê en daardie rolle kan nie meer hoofde hê tensy daardie beleid gewysig word (selfs nie in ander beleide, bindings of lede nie). Daarom, wanneer 'n rol of hoof in 'n beleid gespesifiseer word, is al sy voorregte beperk deur daardie beleid. Dit kan natuurlik omseil word in die geval waar die hoof die opsie gegee word om die beleid te wysig of voorreg-escalasie-permissies te verkry (soos die skep van 'n nuwe hoof en hom 'n nuwe rol bind).

Verwysings

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated