Menggunakan kunci enkripsi yang dikelola pelanggan (CMEK)
Halaman ini menjelaskan cara melakukan tugas yang terkait dengan kunci enkripsi yang dikelola pelanggan (CMEK) untuk Bigtable. Untuk mengetahui informasi selengkapnya tentang CMEK secara umum, termasuk waktu dan alasan mengaktifkannya, lihat dokumentasi Cloud KMS.
Sebaiknya gunakan konsol Google Cloud untuk semua tugas pengelolaan kunci. Jika Anda berencana menggunakan Google Cloud CLI, instal gcloud CLI untuk Bigtable.
Menyiapkan kunci CMEK
Sebelum dapat membuat resource Bigtable yang dilindungi CMEK, Anda harus menyelesaikan langkah-langkah berikut untuk membuat kunci CMEK untuk setiap region tempat cluster instance akan berada:
- Buat (atau ambil) agen layanan Bigtable.
- Buat kunci CMEK.
- Konfigurasikan setelan IAM untuk kunci tersebut.
Membuat agen layanan Bigtable
Sebelum membuat kunci CMEK, Anda harus memiliki agen layanan Bigtable, yang digunakan Bigtable untuk mengakses kunci.
Konsol
Anda tidak dapat membuat agen layanan di konsol Google Cloud. Namun, jika Anda membuat kunci di konsol Google Cloud, Anda akan diminta untuk memberikan peran Pengenkripsi/Pendekripsi Cloud KMS, dan agen layanan akan dibuat pada saat itu jika belum ada.
gcloud
Jalankan perintah gcloud services identity create untuk melihat agen layanan yang digunakan Bigtable untuk mengakses kunci CMEK atas nama Anda. Perintah ini akan membuat akun layanan jika belum ada, lalu menampilkannya.
gcloud beta services identity create \ --service=bigtableadmin.googleapis.com \ --project CBT_PROJECT
Ganti
CBT_PROJECT
dengan project yang berisi resource Bigtable Anda.Perintah ini akan menampilkan ID agen layanan, yang diformat seperti alamat email. Catat string email output, karena Anda akan menggunakannya di langkah berikutnya.
Service identity created: service-xxx@gcp-sa-bigtable.iam.gserviceaccount.com
Buat kunci
Anda dapat menggunakan kunci yang dibuat langsung di Cloud KMS atau kunci yang dikelola secara eksternal yang Anda sediakan dengan Cloud External Key Manager.
Di project Google Cloud tempat Anda ingin mengelola kunci:
Buat key ring dan kunci menggunakan salah satu opsi berikut:
- Buat key ring dan kunci langsung di Cloud KMS.
- Gunakan kunci yang dikelola secara eksternal. Buat kunci eksternal, lalu buat kunci Cloud EKM untuk menyediakan kunci tersebut melalui Cloud KMS.
Lokasi kunci Cloud KMS harus sama dengan cluster Bigtable yang akan digunakan. Misalnya, jika Anda membuat key ring dan kunci di
us-central1
(Iowa), cluster dius-central1-a
,us-central1-b
, danus-central1-c
dapat dilindungi oleh kunci dari key ring tersebut.
Mengonfigurasi setelan IAM untuk kunci
Konsol
Untuk memberikan peran Cloud KMS ke agen layanan Anda, lakukan hal berikut: Anda juga dapat memberikan izin di tingkat kunci atau ring kunci jika menginginkan tingkat perincian yang lebih rendah.
Di konsol Google Cloud, buka halaman IAM.
Klik Tambahkan.
Masukkan ID berformat email untuk agen layanan Bigtable Anda.
Pilih peran Cloud KMS CryptoKey Encrypter/Decrypter.
Klik Simpan.
gcloud
Berikan peran
cloudkms.cryptoKeyEncrypterDecrypter
ke agen layanan Anda:gcloud kms keys add-iam-policy-binding KMS_KEY \ --keyring KMS_KEYRING\ --location KMS_LOCATION \ --member serviceAccount:SERVICE_ACCOUNT_EMAIL \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KMS_PROJECT
Berikan hal berikut:
KMS_KEY
: nama yang Anda tetapkan ke kunciKMS_KEYRING
: key ring KMS yang berisi kunciKMS_LOCATION
: region yang berisi key ringSERVICE_ACCOUNT_EMAIL
: ID berformat email untuk agen layanan yang aksesnya Anda berikanKMS_PROJECT
: project yang berisi kunci
Membuat instance yang mendukung CMEK
Setelah kunci CMEK dibuat dan dikonfigurasi, Anda dapat membuat instance yang dilindungi CMEK. Instance Bigtable yang ada dan dilindungi oleh enkripsi default Google tidak dapat dikonversi untuk menggunakan CMEK; Anda hanya dapat memilih jenis dan kunci enkripsi pada saat pembuatan.
Ikuti langkah-langkah di Membuat instance untuk membuat instance yang dilindungi CMK.
Melihat kunci yang digunakan
Informasi tentang versi kunci berasal dari kolom encryption_info
.
Untuk melihat informasi versi kunci CMEK untuk tabel, selesaikan langkah-langkah berikut:
Konsol
Buka halaman instance Bigtable di konsol Google Cloud.
Klik nama instance yang berisi tabel untuk membuka halaman Detail Instance dan melihat daftar cluster dalam instance.
Di samping ID cluster, klik nama kunci di bagian Kunci enkripsi untuk melihat halaman Versi untuk kunci cluster.
gcloud
Untuk setiap cluster, Anda dapat mengonfirmasi konfigurasi CMEK-nya sebagai berikut:
gcloud bigtable clusters describe CLUSTER_ID \
--instance INSTANCE_ID --project CBT_PROJECT
Berikan hal berikut:
CLUSTER_ID
: ID permanen untuk clusterINSTANCE_ID
: ID permanen untuk instanceCBT_PROJECT
: project yang berisi resource Bigtable Anda
Perintah ini menampilkan output yang mirip dengan berikut ini:
defaultStorageType: SSD
encryptionConfig:
kmsKeyName: projects/cloud-kms-project/locations/us-central1/keyRings/cloud-bigtable-keys/cryptoKeys/my-cmek-key
location: projects/cloud-bigtable-project/locations/us-central1-a
name: projects/cloud-bigtable-project/instances/cmek-test-instance/clusters/my-cluster
serveNodes: 1
state: READY
Menonaktifkan kunci
Menonaktifkan versi kunci CMEK akan menangguhkan akses ke semua data yang dilindungi oleh versi kunci tersebut. Menghancurkan versi kunci adalah tindakan permanen (setelah 24 jam) dari tindakan ini. Selalu nonaktifkan semua kunci untuk instance, bukan hanya menonaktifkan kunci untuk satu atau beberapa cluster.
Konsol
Ini adalah metode yang direkomendasikan. Dengan menggunakan konsol Google Cloud, Anda dapat menonaktifkan semua versi kunci sekaligus.
Ikuti petunjuk ini untuk setiap versi kunci.
gcloud
Sebaiknya gunakan konsol Google Cloud untuk menonaktifkan kunci. Jika Anda ingin menggunakan Google Cloud CLI, jalankan perintah berikut.
Mencantumkan semua versi kunci CMEK:
gcloud kms keys versions list --key KMS_KEY \ --keyring KMS_KEYRING --location KMS_LOCATION \ --project KMS_PROJECT
Berikan hal berikut:
KMS_KEY
: nama kunci CMEKKMS_KEYRING
: key ring KMS yang berisi kunciKMS_LOCATION
: region yang berisi key ringKMS_PROJECT
: project yang berisi kunci
Outputnya mirip dengan hal berikut ini:
NAME STATE KMS_KEY_NAME/cryptoKeyVersions/1 ENABLED KMS_KEY_NAME/cryptoKeyVersions/2 ENABLED KMS_KEY_NAME/cryptoKeyVersions/3 ENABLED KMS_KEY_NAME/cryptoKeyVersions/4 ENABLED
Nonaktifkan semua versi:
for $KV in 1 2 3 4; do gcloud kms keys versions disable KV --key KMS_KEY \ --keyring KMS_KEYRING --location KMS_LOCATION \ --project KMS_PROJECT; done
Berikan hal berikut:
1 2 3 4
: versi yang Anda nonaktifkanKMS_KEY
: nama kunci CMEKKMS_KEYRING
: key ring KMS yang berisi kunciKMS_LOCATION
: region yang berisi key ringKMS_PROJECT
: project yang berisi kunci
Mencantumkan semua versi kunci lagi akan menampilkan statusnya yang dibalik menjadi
DISABLED
, meskipun Bigtable mungkin memerlukan waktu hingga 4 jam untuk menindaklanjuti perubahan status ini.[Opsional] Untuk mengonfirmasi status CMEK yang dinonaktifkan setelah Anda menunggu 4 jam, jalankan perintah berikut:
gcloud bigtable instances tables describe TABLE_ID \ --instance INSTANCE_ID --view ENCRYPTION \ --project CBT_PROJECT
Berikan hal berikut:
TABLE_ID
: ID permanen untuk tabelINSTANCE_ID
: ID permanen untuk instanceCBT_PROJECT
: project yang berisi resource Bigtable Anda
Perintah ini menampilkan output yang mirip dengan berikut ini:
clusterStates: CLUSTER: encryptionInfo: - encryptionStatus: code: 9 details: - '@type': type.googleapis.com/google.rpc.PreconditionFailure violations: - subject: KMS_KEY_NAME/cryptoKeyVersions/<int> type: KEY_DISABLED message: KMS_KEY_NAME is not enabled, current state is: DISABLED. encryptionType: CUSTOMER_MANAGED_ENCRYPTION kmsKeyVersion: KMS_KEY_NAME/cryptoKeyVersions/<int> name: projects/CBT_PROJECT/instances/INSTANCE/tables/TABLE
[Opsional] Untuk memverifikasi bahwa cluster di instance dinonaktifkan, jalankan perintah berikut:
gcloud bigtable clusters list --instances INSTANCE_ID --project CBT_PROJECT
Berikan hal berikut:
INSTANCE_ID
: ID permanen untuk instanceCBT_PROJECT
: project yang berisi resource Bigtable Anda
Perintah ini menampilkan output yang mirip dengan berikut ini:
NAME ZONE NODES STORAGE STATE my-cluster us-central1-a 1 SSD DISABLED my-other-cluster us-central1-b 1 SSD DISABLED
Mengaktifkan kunci
Jika versi kunci telah dinonaktifkan, Anda dapat mengaktifkannya kembali untuk mendapatkan kembali akses ke resource Bigtable. Opsi ini tersedia selama 30 hari sejak versi kunci dinonaktifkan.
Konsol
Ini adalah metode yang direkomendasikan. Dengan menggunakan Konsol Google Cloud, Anda dapat mengaktifkan semua versi kunci sekaligus.
Ikuti petunjuk ini untuk setiap versi kunci.
gcloud
Sebaiknya gunakan konsol Google Cloud untuk mengaktifkan kunci. Jika Anda ingin menggunakan Google Cloud CLI, jalankan perintah berikut.
Lihat daftar versi untuk mengidentifikasi semua versi kunci:
gcloud kms keys versions list --key KMS_KEY \ --keyring KMS_KEYRING --location KMS_LOCATION \ --project KMS_PROJECT
Berikan hal berikut:
KMS_KEY
: nama kunci CMEKKMS_KEYRING
: key ring KMS yang berisi kunciKMS_LOCATION
: region yang berisi key ringKMS_PROJECT
: project yang berisi kunci
Perintah ini menampilkan output yang mirip dengan berikut ini:
NAME STATE KMS_KEY_NAME/cryptoKeyVersions/1 DISABLED KMS_KEY_NAME/cryptoKeyVersions/2 DISABLED KMS_KEY_NAME/cryptoKeyVersions/3 DISABLED KMS_KEY_NAME/cryptoKeyVersions/4 DISABLED
Jalankan perintah
kms keys versions enable
, yang memberikan semua versi yang tercantum. Dengan menggunakan contoh output, perintah akan terlihat mirip dengan berikut:for $KV in 1 2 3 4; do gcloud kms keys versions enable KV --key KMS_KEY \ --keyring KMS_KEYRING --location KMS_LOCATION \ --project KMS_PROJECT; done
Berikan hal berikut:
1 2 3 4
: versi yang Anda nonaktifkanKMS_KEY
: nama kunci CMEKKMS_KEYRING
: key ring KMS yang berisi kunciKMS_LOCATION
: region yang berisi key ringKMS_PROJECT
: project yang berisi kunci
Mencantumkan versi kunci lagi akan menampilkan statusnya yang dibalik ke
ENABLED
.
Melihat log audit untuk kunci Cloud KMS
Sebelum mengaktifkan log audit Akses Data Cloud KMS, Anda harus memahami Cloud Audit Logs.
Log audit Akses Data Cloud KMS menunjukkan kepada Anda saat Bigtable atau produk lain yang dikonfigurasi untuk menggunakan kunci CMEK Anda melakukan panggilan enkripsi/dekripsi ke Cloud KMS. Bigtable tidak mengeluarkan panggilan enkripsi/dekripsi pada setiap permintaan data, tetapi mempertahankan poller yang memeriksa kunci secara berkala. Hasil polling akan muncul di log audit.
Anda dapat menyiapkan dan berinteraksi dengan log audit di konsol Google Cloud:
Pastikan logging diaktifkan untuk Cloud KMS API di project Anda.
Buka Cloud Logging di konsol Google Cloud.
Batasi entri log ke kunci Cloud KMS Anda dengan menambahkan baris berikut ke Builder kueri:
resource.type="cloudkms_cryptokey" resource.labels.key_ring_id = KMS_KEYRING resource.labels.crypto_key_id = KMS_KEY
Berikan hal berikut:
KMS_KEY
: nama kunci CMEKKMS_KEYRING
: key ring KMS yang berisi kunci
Log menampilkan beberapa entri log sekitar setiap lima menit per tabel di setiap cluster. Entri log terlihat mirip dengan contoh berikut:
Info 2021-03-20 08:02:24.869 EDT Cloudkms.googleapis.com Decrypt projects/cloud-kms-project/locations/us-central1/keyRings/cloud-bigtable-keys/cryptoKeys/my-cmek-key service-123456789123@gcp-sa-bigtable.iam.gserviceaccount.com audit_log, method: "Decrypt", principal_email: "service-1234567891011@gcp-sa-bigtable.iam.gserviceaccount.com" Info 2021-03-20 08:02:24.913 EDT Cloudkms.googleapis.com Encrypt projects/cloud-kms-project/locations/us-central1/keyRings/cloud-bigtable-keys/cryptoKeys/my-cmek-key service-123456789123@gcp-sa-bigtable.iam.gserviceaccount.com audit_log, method: "Encrypt", principal_email: "service-123456789123@gcp-sa-bigtable.iam.gserviceaccount.com"
Lihat Memahami log audit untuk mengetahui detail tentang cara menafsirkan log audit.
Melihat penggunaan kunci
Cloud KMS memungkinkan Anda melihat informasi berikut tentang resource Bigtable yang dilindungi kunci Anda.
- Ringkasan penggunaan kunci: Mencakup informasi tentang jumlah resource dan project yang dilindungi yang menggunakan kunci.
- Detail penggunaan kunci: Mengidentifikasi resource yang dilindungi kunci dan resource yang bergantung pada kunci.
Resource Bigtable berikut didukung:
bigtableadmin.googleapis.com/Backup
bigtableadmin.googleapis.com/Cluster
bigtableadmin.googleapis.com/Table
Untuk informasi selengkapnya tentang cara melihat penggunaan kunci, lihat Melihat informasi penggunaan kunci.
Melihat status enkripsi tabel
Konsol
Anda tidak dapat melihat status enkripsi tabel di konsol Google Cloud.
gcloud
Untuk melihat detail CMEK di tabel, tetapkan view
ke ENCRYPTION
atau FULL
.
Responsnya mencakup versi kunci yang sedang digunakan dan statusnya seperti yang dilihat oleh Bigtable.
gcloud alpha bigtable instances tables describe TABLE_ID \
--instance INSTANCE_ID --view ENCRYPTION \
--project CBT_PROJECT
Berikan hal berikut:
TABLE_ID
: ID permanen untuk clusterINSTANCE_ID
: ID permanen untuk instance yang berisi cadanganCBT_PROJECT
: project yang berisi resource Bigtable Anda
Perintah ini menampilkan output yang mirip dengan berikut ini:
clusterStates:
my-cluster:
encryptionInfo:
- encryptionStatus: {}
encryptionType: CUSTOMER_MANAGED_ENCRYPTION
kmsKeyVersion: KMS_KEY_NAME/cryptoKeyVersions/4
my-other-cluster:
encryptionInfo:
- encryptionStatus: {}
encryptionType: CUSTOMER_MANAGED_ENCRYPTION
kmsKeyVersion: KMS_KEY_NAME/cryptoKeyVersions/4
name: projects/cloud-bigtable-project/instances/cmek-test-instance/tables/my-table
Melihat detail enkripsi untuk pencadangan
Cadangan tetap disematkan ke versi kunci aslinya. Rotasi versi kunci di Cloud KMS tidak memutar versi yang digunakan untuk mendekripsi pencadangan.
Konsol
Buka halaman instance Bigtable di konsol Google Cloud.
Klik nama instance untuk membuka halaman Detail Instance.
Di panel navigasi sebelah kiri, klik Cadangan.
Nama kunci dan versi kunci untuk setiap cadangan tercantum di bagian Kunci yang dikelola pelanggan.
gcloud
Jalankan perintah berikut untuk melihat info enkripsi untuk pencadangan.
gcloud alpha bigtable backups describe BACKUP_ID \
--instance INSTANCE_ID --cluster CLUSTER_ID \
--project CBT_PROJECT
Berikan hal berikut:
BACKUP_ID
: ID yang ditetapkan ke cadanganCLUSTER_ID
: ID permanen untuk clusterINSTANCE_ID
: ID permanen untuk instance yang berisi cadanganCBT_PROJECT
: project yang berisi resource Bigtable Anda
Perintah ini menampilkan output yang mirip dengan berikut ini. kmsKeyVersion
adalah versi kunci CMEK yang digunakan untuk menyematkan cadangan. Status
versi kunci tidak dilaporkan.
encryptionInfo:
encryptionStatus:
code: 2
message: Status of the associated key version is not tracked.
encryptionType: CUSTOMER_MANAGED_ENCRYPTION
kmsKeyVersion: KMS_KEY_NAME/cryptoKeyVersions/3
endTime: '2020-09-01T00:03:26.568600Z'
expireTime: '2020-09-02T00:03:25.436473Z'
name: projects/cloud-bigtable-project/instances/cmek-test-instance/clusters/my-cluster/backups/my-backup
sizeBytes: '3780'