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 Modul Keamanan Hardware (HSM) yang dihosting di cloud. Dengan layanan ini, Anda dapat menghosting kunci enkripsi dan menjalankan 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 lokasi Google Cloud 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 Key ring location, pilih lokasi seperti
"us-east1"
.Klik Create.
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 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.
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 KeyRing.create
API
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 bagian What type of key do you want to create?, pilih Generated key.
Di kolom Key name, masukkan nama untuk kunci Anda.
Klik drop-down Protection level, lalu pilih HSM.
Klik menu drop-down Purpose, lalu pilih Symmetric encrypt/decrypt.
Setujui nilai default untuk Rotation period dan Starting on.
Klik Create.
gcloud
Untuk menggunakan Cloud KMS di command line, pertama-tama Instal atau upgrade ke Google Cloud CLI versi terbaru.
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 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 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.
Mengenkripsi data
Setelah memiliki kunci, Anda dapat menggunakan kunci tersebut untuk mengenkripsi konten teks atau biner.
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=", }
Mendekripsi ciphertext
Untuk mendekripsi konten terenkripsi, Anda harus menggunakan kunci yang sama dengan yang digunakan untuk mengenkripsi konten.
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...", }
Langkah berikutnya
Contoh enkripsi dalam topik ini menggunakan kunci simetris dengan level 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 untuk mulai membuat, memutar, dan menetapkan izin pada kunci.
Baca Konsep untuk lebih memahami hierarki objek, status kunci, dan rotasi kunci.
Pelajari Logging di Cloud KMS. Perhatikan bahwa logging berdasarkan operasi, dan berlaku untuk kunci dengan tingkat perlindungan software dan HSM.
Pelajari lebih lanjut cara Cloud HSM melindungi data Anda dalam laporan resmi arsitektur Cloud HSM.
Batasan umum
Ukuran pesan dibatasi hingga 8 KiB (bukan 64 KiB untuk kunci software Cloud KMS) untuk teks biasa dan ciphertext yang disediakan pengguna, termasuk data tambahan yang diautentikasi.
Cloud HSM mungkin tidak tersedia di multi-region atau dual region 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 Google Cloud lainnya, lokasi yang Anda gunakan untuk layanan tersebut harus sama persis dengan lokasi kunci Cloud HSM Anda. 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 mungkin menimbulkan latensi yang jauh lebih besar dibandingkan dengan menggunakan kunci software Cloud KMS.
Bare Metal Rack HSM
Google Cloud menawarkan opsi HSM tambahan, seperti tenancy tunggal. Bare Metal Rack HSM tersedia bagi pelanggan untuk menghosting HSM mereka sendiri di ruang yang disediakan Google. Hubungi perwakilan akun Anda untuk mengetahui informasi tambahan.