Topik ini menunjukkan cara mengenkripsi ulang data menggunakan kunci simetris Cloud Key Management Service. Anda dapat menyesuaikan contoh ini untuk kunci asimetris. Jika Anda mencurigai penggunaan kunci yang tidak sah, Anda harus mengenkripsi ulang data yang dilindungi oleh kunci tersebut, lalu menonaktifkan atau menjadwalkan penghancuran versi kunci sebelumnya.
Sebelum memulai
Skenario ini memerlukan kondisi berikut.
Anda sudah mengenkripsi data menggunakan Cloud KMS.
Versi kunci yang digunakan untuk enkripsi tidak dinonaktifkan, dijadwalkan untuk dihancurkan, atau dihancurkan. Anda menggunakan versi kunci ini untuk mendekripsi data terenkripsi.
Anda sudah melakukan rotasi tombol. Rotasi kunci membuat versi kunci utama yang baru. Anda harus menggunakan versi kunci utama yang baru untuk mengenkripsi ulang data.
Enkripsi ulang data menggunakan kunci asimetris
Contoh dalam topik ini menunjukkan cara mengenkripsi ulang data menggunakan kunci simetris. Saat Anda menggunakan kunci simetris, Cloud KMS secara otomatis menyimpulkan versi kunci yang akan digunakan untuk dekripsi. Saat menggunakan kunci asimetris, Anda harus menentukan versi kunci.
- Saat mengikuti petunjuk penggunaan Google Cloud CLI, selalu sertakan flag
--version
. - Saat mengikuti petunjuk penggunaan API, Anda akan menggunakan
CryptoKeyVersions
, bukanCryptoKeys
. Anda dapat membaca selengkapnya tentang mengenkripsi dan mendekripsi data dengan kunci asimetris.
Alur kerja untuk mengenkripsi ulang data menggunakan kunci asimetris mirip dengan yang dijelaskan dalam topik ini.
Enkripsi ulang alur kerja data
Gunakan langkah-langkah berikut untuk mengenkripsi ulang data dan menonaktifkan atau menjadwalkan penghancuran versi kunci yang digunakan untuk enkripsi asli.
Mendekripsi data menggunakan versi kunci sebelumnya
Cloud KMS secara otomatis menggunakan versi kunci yang benar untuk mendekripsi data, selama versi kunci tersebut tidak dinonaktifkan, dijadwalkan untuk dihancurkan, atau dihancurkan. Contoh berikut menunjukkan cara mendekripsi data. Kode ini adalah kode dekripsi yang sama dengan yang digunakan dalam Mengenkripsi dan Mendekripsi.
gcloud
Untuk menggunakan Cloud KMS di command line, Instal atau upgrade Google Cloud CLI ke versi terbaru terlebih dahulu.
gcloud kms decrypt \ --key key \ --keyring key-ring \ --location location \ --ciphertext-file file-path-with-encrypted-data \ --plaintext-file file-path-to-store-plaintext
Ganti key dengan nama kunci yang akan digunakan untuk dekripsi. Ganti key-ring dengan nama key ring tempat kunci akan berada. Ganti location dengan lokasi Cloud KMS untuk key ring. Ganti file-path-with-encrypted-data dan file-path-to-store-plaintext dengan jalur file lokal untuk membaca data terenkripsi dan menyimpan output yang didekripsi.
Untuk mengetahui informasi tentang semua tanda dan nilai yang memungkinkan, jalankan perintah dengan
tanda --help
.
C#
Untuk menjalankan kode ini, siapkan lingkungan pengembangan C# terlebih dahulu lalu instal Cloud KMS C# SDK.
Go
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Go terlebih dahulu lalu instal Cloud KMS Go SDK.
Java
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Java terlebih dahulu dan instal Java SDK Cloud KMS.
Node.js
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Node.js terlebih dahulu, lalu instal Node.js SDK Cloud KMS.
PHP
Untuk menjalankan kode ini, pelajari cara menggunakan PHP di Google Cloud terlebih dahulu dan instal PHP SDK Cloud KMS.
Python
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Python terlebih dahulu lalu instal Cloud KMS Python SDK.
Ruby
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Ruby terlebih dahulu dan instal Ruby SDK Cloud KMS.
API
Contoh ini menggunakan curl sebagai klien HTTP untuk menunjukkan penggunaan API. Untuk informasi selengkapnya tentang kontrol akses, lihat Mengakses Cloud KMS API.
Teks terdekripsi yang ditampilkan dalam JSON dari Cloud KMS dienkode menggunakan base64.
Untuk mendekripsi data terenkripsi, buat permintaan POST
dan berikan project
serta informasi kunci yang sesuai, serta tentukan teks terenkripsi (cipher) yang akan
didekripsi di kolom ciphertext
pada isi permintaan.
curl "https://cloudkms.googleapis.com/v1/projects/project-id/locations/location/keyRings/key-ring-name/cryptoKeys/key-name:decrypt" \ --request "POST" \ --header "authorization: Bearer token" \ --header "content-type: application/json" \ --data "{\"ciphertext\": \"encrypted-content\"}"
Berikut adalah contoh payload dengan data berenkode base64:
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
Enkripsi ulang data menggunakan versi kunci utama yang baru
Cloud KMS secara otomatis menggunakan versi kunci utama baru untuk mengenkripsi data. Contoh berikut menunjukkan cara mengenkripsi data. Ini adalah kode enkripsi yang sama dengan yang digunakan dalam Mengenkripsi dan Mendekripsi.
gcloud
Untuk menggunakan Cloud KMS di command line, Instal atau upgrade Google Cloud CLI ke versi terbaru terlebih dahulu.
gcloud kms encrypt \ --key key \ --keyring key-ring \ --location location \ --plaintext-file file-with-data-to-encrypt \ --ciphertext-file file-to-store-encrypted-data
Ganti key dengan nama kunci yang akan digunakan untuk enkripsi. Ganti key-ring dengan nama key ring tempat kunci tersebut berada. Ganti location dengan lokasi Cloud KMS untuk key ring. Ganti file-with-data-to-encrypt dan file-to-store-encrypted-data dengan jalur file lokal untuk membaca data teks biasa dan menyimpan output yang dienkripsi.
Untuk mengetahui informasi tentang semua tanda dan nilai yang memungkinkan, jalankan perintah dengan
tanda --help
.
C#
Untuk menjalankan kode ini, siapkan lingkungan pengembangan C# terlebih dahulu lalu instal Cloud KMS C# SDK.
Go
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Go terlebih dahulu lalu instal Cloud KMS Go SDK.
Java
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Java terlebih dahulu dan instal Java SDK Cloud KMS.
Node.js
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Node.js terlebih dahulu, lalu instal Node.js SDK Cloud KMS.
PHP
Untuk menjalankan kode ini, pelajari cara menggunakan PHP di Google Cloud terlebih dahulu dan instal PHP SDK Cloud KMS.
Python
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Python terlebih dahulu lalu instal Cloud KMS Python SDK.
Ruby
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Ruby terlebih dahulu dan instal Ruby SDK Cloud KMS.
API
Contoh ini menggunakan curl sebagai klien HTTP untuk menunjukkan penggunaan API. Untuk informasi selengkapnya tentang kontrol akses, lihat Mengakses Cloud KMS API.
Saat menggunakan JSON dan REST API, konten harus dienkode base-64 agar dapat dienkripsi oleh Cloud KMS.
Untuk mengenkripsi data, buat permintaan POST
dan berikan project serta
informasi kunci yang sesuai, serta tentukan teks berenkode base64 yang akan dienkripsi di
kolom plaintext
dari isi permintaan.
curl "https://cloudkms.googleapis.com/v1/projects/project-id/locations/location/keyRings/key-ring-name/cryptoKeys/key-name:encrypt" \ --request "POST" \ --header "authorization: Bearer token" \ --header "content-type: application/json" \ --data "{\"plaintext\": \"base64-encoded-input\"}"
Berikut adalah contoh payload dengan data berenkode base64:
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
Menonaktifkan atau menjadwalkan penghancuran versi kunci sebelumnya
Jika Anda merotasi kunci sebagai respons terhadap dugaan insiden, setelah Anda mengenkripsi ulang data, nonaktifkan atau jadwalkan pemusnahan versi kunci sebelumnya.
Menonaktifkan versi kunci yang diaktifkan
Hanya versi kunci yang Aktif yang dapat dinonaktifkan. Hal ini dilakukan dengan
metode UpdateCryptoKeyVersion
.
Konsol
Buka halaman Key Management di konsol Google Cloud.
Klik nama key ring yang berisi kunci yang versi kuncinya akan Anda nonaktifkan.
Klik kunci yang versi kuncinya ingin Anda nonaktifkan.
Centang kotak di samping versi kunci yang ingin dinonaktifkan.
Klik Nonaktifkan di header.
Pada perintah konfirmasi, klik Disable.
gcloud
Untuk menggunakan Cloud KMS di command line, Instal atau upgrade Google Cloud CLI ke versi terbaru terlebih dahulu.
gcloud kms keys versions disable key-version \ --key key \ --keyring key-ring \ --location location
Ganti key-version dengan versi kunci yang akan dinonaktifkan. Ganti key dengan nama kunci. Ganti key-ring dengan nama key ring tempat kunci tersebut berada. Ganti location dengan lokasi Cloud KMS untuk key ring.
Untuk mengetahui informasi tentang semua tanda dan nilai yang memungkinkan, jalankan perintah dengan
tanda --help
.
C#
Untuk menjalankan kode ini, siapkan lingkungan pengembangan C# terlebih dahulu lalu instal Cloud KMS C# SDK.
Go
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Go terlebih dahulu lalu instal Cloud KMS Go SDK.
Java
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Java terlebih dahulu dan instal Java SDK Cloud KMS.
Node.js
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Node.js terlebih dahulu, lalu instal Node.js SDK Cloud KMS.
PHP
Untuk menjalankan kode ini, pelajari cara menggunakan PHP di Google Cloud terlebih dahulu dan instal PHP SDK Cloud KMS.
Python
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Python terlebih dahulu lalu instal Cloud KMS Python SDK.
Ruby
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Ruby terlebih dahulu dan instal Ruby SDK Cloud KMS.
Menjadwalkan pemusnahan versi kunci
Hanya versi kunci yang Aktif atau Nonaktif yang dapat Dijadwalkan untuk
dihancurkan. Hal ini
dilakukan dengan metode
DestroyCryptoKeyVersion
.
Konsol
Di konsol Google Cloud, buka halaman Key Management.
Centang kotak di samping versi kunci yang ingin Anda jadwalkan untuk dihancurkan.
Klik Hancurkan di header.
Di perintah konfirmasi, masukkan nama kunci, lalu klik Schedule Destruction.
gcloud
Untuk menggunakan Cloud KMS di command line, Instal atau upgrade Google Cloud CLI ke versi terbaru terlebih dahulu.
gcloud kms keys versions destroy KEY_VERSION \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION
Ganti kode berikut:
KEY_VERSION
: nomor versi versi kunci yang ingin Anda hancurkan.KEY_NAME
: nama kunci yang versi kuncinya ingin Anda hancurkan.KEY_RING
: nama key ring yang berisi kunci.LOCATION
: lokasi Cloud KMS key ring.
Untuk mengetahui informasi tentang semua tanda dan nilai yang memungkinkan, jalankan perintah dengan
tanda --help
.
C#
Untuk menjalankan kode ini, siapkan lingkungan pengembangan C# terlebih dahulu lalu instal Cloud KMS C# SDK.
Go
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Go terlebih dahulu lalu instal Cloud KMS Go SDK.
Java
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Java terlebih dahulu dan instal Java SDK Cloud KMS.
Node.js
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Node.js terlebih dahulu, lalu instal Node.js SDK Cloud KMS.
PHP
Untuk menjalankan kode ini, pelajari cara menggunakan PHP di Google Cloud terlebih dahulu dan instal PHP SDK Cloud KMS.
Python
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Python terlebih dahulu lalu instal Cloud KMS Python SDK.
Ruby
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Ruby terlebih dahulu dan instal Ruby SDK Cloud KMS.
API
Contoh ini menggunakan curl sebagai klien HTTP untuk menunjukkan penggunaan API. Untuk informasi selengkapnya tentang kontrol akses, lihat Mengakses Cloud KMS API.
Hancurkan versi kunci dengan memanggil metode CryptoKeyVersions.destroy.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/KEY_VERSION:destroy" \ --request "POST" \ --header "authorization: Bearer TOKEN"