Topik ini memberikan ringkasan tentang 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. Dengan layanan ini, Anda dapat menghosting kunci enkripsi dan melakukan operasi kriptografi di cluster HSM tersertifikasi 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 yang sudah ada. Dalam topik ini, Anda membuat {i>key ring<i} 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 Nama key ring, masukkan nama key ring Anda.
Untuk Lokasi key ring, pilih lokasi seperti
"us-east1"
.Klik Create.
gcloud
-
Di konsol Google Cloud, aktifkan 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 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.
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 informasi selengkapnya.
Buat kunci
Ikuti langkah-langkah berikut untuk membuat kunci Cloud HSM pada 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 dropdown Tingkat perlindungan, lalu pilih HSM.
Klik dropdown Destination, lalu pilih Symmetric encryption/decrypt.
Setujui nilai default untuk Rotation period dan Getting on.
Klik Create.
gcloud
Untuk menggunakan Cloud KMS di command line, Instal atau upgrade Google Cloud CLI ke versi terbaru 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 tersebut akan 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.
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 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=", }
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, 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...", }
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 HSM level perlindungan.
Untuk menggunakan kunci asimetris dengan tingkat perlindungan HSM untuk penandatanganan kurva eliptik atau penandatanganan RSA, ikuti langkah-langkah di Membuat dan memvalidasi tanda tangan dengan perubahan ini:
- Buat key ring di salah satu region yang didukung untuk Cloud HSM.
- Buat kunci dengan HSM level perlindungan.
Mulai menggunakan API.
Lihat Referensi Cloud KMS API.
Baca Panduan cara kerja untuk mulai membuat, merotasi, dan menetapkan izin pada kunci.
Baca Concepts untuk lebih memahami hierarki objek, status kunci, dan rotasi kunci.
Pelajari Logging di Cloud KMS. Perlu diperhatikan bahwa logging didasarkan pada operasi, dan berlaku untuk kunci dengan tingkat perlindungan HSM dan software.
Pelajari lebih lanjut cara Cloud HSM melindungi data Anda di 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 terautentikasi tambahan.
Cloud HSM mungkin tidak tersedia di multi-region atau region ganda. 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 lain, lokasi yang Anda gunakan untuk layanan harus sama persis dengan lokasi kunci Cloud HSM Anda. Hal ini berlaku untuk lokasi regional, regional ganda, dan multi-regional.
Untuk mengetahui informasi selengkapnya tentang integrasi CMEK, lihat bagian Enkripsi dalam penyimpanan yang relevan.
Saat ini, operasi kunci untuk kunci asimetris yang disimpan di Cloud HSM dapat menimbulkan latensi yang jauh lebih besar dibandingkan dengan menggunakan kunci software Cloud KMS.
Rak Bare Metal HSM
Google Cloud menawarkan opsi HSM tambahan, seperti tenant tunggal. 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.