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 kapan dan mengapa harus 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 merupakan jenis akun layanan yang dikelola Google yang digunakan Bigtable untuk mengakses kunci.
Konsol
Anda tidak dapat membuat agen layanan di konsol Google Cloud. Namun, jika membuat kunci di Google Cloud Console, Anda akan diminta untuk memberikan peran Cloud KMS Encrypter/Decrypter, 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 tersebut menampilkan ID agen layanan, yang diformat seperti alamat email. Catat {i>string<i} email {i>output<i}, karena Anda akan menggunakannya di langkah selanjutnya.
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 agar kunci tersebut tersedia 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.
Konfigurasi setelan IAM untuk kunci
Konsol
Untuk memberikan peran Cloud KMS kepada agen layanan Anda, lakukan hal berikut. Anda juga dapat memberikan izin pada tingkat kunci atau key-ring 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 Save.
gcloud
Berikan peran
cloudkms.cryptoKeyEncrypterDecrypter
kepada 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
: wilayah yang berisi key ringSERVICE_ACCOUNT_EMAIL
: ID berformat email untuk agen layanan yang Anda beri aksesKMS_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 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 bagian Membuat instance untuk membuat instance yang dilindungi CMEK.
Melihat kunci yang digunakan
Informasi tentang versi kunci berasal dari kolom encryption_info
.
Guna 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 Instance Details, lalu lihat daftar cluster dalam instance tersebut.
Di samping ID cluster, klik nama kunci di bagian Kunci enkripsi untuk melihat halaman Versions 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
Perintah akan 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 kebalikan permanen (setelah 24 jam) dari tindakan ini. Selalu nonaktifkan semua kunci untuk satu 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.
Tampilkan daftar 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
: wilayah 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
: wilayah yang berisi key ringKMS_PROJECT
: project yang berisi kunci
Mencantumkan kembali semua versi kunci akan menampilkan statusnya yang dibalik menjadi
DISABLED
, meskipun perlu waktu hingga 4 jam bagi Bigtable 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
Perintah akan 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 dalam 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
Perintah akan 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 Anda. Opsi ini tersedia selama 60 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
: wilayah yang berisi key ringKMS_PROJECT
: project yang berisi kunci
Perintah akan 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
, dengan menyediakan semua versi yang tercantum. Dengan menggunakan contoh output, perintahnya terlihat mirip dengan berikut ini: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
: wilayah yang berisi key ringKMS_PROJECT
: project yang berisi kunci
Mencantumkan versi kunci lagi menunjukkan statusnya dibalik menjadi
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 melakukan panggilan enkripsi/dekripsi pada setiap permintaan data, melainkan mempertahankan polling 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 dalam 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 tersebut menampilkan beberapa entri log 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 detail tentang cara menafsirkan log audit.
Lihat penggunaan kunci
Cloud KMS dapat Anda gunakan untuk melihat informasi berikut tentang resource Bigtable yang dilindungi oleh kunci Anda.
- Ringkasan penggunaan kunci: Menyertakan informasi tentang jumlah resource yang dilindungi dan project yang menggunakan kunci tersebut.
- Detail penggunaan kunci: Mengidentifikasi resource yang dilindungi oleh kunci dan resource yang bergantung pada kunci tersebut.
Resource Bigtable berikut didukung:
bigtableadmin.googleapis.com/Backup
bigtableadmin.googleapis.com/Cluster
bigtableadmin.googleapis.com/Table
Untuk informasi selengkapnya tentang 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 terlihat 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
Perintah akan 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 cadangan
Cadangan tetap disematkan ke versi kunci aslinya. Rotasi versi kunci di Cloud KMS tidak merotasi versi yang digunakan untuk mendekripsi cadangan.
Konsol
Buka halaman instance Bigtable di Konsol Google Cloud.
Klik nama instance untuk membuka halaman Instance Details.
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 cadangan.
gcloud alpha bigtable backups describe BACKUP_ID \
--instance INSTANCE_ID --cluster CLUSTER_ID \
--project CBT_PROJECT
Berikan hal berikut:
BACKUP_ID
: ID yang ditetapkan untuk cadanganCLUSTER_ID
: ID permanen untuk clusterINSTANCE_ID
: ID permanen untuk instance yang berisi cadanganCBT_PROJECT
: project yang berisi resource Bigtable
Perintah akan menampilkan output yang mirip dengan berikut ini. kmsKeyVersion
adalah versi kunci CMEK tempat cadangan disematkan. 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'