Topik ini menunjukkan cara mengenkripsi ulang data menggunakan kunci simetris Cloud Key Management Service. Anda dapat menyesuaikan contoh ini untuk kunci asimetris. Jika 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 telah mengenkripsi data menggunakan Cloud KMS.
Versi kunci yang digunakan untuk enkripsi tidak dinonaktifkan, dijadwalkan untuk dimusnahkan, atau dihancurkan. Anda menggunakan versi kunci ini untuk mendekripsi data terenkripsi.
Anda telah memutar kunci. Rotasi kunci akan membuat versi kunci utama baru. Anda menggunakan versi kunci utama baru untuk mengenkripsi ulang data.
Mengenkripsi ulang data menggunakan kunci asimetris
Contoh dalam topik ini menunjukkan cara mengenkripsi ulang data menggunakan kunci simetris. Saat Anda menggunakan kunci simetris, Cloud KMS akan otomatis menyimpulkan versi kunci yang akan digunakan untuk dekripsi. Saat menggunakan kunci asimetris, Anda harus menentukan versi kunci.
- Saat mengikuti petunjuk untuk menggunakan Google Cloud CLI, selalu sertakan flag
--version
. - Saat mengikuti petunjuk untuk menggunakan API, Anda menggunakan
CryptoKeyVersions
, bukanCryptoKeys
. Anda dapat membaca selengkapnya tentang mengenkripsi dan mendekripsi data dengan kunci asimetris.
Alur kerja untuk mengenkripsi ulang data dengan kunci asimetris mirip dengan yang dijelaskan dalam topik ini.
Alur kerja enkripsi ulang data
Gunakan langkah-langkah berikut untuk mengenkripsi ulang data dan menonaktifkan atau menjadwalkan pemusnahan versi kunci yang digunakan untuk enkripsi asli.
Mendekripsi data menggunakan versi kunci sebelumnya
Cloud KMS otomatis menggunakan versi kunci yang benar untuk mendekripsi data, selama versi kunci tidak dinonaktifkan, dijadwalkan untuk dihancurkan, atau dihancurkan. Contoh berikut menunjukkan cara mendekripsi data. Ini adalah kode dekripsi yang sama dengan yang digunakan di Mengenkripsi dan Mendekripsi.
gcloud
Untuk menggunakan Cloud KMS di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi terbaru.
gcloud kms decrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --ciphertext-file FILE_TO_DECRYPT \ --plaintext-file DECRYPTED_OUTPUT
Ganti kode berikut:
KEY_NAME
: nama kunci yang ingin Anda gunakan untuk dekripsi.KEY_RING
: nama key ring yang berisi kunci.LOCATION
: lokasi Cloud KMS yang berisi key ring.FILE_TO_DECRYPT
: jalur ke file yang ingin Anda dekripsi.DECRYPTED_OUTPUT
: jalur tempat Anda ingin menyimpan output yang didekripsi.
Untuk mengetahui informasi tentang semua flag dan kemungkinan nilai, jalankan perintah dengan
flag --help
.
C#
Untuk menjalankan kode ini, siapkan lingkungan pengembangan C# terlebih dahulu dan 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 Cloud KMS Java SDK.
Node.js
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Node.js terlebih dahulu dan instal Cloud KMS Node.js SDK.
PHP
Untuk menjalankan kode ini, pertama-tama pelajari cara menggunakan PHP di Google Cloud dan menginstal Cloud KMS PHP SDK.
Python
Untuk menjalankan kode ini, pertama-tama siapkan lingkungan pengembangan Python dan instal Cloud KMS Python SDK.
Ruby
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Ruby terlebih dahulu, lalu instal Cloud KMS Ruby SDK.
API
Contoh ini menggunakan curl sebagai klien HTTP untuk menunjukkan penggunaan API. Untuk informasi selengkapnya tentang kontrol akses, lihat Mengakses Cloud KMS API.
Teks yang didekripsi yang ditampilkan dalam JSON dari Cloud KMS dienkode base64.
Untuk mendekripsi data terenkripsi, buat permintaan POST
dan berikan informasi project dan kunci yang sesuai, lalu tentukan teks terenkripsi (juga dikenal sebagai ciphertext) yang akan didekripsi di kolom ciphertext
dari isi permintaan.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:decrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"ciphertext\": \"ENCRYPTED_DATA\"}"
Ganti kode berikut:
PROJECT_ID
: ID project yang berisi key ring dan kunci yang ingin Anda gunakan untuk dekripsi.LOCATION
: lokasi Cloud KMS yang berisi key ring.KEY_RING
: key ring yang berisi kunci yang ingin Anda gunakan untuk dekripsi.KEY_NAME
: nama kunci yang ingin Anda gunakan untuk dekripsi.ENCRYPTED_DATA
: data terenkripsi yang ingin Anda dekripsi.
Berikut adalah contoh payload dengan data yang dienkode base64:
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
Mengenkripsi ulang data menggunakan versi kunci utama yang baru
Cloud KMS 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, pertama-tama Instal atau upgrade ke Google Cloud CLI versi terbaru.
gcloud kms encrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --plaintext-file FILE_TO_ENCRYPT \ --ciphertext-file ENCRYPTED_OUTPUT
Ganti kode berikut:
KEY_NAME
: nama kunci yang ingin Anda gunakan untuk enkripsi.KEY_RING
: nama key ring yang berisi kunci.LOCATION
: lokasi Cloud KMS yang berisi key ring.FILE_TO_ENCRYPT
: jalur ke file yang ingin Anda enkripsi.ENCRYPTED_OUTPUT
: jalur tempat Anda ingin menyimpan output terenkripsi.
Untuk mengetahui informasi tentang semua flag dan kemungkinan nilai, jalankan perintah dengan
flag --help
.
C#
Untuk menjalankan kode ini, siapkan lingkungan pengembangan C# terlebih dahulu dan 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 Cloud KMS Java SDK.
Node.js
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Node.js terlebih dahulu dan instal Cloud KMS Node.js SDK.
PHP
Untuk menjalankan kode ini, pertama-tama pelajari cara menggunakan PHP di Google Cloud dan menginstal Cloud KMS PHP SDK.
Python
Untuk menjalankan kode ini, pertama-tama siapkan lingkungan pengembangan Python dan instal Cloud KMS Python SDK.
Ruby
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Ruby terlebih dahulu, lalu instal Cloud KMS Ruby SDK.
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 base64 sebelum dapat dienkripsi oleh Cloud KMS.
Untuk mengenkripsi data, buat permintaan POST
dan berikan project dan
informasi kunci yang sesuai, serta tentukan teks berenkode base64 yang akan dienkripsi di
kolom plaintext
isi permintaan.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:encrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"plaintext\": \"PLAINTEXT_TO_ENCRYPT\"}"
Ganti kode berikut:
PROJECT_ID
: ID project yang berisi key ring dan kunci yang ingin Anda gunakan untuk enkripsi.LOCATION
: lokasi Cloud KMS yang berisi key ring.KEY_RING
: key ring yang berisi kunci yang ingin Anda gunakan untuk enkripsi.KEY_NAME
: nama kunci yang ingin Anda gunakan untuk enkripsi.PLAINTEXT_TO_ENCRYPT
: data teks biasa yang ingin Anda enkripsi. Teks biasa harus dienkode dengan base64 sebelum Anda memanggil metodeencrypt
.
Berikut adalah contoh payload dengan data yang dienkode base64:
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
Menonaktifkan atau menjadwalkan pemusnahan versi kunci sebelumnya
Jika Anda memutar kunci sebagai respons terhadap insiden yang dicurigai, setelah mengenkripsi ulang data, nonaktifkan atau jadwalkan pemusnahan versi kunci sebelumnya.
Menonaktifkan versi kunci yang diaktifkan
Hanya versi kunci yang Diaktifkan 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 Nonaktifkan.
gcloud
Untuk menggunakan Cloud KMS di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi terbaru.
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 berada. Ganti location dengan lokasi Cloud KMS untuk key ring.
Untuk mengetahui informasi tentang semua flag dan kemungkinan nilai, jalankan perintah dengan
flag --help
.
C#
Untuk menjalankan kode ini, siapkan lingkungan pengembangan C# terlebih dahulu dan 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 Cloud KMS Java SDK.
Node.js
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Node.js terlebih dahulu dan instal Cloud KMS Node.js SDK.
PHP
Untuk menjalankan kode ini, pertama-tama pelajari cara menggunakan PHP di Google Cloud dan menginstal Cloud KMS PHP SDK.
Python
Untuk menjalankan kode ini, pertama-tama siapkan lingkungan pengembangan Python dan instal Cloud KMS Python SDK.
Ruby
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Ruby terlebih dahulu, lalu instal Cloud KMS Ruby SDK.
Menjadwalkan versi kunci untuk dimusnahkan
Hanya versi kunci yang Diaktifkan atau Dinonaktifkan 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 Destroy di header.
Di perintah konfirmasi, masukkan nama kunci, lalu klik Jadwalkan Penghancuran.
gcloud
Untuk menggunakan Cloud KMS di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi terbaru.
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 flag dan kemungkinan nilai, jalankan perintah dengan
flag --help
.
C#
Untuk menjalankan kode ini, siapkan lingkungan pengembangan C# terlebih dahulu dan 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 Cloud KMS Java SDK.
Node.js
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Node.js terlebih dahulu dan instal Cloud KMS Node.js SDK.
PHP
Untuk menjalankan kode ini, pertama-tama pelajari cara menggunakan PHP di Google Cloud dan menginstal Cloud KMS PHP SDK.
Python
Untuk menjalankan kode ini, pertama-tama siapkan lingkungan pengembangan Python dan instal Cloud KMS Python SDK.
Ruby
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Ruby terlebih dahulu, lalu instal Cloud KMS Ruby SDK.
API
Contoh ini menggunakan curl sebagai klien HTTP untuk menunjukkan penggunaan API. Untuk informasi selengkapnya tentang kontrol akses, lihat Mengakses Cloud KMS API.
Menghancurkan 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"