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
, lokasi key ring Cloud KMS Anda juga harusus-west1
.Tidak semua 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. 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
Berikan akses Spanner ke kunci.
Di Cloud Shell, buat dan tampilkan agen layanan, atau tampilkan jika akun sudah ada:
gcloud beta services identity create --service=spanner.googleapis.com \ --project=PROJECT_ID
Jika Anda diminta untuk menginstal komponen Perintah Beta gcloud, 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 Pengenkripsi/Pendekripsi CryptoKey Cloud KMS(
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 adalah contoh output:
Updated IAM policy for key [KMS_KEY]
Jika Anda menggunakan beberapa kunci Cloud KMS untuk melindungi database, 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 informasi lebih lanjut, 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 Instance.
Klik instance tempat Anda ingin membuat database.
Klik Create 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 yang berbeda, buat database menggunakan gcloud CLI, bukan konsol Google Cloud.
Setelah database dibuat, Anda dapat memverifikasi bahwa database tersebut diaktifkan dengan CMEK dengan melihat halaman Ringkasan database.
gcloud
Untuk membuat database yang mengaktifkan 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 mengaktifkan 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:
C++
Untuk membuat database yang mendukung CMEK dalam konfigurasi instance regional:
Go
Untuk membuat database yang mendukung CMEK dalam konfigurasi instance regional:
Java
Untuk membuat database yang mendukung CMEK dalam konfigurasi instance regional:
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:
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 akan ada penundaan sebelum perubahan diterapkan di
kolom ini.
Konsol
Di konsol Google Cloud, buka halaman Instance.
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 adalah contoh output:
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
Menonaktifkan kunci
Nonaktifkan versi kunci yang sedang digunakan dengan mengikuti petunjuk ini untuk setiap versi kunci.
Tunggu hingga perubahan diterapkan. Proses penonaktifan kunci dapat memerlukan waktu hingga tiga jam untuk diterapkan.
Untuk mengonfirmasi bahwa database tidak dapat diakses lagi, 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.
Mengaktifkan 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 mengaktifkan 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 pencadangan Spanner untuk membuat pencadangan database. 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 pencadangan.
Konsol
Gunakan konsol untuk membuat cadangan dalam konfigurasi instance regional.
Di konsol Google Cloud, buka halaman Instance.
Klik nama instance yang berisi database yang ingin Anda cadangkan.
Klik database.
Di panel navigasi, klik Backup/Restore.
Di tab Backups, klik Create backup.
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, 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 yang berbeda, buat database menggunakan gcloud CLI, bukan konsol Google Cloud.
Klik Create.
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 pencadangan yang dibuat dienkripsi 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:
C++
Untuk membuat cadangan yang mendukung CMEK dalam konfigurasi instance regional:
Go
Untuk membuat cadangan yang mendukung CMEK dalam konfigurasi instance regional:
Java
Untuk membuat cadangan yang mendukung CMEK dalam konfigurasi instance regional:
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:
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, sebagai 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 Instance.
Klik nama instance yang berisi database yang ingin Anda cadangkan.
Klik database.
Di panel navigasi, klik Backup/Restore.
Di tabel Pencadangan, pilih Tindakan untuk pencadangan Anda, lalu klik Salin.
Isi 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 pencadangan, 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 yang berbeda, 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 CMEK:
gcloud spanner backups describe BACKUP \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Library klien
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:
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 Instance.
Klik instance yang berisi database yang ingin Anda pulihkan.
Klik database.
Di panel navigasi, klik Backup/Restore.
Di tabel Pencadangan, pilih Tindakan untuk pencadangan Anda, lalu klik Pulihkan.
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 yang berbeda, 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 CMEK:
gcloud spanner databases describe DATABASE \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Untuk informasi selengkapnya, lihat Memulihkan dari cadangan.
Library klien
C#
Untuk memulihkan cadangan yang mendukung CMEK dalam konfigurasi instance regional:
C++
Untuk memulihkan cadangan yang mendukung CMEK dalam konfigurasi instance regional:
Go
Untuk memulihkan cadangan yang mendukung CMEK dalam konfigurasi instance regional:
Java
Untuk memulihkan cadangan yang mendukung CMEK dalam konfigurasi instance regional:
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:
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 Builder 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 ke dalam log dengan tingkat keparahan
INFO
. Entri ini dicatat ke dalam log saat zona di instance Spanner Anda melakukan polling kunci Cloud KMS setiap lima menit.Jika Spanner gagal mengakses kunci, operasi akan dicatat ke dalam log sebagai
ERROR
.