Halaman ini menjelaskan cara menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) yang dibuat secara manual untuk Spanner.
Untuk mempelajari CMEK lebih lanjut, lihat Ringkasan kunci enkripsi yang dikelola pelanggan (CMEK).
Membuat database yang mendukung CMEK
Buat kunci di Cloud Key Management Service (Cloud KMS). Spanner mendukung pembuatan jenis Cloud KMS berikut:
Kunci harus berada di lokasi yang sama dengan instance Spanner Anda. Misalnya, jika konfigurasi instance Spanner Anda berada di
us-west1
, maka lokasi key ring Cloud KMS Anda juga harus berada dius-west1
.Tidak setiap konfigurasi instance multi-region Spanner memiliki lokasi key ring Cloud KMS yang sesuai. Untuk database Spanner dalam konfigurasi instance kustom, dual-region, atau multi-region, Anda dapat menggunakan beberapa kunci Cloud KMS regional (single-region) untuk melindungi database Anda. Contoh:
- Jika database Spanner Anda berada dalam konfigurasi instance multi-region
nam14
, Anda dapat membuat kunci Cloud KMS dius-east4
,northamerica-northeast1
, danus-east1
. - Jika database Anda berada dalam konfigurasi instance kustom yang menggunakan
nam3
sebagai konfigurasi instance dasar dengan replika hanya baca tambahan dius-central2
, Anda dapat membuat kunci Cloud KMS dius-east4
,us-east1
,us-central1
, danus-central2
.
Opsional: Untuk melihat daftar lokasi replika dalam konfigurasi instance Spanner, gunakan perintah
gcloud spanner instances get-locations
:gcloud spanner instances get-locations <var>INSTANCE_ID</var>
Untuk informasi selengkapnya, lihat referensi berikut:
- Jika database Spanner Anda berada dalam konfigurasi instance multi-region
Memberikan akses Spanner ke kunci.
Di Cloud Shell, buat dan tampilkan agen layanan, atau tampilkan agen layanan jika akun sudah ada:
gcloud beta services identity create --service=spanner.googleapis.com \ --project=PROJECT_ID
Jika Anda diminta untuk menginstal komponen gcloud Beta Commands, ketik
Y
. Setelah penginstalan, perintah akan otomatis dimulai ulang.Perintah
gcloud services identity
membuat atau mendapatkan agen layanan yang dapat digunakan Spanner untuk mengakses kunci Cloud KMS atas nama Anda.ID akun layanan diformat seperti alamat email:
Service identity created: service-xxx@gcp-sa-spanner.iam.gserviceaccount.com
Berikan peran Cloud KMS CryptoKey Encrypter/Decrypter(
cloudkms.cryptoKeyEncrypterDecrypter
) ke akun layanan untuk setiap region (--location
) dalam konfigurasi instance Spanner Anda. Untuk melakukannya, jalankan perintahgcloud kms keys add-iam-policybinding
:gcloud kms keys add-iam-policy-binding KMS_KEY \ --location KMS_KEY_LOCATION \ --keyring KMS_KEY_RING \ --project=PROJECT_ID \ --member serviceAccount:service-xxx@gcp-sa-spanner.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Berikut contoh outputnya:
Updated IAM policy for key [KMS_KEY]
Jika Anda menggunakan beberapa kunci Cloud KMS untuk melindungi database Anda, jalankan perintah
gcloud kms keys add-iam-policybinding
untuk semua kunci Anda.Peran ini memastikan bahwa akun layanan memiliki izin untuk mengenkripsi dan mendekripsi dengan kunci Cloud KMS. Untuk mengetahui informasi selengkapnya, lihat Izin dan peran Cloud KMS.
Buat database dan tentukan kunci Cloud KMS Anda.
Konsol
Gunakan konsol untuk membuat database dalam konfigurasi instance regional.
Di konsol Google Cloud , buka halaman Instances.
Klik instance tempat Anda ingin membuat database.
Klik Buat database dan isi kolom yang wajib diisi.
Klik Tampilkan opsi enkripsi.
Pilih Kunci Cloud KMS.
Pilih kunci dari menu drop-down.
Daftar kunci dibatasi untuk project Google Cloud saat ini. Untuk menggunakan kunci dari project Google Cloud lain, buat database menggunakan gcloud CLI, bukan konsolGoogle Cloud .
Setelah database dibuat, Anda dapat memverifikasi bahwa database tersebut mengaktifkan CMEK dengan melihat halaman Database overview.
gcloud
Untuk membuat database yang mendukung CMEK dalam konfigurasi instance regional, kustom, atau multi-region, jalankan perintah gcloud spanner databases create
:
gcloud spanner databases create DATABASE \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID \
--ddl="CREATE TABLE Users (Id INT64 NOT NULL, FirstName STRING(100) NOT NULL, LastName STRING(100) NOT NULL,) PRIMARY KEY (Id)" \
--kms-project=KMS_PROJECT_ID \
--kms-location=KMS_KEY_LOCATION \
--kms-keyring=KMS_KEYRING \
--kms-keys=KMS_KEY_1[, KMS_KEY_2 ... ]
Untuk memverifikasi bahwa database mengaktifkan CMEK, jalankan perintah
gcloud spanner databases describe
:
gcloud spanner databases describe DATABASE \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Database yang mendukung CMEK menyertakan kolom untuk encryptionConfig
, seperti yang ditunjukkan dalam contoh output berikut:
encryptionConfig:
kmsKeyNames:projects/my-kms-project/locations/eur5/keyRings/my-kms-key-ring/cryptoKeys/my-kms-key
name: projects/my-spanner-project/instances/my-instance/databases/my-db
state: READY
Library klien
C#
Untuk membuat database yang mendukung CMEK dalam konfigurasi instance regional:
Untuk membuat database yang mendukung CMEK dalam konfigurasi instance multi-region:
C++
Untuk membuat database yang mendukung CMEK dalam konfigurasi instance regional:
Untuk membuat database yang mendukung CMEK dalam konfigurasi instance multi-region:
Go
Untuk membuat database yang mendukung CMEK dalam konfigurasi instance regional:
Untuk membuat database yang mendukung CMEK dalam konfigurasi instance multi-region:
Java
Untuk membuat database yang mendukung CMEK dalam konfigurasi instance regional:
Untuk membuat database yang mendukung CMEK dalam konfigurasi instance multi-region:
Node.js
Untuk membuat database yang mendukung CMEK dalam konfigurasi instance regional:
Untuk membuat database yang mendukung CMEK dalam konfigurasi instance multi-region:
PHP
Untuk membuat database yang mendukung CMEK dalam konfigurasi instance regional:
Untuk membuat database yang mendukung CMEK dalam konfigurasi instance multi-region:
Python
Untuk membuat database yang mendukung CMEK dalam konfigurasi instance regional:
Untuk membuat database yang mendukung CMEK dalam konfigurasi instance multi-region:
Ruby
Untuk membuat database yang mendukung CMEK dalam konfigurasi instance regional:
Untuk membuat database yang mendukung CMEK dalam konfigurasi instance multi-region:
Melihat versi kunci yang digunakan
Kolom encryption_info
database menampilkan informasi tentang versi kunci.
Saat versi kunci database berubah, perubahan tersebut tidak langsung diterapkan ke encryption_info
. Mungkin ada penundaan sebelum perubahan ditampilkan di kolom ini.
Konsol
Di konsol Google Cloud , buka halaman Instances.
Klik instance yang berisi database yang ingin Anda lihat.
Klik database.
Informasi enkripsi ditampilkan di halaman Database details.
gcloud
Anda bisa mendapatkan encryption_info
database dengan menjalankan perintah
gcloud spanner databases describe
atau gcloud spanner databases list
. Contoh:
gcloud spanner databases describe DATABASE \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Berikut contoh outputnya:
name: projects/my-project/instances/test-instance/databases/example-db
encryptionInfo:
- encryptionType: CUSTOMER_MANAGED_ENCRYPTION
kmsKeyVersion: projects/my-kms-project/locations/my-kms-key1-location/keyRings/my-kms-key-ring1/cryptoKeys/my-kms-key1/cryptoKeyVersions/1
- encryptionType: CUSTOMER_MANAGED_ENCRYPTION
kmsKeyVersion: projects/my-kms-project/locations/my-kms-key2-location/keyRings/my-kms-key-ring2/cryptoKeys/my-kms-key2/cryptoKeyVersions/1
Nonaktifkan kunci
Nonaktifkan versi kunci yang sedang digunakan dengan mengikuti petunjuk ini untuk setiap versi kunci.
Tunggu hingga perubahan diterapkan. Penonaktifan kunci dapat memerlukan waktu hingga tiga jam untuk diterapkan.
Untuk mengonfirmasi bahwa database tidak lagi dapat diakses, jalankan kueri di database yang CMEK-nya dinonaktifkan:
gcloud spanner databases execute-sql DATABASE \ --project=SPANNER_PROJECT_ID \ --instance=INSTANCE_ID \ --sql='SELECT * FROM Users'
Pesan error berikut akan muncul:
KMS key required by the Spanner resource is not accessible.
Aktifkan kunci
Aktifkan versi kunci yang digunakan oleh database dengan mengikuti petunjuk ini untuk setiap versi kunci.
Tunggu hingga perubahan diterapkan. Pengaktifan kunci dapat memerlukan waktu hingga tiga jam untuk diterapkan.
Untuk mengonfirmasi bahwa database tidak dapat diakses lagi, jalankan kueri di database yang mendukung CMEK:
gcloud spanner databases execute-sql DATABASE \ --project=SPANNER_PROJECT_ID \ --instance=INSTANCE_ID \ --sql='SELECT * FROM Users'
Jika perubahan telah diterapkan, perintah akan berhasil dijalankan.
Mencadangkan database
Anda dapat menggunakan cadangan Spanner untuk membuat cadangan database Anda. Secara default, cadangan Spanner yang dibuat dari database menggunakan konfigurasi enkripsi yang sama dengan database itu sendiri. Secara opsional, Anda dapat menentukan konfigurasi enkripsi yang berbeda untuk cadangan.
Konsol
Gunakan konsol untuk membuat cadangan dalam konfigurasi instance regional.
Di konsol Google Cloud , buka halaman Instances.
Klik nama instance yang berisi database yang ingin Anda cadangkan.
Klik database.
Di panel navigasi, klik Backup/Restore.
Di tab Cadangan, klik Buat cadangan.
Masukkan nama cadangan dan pilih tanggal habis masa berlaku.
Opsional: Klik Tampilkan opsi enkripsi.
a. Jika Anda ingin menggunakan konfigurasi enkripsi yang berbeda untuk cadangan Anda, klik penggeser di samping Gunakan enkripsi yang ada.
a. Pilih Kunci Cloud KMS.
a. Pilih kunci dari menu drop-down.
Daftar kunci dibatasi untuk project Google Cloud saat ini. Untuk menggunakan kunci dari project Google Cloud lain, buat database menggunakan gcloud CLI, bukan konsol Google Cloud .
Klik Buat.
Tabel Cadangan menampilkan informasi enkripsi untuk setiap cadangan.
gcloud
Untuk membuat cadangan yang mendukung CMEK dalam konfigurasi instance regional, kustom, atau multi-region, jalankan perintah gcloud spanner backups create
:
gcloud spanner backups create BACKUP \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID \
--database=DATABASE \
--retention-period=RETENTION_PERIOD \
--encryption-type=customer_managed_encryption \
--kms-project=KMS_PROJECT_ID \
--kms-location=KMS_KEY_LOCATION \
--kms-keyring=KMS_KEY_RING \
--kms-keys=KMS_KEY_1[, KMS_KEY_2 ... ]
--async
Untuk memverifikasi bahwa cadangan yang dibuat dienkripsi dengan CMEK:
gcloud spanner backups describe BACKUP \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Library klien
C#
Untuk membuat cadangan yang mendukung CMEK dalam konfigurasi instance regional:
Untuk membuat cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
C++
Untuk membuat cadangan yang mendukung CMEK dalam konfigurasi instance regional:
Untuk membuat cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
Go
Untuk membuat cadangan yang mendukung CMEK dalam konfigurasi instance regional:
Untuk membuat cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
Java
Untuk membuat cadangan yang mendukung CMEK dalam konfigurasi instance regional:
Untuk membuat cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
Node.js
Untuk membuat cadangan yang mendukung CMEK dalam konfigurasi instance regional:
Untuk membuat cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
PHP
Untuk membuat cadangan yang mendukung CMEK dalam konfigurasi instance regional:
Untuk membuat cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
Python
Untuk membuat cadangan yang mendukung CMEK dalam konfigurasi instance regional:
Untuk membuat cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
Ruby
Untuk membuat cadangan yang mendukung CMEK dalam konfigurasi instance regional:
Untuk membuat cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
Menyalin cadangan
Anda dapat menyalin cadangan database Spanner dari satu instance ke instance lain di region atau project yang berbeda. Secara default, cadangan yang disalin menggunakan konfigurasi enkripsi yang sama, baik yang dikelola Google maupun yang dikelola pelanggan, dengan enkripsi cadangan sumbernya. Anda dapat mengganti perilaku ini dengan menentukan konfigurasi enkripsi yang berbeda saat menyalin cadangan. Jika Anda ingin cadangan yang disalin dienkripsi dengan CMEK saat menyalin di seluruh region, tentukan kunci Cloud KMS yang sesuai dengan region tujuan.
Konsol
Gunakan konsol untuk menyalin cadangan dalam konfigurasi instance regional.
Di konsol Google Cloud , buka halaman Instances.
Klik nama instance yang berisi database yang ingin Anda cadangkan.
Klik database.
Di panel navigasi, klik Backup/Restore.
Di tabel Backups, pilih Actions untuk cadangan Anda, lalu klik Copy.
Lengkapi formulir dengan memilih instance tujuan, memberikan nama, dan memilih tanggal habis masa berlaku untuk salinan cadangan.
Opsional: Jika Anda ingin menggunakan konfigurasi enkripsi yang berbeda untuk cadangan Anda, klik Tampilkan opsi enkripsi.
a. Pilih Kunci Cloud KMS.
a. Pilih kunci dari menu drop-down.
Daftar kunci dibatasi untuk project Google Cloud saat ini. Untuk menggunakan kunci dari project Google Cloud lain, buat database menggunakan gcloud CLI, bukan konsol Google Cloud .
Klik Copy.
gcloud
Untuk menyalin cadangan, dengan konfigurasi enkripsi baru, ke instance lain dalam project yang sama, jalankan perintah gcloud spanner backups copy
berikut:
gcloud spanner backups copy --async \
--source-instance=INSTANCE_ID \
--source-backup=SOURCE_BACKUP_NAME \
--destination-instance=DESTINATION_INSTANCE_ID \
--destination-backup=DESTINATION_BACKUP_NAME \
--expiration-date=EXPIRATION_DATE \
--encryption-type=CUSTOMER_MANAGED_ENCRYPTION \
--kms-keys=KMS_KEY_1[, KMS_KEY_2 ... ]
Untuk menyalin cadangan, dengan konfigurasi enkripsi baru, ke instance lain dalam project lain, jalankan perintah gcloud spanner backups copy
berikut:
gcloud spanner backups copy --async \
--source-backup=SOURCE_BACKUP_NAME \
--destination-backup=DESTINATION_BACKUP_NAME \
--encryption-type=CUSTOMER_MANAGED_ENCRYPTION \
--kms-keys=KMS_KEY_1[, KMS_KEY_2 ... ]
Untuk memverifikasi bahwa cadangan yang disalin dienkripsi dengan CMEK:
gcloud spanner backups describe BACKUP \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Library klien
C#
Untuk menyalin cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
C++
Untuk menyalin cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
Go
Untuk menyalin cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
Java
Untuk menyalin cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
Node.js
Untuk menyalin cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
PHP
Untuk menyalin cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
Python
Untuk menyalin cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
Ruby
Untuk menyalin cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
Memulihkan dari cadangan
Anda dapat memulihkan cadangan database Spanner ke dalam database baru. Secara default, database yang dipulihkan dari cadangan menggunakan konfigurasi enkripsi yang sama dengan cadangan itu sendiri, tetapi Anda dapat mengganti perilaku ini dengan menentukan konfigurasi enkripsi yang berbeda untuk database yang dipulihkan. Jika cadangan dilindungi oleh CMEK, versi kunci yang digunakan untuk membuat cadangan harus tersedia agar dapat didekripsi.
Konsol
Gunakan konsol untuk memulihkan cadangan dalam konfigurasi instance regional.
Di konsol Google Cloud , buka halaman Instances.
Klik instance yang berisi database yang ingin Anda pulihkan.
Klik database.
Di panel navigasi, klik Backup/Restore.
Di tabel Backups, pilih Actions untuk cadangan Anda, lalu klik Restore.
Pilih instance yang akan dipulihkan dan beri nama database yang dipulihkan.
Opsional: Jika Anda ingin menggunakan konfigurasi enkripsi yang berbeda dengan database yang dipulihkan, klik penggeser di samping Gunakan enkripsi yang ada.
a. Pilih Kunci Cloud KMS.
a. Pilih kunci dari menu drop-down.
Daftar kunci dibatasi untuk project Google Cloud saat ini. Untuk menggunakan kunci dari project Google Cloud lain, buat database menggunakan gcloud CLI, bukan konsol Google Cloud .
Klik Pulihkan.
gcloud
Untuk memulihkan cadangan, dengan konfigurasi enkripsi baru, jalankan perintah
gcloud spanner databases restore
berikut:
gcloud spanner databases restore --async \
--project=SPANNER_PROJECT_ID \
--destination-instance=DESTINATION_INSTANCE_ID \
--destination-database=DESTINATION_DATABASE_ID \
--source-instance=SOURCE_INSTANCE_ID \
--source-backup=SOURCE_BACKUP_NAME
Untuk memverifikasi bahwa database yang dipulihkan dienkripsi dengan CMEK:
gcloud spanner databases describe DATABASE \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Untuk mengetahui informasi selengkapnya, lihat Memulihkan dari cadangan.
Library klien
C#
Untuk memulihkan cadangan yang mendukung CMEK dalam konfigurasi instance regional:
Untuk memulihkan cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
C++
Untuk memulihkan cadangan yang mendukung CMEK dalam konfigurasi instance regional:
Untuk memulihkan cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
Go
Untuk memulihkan cadangan yang mendukung CMEK dalam konfigurasi instance regional:
Untuk memulihkan cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
Java
Untuk memulihkan cadangan yang mendukung CMEK dalam konfigurasi instance regional:
Untuk memulihkan cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
Node.js
Untuk memulihkan cadangan yang mendukung CMEK dalam konfigurasi instance regional:
Untuk memulihkan cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
PHP
Untuk memulihkan cadangan yang mendukung CMEK dalam konfigurasi instance regional:
Untuk memulihkan cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
Python
Untuk memulihkan cadangan yang mendukung CMEK dalam konfigurasi instance regional:
Untuk memulihkan cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
Ruby
Untuk memulihkan cadangan yang mendukung CMEK dalam konfigurasi instance regional:
Untuk memulihkan cadangan yang mendukung CMEK dalam konfigurasi instance multi-region:
Melihat log audit untuk kunci Cloud KMS
Pastikan logging diaktifkan untuk Cloud KMS API di project Anda.
Di konsol Google Cloud , buka Logs Explorer.
Batasi entri log ke kunci Cloud KMS Anda dengan menambahkan baris berikut ke Pembuat kueri:
resource.type="cloudkms_cryptokey" resource.labels.location="KMS_KEY_LOCATION" resource.labels.key_ring_id="KMS_KEY_RING_ID" resource.labels.crypto_key_id="KMS_KEY_ID"
Dalam operasi normal, tindakan enkripsi dan dekripsi dicatat dengan tingkat keparahan
INFO
. Entri ini dicatat saat zona di instance Spanner Anda melakukan polling kunci Cloud KMS setiap lima menit.Jika Spanner gagal mengakses kunci, operasi akan dicatat sebagai
ERROR
.