Halaman ini menunjukkan cara menggunakan Cloud Key Management Service (Cloud KMS) untuk melakukan operasi kunci simetris berikut:
- Mengenkripsi teks atau konten biner (teks biasa) 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 dua izin ini. Untuk mengetahui informasi selengkapnya, lihat Izin dan Peran.
Enkripsikan
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=", }
Dekripsi
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 selanjutnya
- Baca selengkapnya tentang enkripsi simetris mentah.
- Baca selengkapnya tentang enkripsi envelope.
- Coba Codelab Mengenkripsi dan mendekripsi data dengan Cloud KMS.