Topik ini memberikan ringkasan Cloud HSM dan menunjukkan cara membuat serta menggunakan kunci enkripsi yang dilindungi HSM di Cloud Key Management Service.
Apa itu Cloud HSM?
Cloud HSM adalah layanan Hardware Security Module (HSM) yang dihosting di cloud yang memungkinkan Anda menghosting kunci enkripsi dan melakukan operasi kriptografi di cluster HSM bersertifikasi FIPS 140-2 Level 3. Google mengelola cluster HSM untuk Anda, sehingga Anda tidak perlu mengkhawatirkan pengelompokan, penskalaan, atau patching. Karena Cloud HSM menggunakan Cloud KMS sebagai front end-nya, Anda dapat memanfaatkan semua kemudahan dan fitur yang disediakan Cloud KMS.
Membuat key ring
Saat membuat kunci, Anda menambahkannya ke key ring di lokasi Google Cloud tertentu. Anda dapat membuat key ring baru atau menggunakan key ring yang sudah ada. Dalam topik ini, Anda akan membuat key ring baru dan menambahkan kunci baru ke dalamnya.
Buat key ring di Google Cloud lokasi yang mendukung Cloud HSM.
Konsol
Buka halaman Key Management di konsol Google Cloud .
Klik Create key ring.
Untuk Key ring name, masukkan nama untuk key ring Anda.
Untuk Lokasi key ring, pilih lokasi seperti
"us-east1"
.Klik Buat.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
-
Di lingkungan Anda, jalankan perintah
gcloud kms keyrings create
:gcloud kms keyrings create KEY_RING \ --location LOCATION
Ganti kode berikut:
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 SDK C# Cloud KMS.
Go
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Go terlebih dahulu dan 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, pelajari terlebih dahulu cara menggunakan PHP di Google Cloud dan instal Cloud KMS PHP SDK.
Python
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Python terlebih dahulu dan instal Cloud KMS Python SDK.
Ruby
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Ruby terlebih dahulu dan instal Cloud KMS Ruby SDK.
API
Contoh ini menggunakan curl sebagai klien HTTP untuk menunjukkan penggunaan API. Untuk mengetahui informasi selengkapnya tentang kontrol akses, lihat Mengakses Cloud KMS API.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING" \ --request "POST" \ --header "authorization: Bearer TOKEN"
Ganti kode berikut:
PROJECT_ID
: ID project yang berisi key ring.KEY_RING
: nama key ring yang berisi kunci.LOCATION
: lokasi Cloud KMS key ring.
Lihat dokumentasi API KeyRing.create
untuk mengetahui informasi selengkapnya.
Buat kunci
Ikuti langkah-langkah berikut untuk membuat kunci Cloud HSM di key ring dan lokasi yang ditentukan.
Konsol
Buka halaman Key Management di konsol Google Cloud .
Klik nama key ring yang akan Anda buat kunci.
Klik Create key.
Di What type of key do you want to create?, pilih Generated key.
Di kolom Key name, masukkan nama untuk kunci Anda.
Klik dropdown Tingkat perlindungan, lalu pilih HSM.
Klik dropdown Purpose, lalu pilih Symmetric encrypt/decrypt.
Setujui nilai default untuk Rotation period dan Starting on.
Klik Buat.
gcloud
Untuk menggunakan Cloud KMS di command line, Instal atau upgrade ke versi terbaru Google Cloud CLI terlebih dahulu.
gcloud kms keys create key \ --keyring key-ring \ --location location \ --purpose "encryption" \ --protection-level "hsm"
Ganti key dengan nama untuk kunci baru. Ganti key-ring dengan nama key ring yang sudah ada tempat kunci akan 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 SDK C# Cloud KMS.
Go
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Go terlebih dahulu dan 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, pelajari terlebih dahulu cara menggunakan PHP di Google Cloud dan instal Cloud KMS PHP SDK.
Python
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Python terlebih dahulu dan instal Cloud KMS Python SDK.
Ruby
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Ruby terlebih dahulu dan instal Cloud KMS Ruby SDK.
Mengenkripsi data
Setelah memiliki kunci, Anda dapat menggunakan kunci tersebut untuk mengenkripsi konten biner atau teks.
gcloud
Untuk menggunakan Cloud KMS di command line, Instal atau upgrade ke versi terbaru Google Cloud CLI terlebih dahulu.
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 SDK C# Cloud KMS.
Go
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Go terlebih dahulu dan 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, pelajari terlebih dahulu cara menggunakan PHP di Google Cloud dan instal Cloud KMS PHP SDK.
Python
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Python terlebih dahulu dan instal Cloud KMS Python SDK.
Ruby
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Ruby terlebih dahulu dan instal Cloud KMS Ruby SDK.
API
Contoh ini menggunakan curl sebagai klien HTTP untuk menunjukkan penggunaan API. Untuk mengetahui 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 informasi project dan
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 base64 sebelum Anda memanggil metodeencrypt
.
Berikut contoh payload dengan data berenkode base64:
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
Mendekripsi teks tersandi
Untuk mendekripsi konten terenkripsi, Anda harus menggunakan kunci yang sama yang digunakan untuk mengenkripsi konten tersebut.
gcloud
Untuk menggunakan Cloud KMS di command line, Instal atau upgrade ke versi terbaru Google Cloud CLI terlebih dahulu.
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 SDK C# Cloud KMS.
Go
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Go terlebih dahulu dan 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, pelajari terlebih dahulu cara menggunakan PHP di Google Cloud dan instal Cloud KMS PHP SDK.
Python
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Python terlebih dahulu dan instal Cloud KMS Python SDK.
Ruby
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Ruby terlebih dahulu dan instal Cloud KMS Ruby SDK.
API
Contoh ini menggunakan curl sebagai klien HTTP untuk menunjukkan penggunaan API. Untuk mengetahui informasi selengkapnya tentang kontrol akses, lihat Mengakses Cloud KMS API.
Teks terdekripsi yang ditampilkan dalam JSON dari Cloud KMS dienkode base64.
Untuk mendekripsi data terenkripsi, buat permintaan POST
dan berikan informasi
project dan kunci yang sesuai serta tentukan teks terenkripsi (juga dikenal sebagai
ciphertext) yang akan didekripsi di kolom ciphertext
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 contoh payload dengan data berenkode base64:
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
Langkah berikutnya
Contoh enkripsi dalam topik ini menggunakan kunci simetris dengan tingkat perlindungan HSM. Untuk mengenkripsi menggunakan kunci asimetris dengan tingkat perlindungan HSM, ikuti langkah-langkah di Mengenkripsi dan mendekripsi data dengan kunci asimetris dengan perubahan berikut:
- Buat key ring di salah satu region yang didukung untuk Cloud HSM.
- Buat kunci dengan level perlindungan HSM.
Untuk menggunakan kunci asimetris dengan tingkat perlindungan HSM untuk penandatanganan kurva elips atau penandatanganan RSA, ikuti langkah-langkah di Membuat dan memvalidasi tanda tangan dengan perubahan berikut:
- Buat key ring di salah satu region yang didukung untuk Cloud HSM.
- Buat kunci dengan level perlindungan HSM.
Mulai menggunakan API.
Lihat Referensi Cloud KMS API.
Baca Panduan cara penggunaan untuk mulai membuat, merotasi, dan menyetel izin pada kunci.
Baca Konsep untuk lebih memahami hierarki objek, status utama, dan rotasi kunci.
Pelajari Logging di Cloud KMS. Perhatikan bahwa logging didasarkan pada operasi, dan berlaku untuk kunci dengan tingkat perlindungan HSM dan software.
Pelajari lebih lanjut cara Cloud HSM melindungi data Anda dalam laporan resmi arsitektur Cloud HSM.
Batasan umum
Ukuran pesan dibatasi hingga 8 KiB (berbeda dengan 64 KiB untuk kunci software Cloud KMS) untuk teks biasa dan teks tersandi yang disediakan pengguna, termasuk data autentikasi tambahan.
Cloud HSM mungkin tidak tersedia di multi-region atau region ganda tertentu. Untuk mengetahui detailnya, lihat Region yang didukung untuk Cloud HSM.
Jika Anda menggunakan kunci Cloud HSM dengan integrasi kunci enkripsi yang dikelola pelanggan (CMEK) di layanan lain, lokasi yang Anda gunakan untuk layanan harus sama persis dengan lokasi kunci Cloud HSM Anda. Google Cloud Hal ini berlaku untuk lokasi regional, dual-regional, dan multi-regional.
Untuk mengetahui informasi selengkapnya tentang integrasi CMEK, lihat bagian yang relevan di Enkripsi dalam penyimpanan.
Saat ini, operasi kunci untuk kunci asimetris yang disimpan di Cloud HSM dapat menimbulkan latensi yang jauh lebih besar dibandingkan dengan penggunaan kunci software Cloud KMS.
Bare Metal Rack HSM
Google Cloud menawarkan opsi HSM tambahan, seperti multi-tenant. Bare Metal Rack HSM tersedia bagi pelanggan untuk menghosting HSM mereka sendiri di ruang yang disediakan Google. Tanyakan kepada perwakilan akun Anda untuk mendapatkan informasi tambahan.