Dokumen 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 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 LOCATIONGanti 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. PROJECT_ID: ID project yang berisi key ring.KEY_RING: nama key ring yang berisi kunci.LOCATION: lokasi Cloud KMS key ring.
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 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:
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 atau HSM tenant tunggal.
Jika Anda memilih HSM tenant tunggal, pilih Instance HSM tenant tunggal tempat Anda ingin membuat kunci.
Klik dropdown 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, Instal atau upgrade ke versi terbaru Google Cloud CLI terlebih dahulu.
To create a Multi-tenant Cloud HSM key, run the `kms keys create` command
with the `hsm` protection level.
gcloud kms keys create KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--purpose "encryption" \
--protection-level "hsm"
Ganti kode berikut:
KEY_NAME: nama yang ingin Anda gunakan untuk kunci.KEY_RING: nama key ring tempat Anda ingin membuat kunci.LOCATION: lokasi key ring.
Untuk mengetahui informasi tentang semua flag dan kemungkinan nilai, jalankan perintah dengan flag --help.
Untuk membuat kunci Single-tenant Cloud HSM, jalankan perintah kms keys create dengan level perlindungan hsm-single-tenant dan tentukan instance Single-tenant Cloud HSM tempat Anda ingin membuat kunci. Instance Cloud HSM Single-tenant harus berada di lokasi yang sama dengan key ring.
gcloud kms keys create KEY_NAME
--keyring KEY_RING
--location LOCATION
--purpose "encryption"
--protection-level "hsm-single-tenant"
--crypto-key-backend="projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME"
Ganti kode berikut:
KEY_NAME: nama yang ingin Anda gunakan untuk kunci.KEY_RING: nama key ring tempat Anda ingin membuat kunci.LOCATION: lokasi key ring.PROTECTION_LEVEL: tingkat perlindungan kunci yang ingin Anda buat.INSTANCE_PROJECT: ID project tempat instance HSM Cloud Single-tenant Anda berada.INSTANCE_NAME: nama instance Single-tenant Cloud HSM tempat Anda ingin membuat kunci. Untuk mengetahui informasi selengkapnya tentang instance Cloud HSM tenant tunggal, lihat Membuat dan mengelola instance Cloud HSM tenant tunggal.
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 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.
Untuk membuat kunci Multi-tenant Cloud HSM, gunakan metode
CryptoKey.create
dengan level perlindungan HSM:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys?crypto_key_id=KEY_NAME" \
--request "POST" \
--header "authorization: Bearer TOKEN" \
--header "content-type: application/json" \
--data '{"purpose": "ENCRYPT_DECRYPT", "versionTemplate": {
"protectionLevel": "HSM", "algorithm": "ALGORITHM" }}'
Ganti kode berikut:
PROJECT_ID: ID project yang berisi key ring.LOCATION: lokasi Cloud KMS key ring.KEY_RING: nama key ring yang berisi kunci.KEY_NAME: nama kunci.ALGORITHM: algoritma yang ingin Anda gunakan—misalnya,GOOGLE_SYMMETRIC_ENCRYPTION. Untuk melihat semua algoritma yang didukung, lihat Tujuan utama dan algoritma.
Untuk membuat kunci Single-tenant Cloud HSM, gunakan metode
CryptoKey.create
dengan tingkat perlindungan HSM_SINGLE_TENANT:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys?crypto_key_id=KEY_NAME" \
--request "POST" \
--header "authorization: Bearer TOKEN" \
--header "content-type: application/json" \
--data '{"purpose": "ENCRYPT_DECRYPT", "versionTemplate": {
"protectionLevel": "HSM_SINGLE_TENANT", "algorithm": "ALGORITHM",
"cryptoKeyBackend": "projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME" }}'
Ganti kode berikut:
PROJECT_ID: ID project yang berisi key ring.LOCATION: lokasi Cloud KMS key ring.KEY_RING: nama key ring yang berisi kunci.KEY_NAME: nama kunci.ALGORITHM: algoritma yang ingin Anda gunakan—misalnya,GOOGLE_SYMMETRIC_ENCRYPTION. Untuk melihat semua algoritma yang didukung, lihat Tujuan utama dan algoritma.INSTANCE_PROJECT: ID project tempat instance HSM Cloud Single-tenant Anda berada.INSTANCE_NAME: nama instance Single-tenant Cloud HSM tempat Anda ingin membuat kunci. Untuk mengetahui informasi selengkapnya tentang instance Cloud HSM Single-tenant, lihat Membuat dan mengelola instance Cloud HSM Single-tenant.
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 Cloud KMS C# SDK.
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 Cloud KMS C# SDK.
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 ciphertext yang disediakan pengguna, termasuk data autentikasi tambahan.
Cloud HSM tidak tersedia di semua multi-region. Untuk mengetahui daftar semua lokasi yang mendukung Multi-tenant Cloud HSM, lihat lokasi Cloud KMS, lalu pilih Mendukung HSM multi-tenant untuk filter dukungan HSM.
Cloud HSM tenant tunggal tersedia di sebagian lokasi tempat Cloud HSM multi-tenant tersedia. Untuk mengetahui daftar semua lokasi yang mendukung Cloud HSM Single-tenant, lihat Lokasi Cloud KMS, dan pilih Mendukung HSM single-tenant untuk filter Dukungan HSM.
Jika Anda menggunakan kunci Cloud HSM dengan integrasi kunci enkripsi yang dikelola pelanggan (CMEK) di layanan lain, lokasi yang Anda gunakan untuk layanan tersebut 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.
Operasi kunci untuk kunci asimetris yang disimpan di Cloud HSM dapat menimbulkan latensi yang jauh lebih besar dibandingkan dengan menggunakan 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.