Halaman ini menunjukkan cara menggunakan Cloud Key Management Service (Cloud KMS) untuk melakukan operasi kunci simetris berikut:
- Enkripsi konten teks atau biner (plaintext) menggunakan kunci Cloud KMS.
- Mendekripsi ciphertext yang dienkripsi dengan kunci Cloud KMS.
Jika Anda ingin menggunakan kunci asimetris untuk enkripsi, lihat Mengenkripsi dan mendekripsi data dengan kunci asimetris. Untuk mempelajari enkripsi simetris mentah, lihat enkripsi simetris mentah.
Sebelum memulai
Buat key ring dan buat kunci.
Pastikan pengguna yang memanggil metode enkripsi dan dekripsi memiliki izin
cloudkms.cryptoKeyVersions.useToEncrypt
dancloudkms.cryptoKeyVersions.useToDecrypt
pada kunci.Salah satu cara untuk mengizinkan pengguna mengenkripsi atau mendekripsi adalah dengan menambahkan pengguna ke peran IAM
roles/cloudkms.cryptoKeyEncrypter
,roles/cloudkms.cryptoKeyDecrypter
, atauroles/cloudkms.cryptoKeyEncrypterDecrypter
untuk kunci tersebut. Peranroles/cloudkms.admin
tidak memberikan kedua izin ini. Untuk mengetahui informasi selengkapnya, lihat Izin dan Peran.
Enkripsikan
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
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
- Baca selengkapnya tentang enkripsi simetris mentah.
- Baca selengkapnya tentang enkripsi envelope.
- Coba Codelab Mengenkripsi dan mendekripsi data dengan Cloud KMS.