# GCP - Bigtable Enum

{{#include ../../../banners/hacktricks-training.md}}

## Bigtable

Google Cloud Bigtable is 'n volledig bestuurde, skaalbare NoSQL-databasis wat ontwerp is vir toepassings wat buitengewoon hoë deurset en lae latensie vereis. Dit is gebou om massiewe hoeveelhede data te hanteer — petabytes oor duisende nodes — terwyl dit steeds vinnige lees- en skryfprestasie bied. Bigtable is ideaal vir werkladinge soos time-series data, IoT-telemetrie, finansiële analise, personaliseringsengines en groot-skaalse operasionele databasisse. Dit gebruik 'n spars, verspreide, veeldimensionele gesorteerde map as die onderliggende stoor-model, wat dit doeltreffend maak om breë tabelle te stoor waar baie kolomme leeg kan wees. [Learn more](https://cloud.google.com/bigtable).

### Hiërargie

1. **Bigtable Instansie**

'n Bigtable-instansie is die topvlak hulpbron wat jy skep.
Dit stoor nie data op sigself nie—dink daaraan as 'n logiese houer wat jou clusters en tabelle groepeer.

Twee tipes instansies bestaan:

- Development instance (single-node, goedkoop, nie vir produksie nie)
- Production instance (kan meerdere clusters hê)

2. **Clusters**

'n Cluster bevat die werklike compute- en stoorhulpbronne wat gebruik word om Bigtable-data te bedien.

- Elke cluster leef in 'n enkele streek.
- Dit bestaan uit nodes, wat CPU, RAM en netwerkvermoëns verskaf.
- Jy kan multi-cluster instansies skep vir hoë beskikbaarheid of globale lees/sryf.
- Data word outomaties gerepliseer tussen clusters in dieselfde instansie.

Belangrik:
- Tabelle behoort aan die instansie, nie aan 'n spesifieke cluster nie.
- Clusters verskaf bloot die hulpbronne om die data te bedien.

3. **Tabelle**

'n Tabel in Bigtable is soortgelyk aan 'n tabel in NoSQL-databasisse:

- Data word in rye gestoor, geïdentifiseer deur 'n row key.
- Elke ry bevat kolomfamilies, wat kolomme bevat.
- Dit is spars: leë selle verbruik nie ruimte nie.
- Bigtable stoor data gesorteer leksikografies volgens die row key.

Tabelle word bedien deur alle clusters in die instansie.

4. **Tablets (and Hot Tablets)**

Bigtable verdeel elke tabel in horisontale partisies genaamd tablets. 'n tablet is 'n:

- Aaneenlopende reeks van row keys.
- Gestoor op 'n enkele node op enige gegewe oomblik.
- Tablets word outomaties gesplit, saamgevoeg en verskuif deur Bigtable.

'n **Hot tablet** gebeur wanneer:

- Te veel lees- of skryfaksies dieselfde row-key-reeks (dieselfde tablet) tref.
- Daardie spesifieke tablet/node oorlaai raak.
- Dit lei tot hotspots (prestasie-vernouings).

5. **Authorized Views**

Authorized views laat jou toe om 'n substel van 'n tabel se data te skep wat gedeel kan word met spesifieke gebruikers of toepassings sonder om hulle toegang tot die hele tabel te gee. Dit is nuttig vir:

- Beperking van toegang tot sensitiewe data.
- Verskaffing van read-only toegang tot spesifieke kolomme of rye.

6. **App Profiles**

'n Bigtable app profile is 'n konfigurasie wat definieer hoe 'n spesifieke toepassing of kliënt met 'n Bigtable-instansie moet skakel, veral in omgewings met meerdere clusters. Dit beheer routeringsgedrag—of versoeke na 'n enkele cluster gestuur moet word of oor meerdere clusters versprei moet word vir hoë beskikbaarheid—en regeer hoe skryfaksies gerepliseer word, met keuses tussen sinchrone (sterker konsistensie) of asinchrone (laer latensie) modusse.
```bash
# Cloud Bigtable
gcloud bigtable instances list
gcloud bigtable instances describe <instance>
gcloud bigtable instances get-iam-policy <instance>

## Clusters
gcloud bigtable clusters list
gcloud bigtable clusters describe <cluster>

## Tables
gcloud bigtable tables list --instance <INSTANCE>
gcloud bigtable tables describe --instance <INSTANCE> <TABLE>
gcloud bigtable tables get-iam-policy --instance <INSTANCE> <TABLE>

## Backups
gcloud bigtable backups list --instance <INSTANCE>
gcloud bigtable backups describe --instance <INSTANCE> <backupname>
gcloud bigtable backups get-iam-policy --instance <INSTANCE> <backupname>

## Hot Tables
gcloud bigtable hot-tablets list

## App Profiles
gcloud bigtable app-profiles list --instance <INSTANCE>
gcloud bigtable app-profiles describe --instance <INSTANCE> <app-prof>

## Authorized Views
gcloud bigtable authorized-views list --instance <INSTANCE> --table <TABLE>
gcloud bigtable authorized-views describe --instance <INSTANCE> --table <TABLE> <VIEW>
```
## Privilege Escalation

{{#ref}}
../gcp-privilege-escalation/gcp-bigtable-privesc.md
{{#endref}}

## Post Exploitation

{{#ref}}
../gcp-post-exploitation/gcp-bigtable-post-exploitation.md
{{#endref}}

## Persistence

{{#ref}}
../gcp-persistence/gcp-bigtable-persistence.md
{{#endref}}

{{#include ../../../banners/hacktricks-training.md}}
