Mengenkripsi dan mendekripsi data dengan Cloud KMS

1. Ringkasan

Cloud KMS adalah key management service yang dihosting di cloud dan memungkinkan Anda mengelola kunci kriptografis untuk layanan cloud seperti saat Anda mengelolanya di infrastruktur lokal. Alat ini mencakup dukungan untuk enkripsi, dekripsi, penandatanganan, dan verifikasi menggunakan berbagai jenis dan sumber kunci, termasuk Cloud HSM untuk kunci yang didukung hardware. Tutorial ini mengajarkan cara mengenkripsi dan mendekripsi data menggunakan kunci Cloud KMS simetris.

Anda akan mempelajari

  • Cara mengaktifkan Cloud KMS API
  • Cara membuat Key Ring Cloud KMS
  • Cara membuat Kunci Kripto Cloud KMS untuk enkripsi/dekripsi simetris
  • Cara merotasi Kunci Kripto Cloud KMS simetris

2. Penyiapan dan Persyaratan

Penyiapan lingkungan mandiri

  1. Login ke Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. (Jika belum memiliki akun Gmail atau G Suite, Anda harus membuatnya.)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

Ingat project ID, nama unik di semua project Google Cloud (maaf, nama di atas telah digunakan dan tidak akan berfungsi untuk Anda!) Project ID tersebut selanjutnya akan dirujuk di codelab ini sebagai PROJECT_ID.

  1. Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan resource Google Cloud.

Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Pastikan untuk mengikuti petunjuk yang ada di bagian "Membersihkan" yang memberi tahu Anda cara menonaktifkan resource sehingga tidak menimbulkan penagihan di luar tutorial ini. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.

Mulai Cloud Shell

Dalam codelab ini, Anda akan menggunakan Cloud Shell, lingkungan virtual gratis yang berjalan di Google Cloud. Dari GCP Console, klik ikon Cloud Shell di toolbar kanan atas:

vezHz_9nBUSt_0pD8eMHkzgHehRa83ILgMpcztEJtGZspECiZTk47O02PYk6Zp7jyStful3AIDEZU8qcCNbiXF4WcpkUdJi2LoUbxTWg4cZ4skDnvGKNywBZlDBzzWha111IZ1KqXQ

Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:

wQQCzLZ7_omk2cuoBaKVPnniKDFG6MsP8h2OA0j3Iw9LRSFQ9TkD6Ccq4dcUASPoD5UKe1Ur7bIgYn5gAh2r6BlQDnpFmgyAtv9x2D6ppXS0pfjfxViuEfoetgLvgVeduekc2hgU2Q

Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Jalankan semua perintah dari shell ini, kecuali jika diinstruksikan lain.

3. Mengaktifkan Layanan Cloud KMS

Sebelum dapat menggunakan Cloud KMS, Anda harus mengaktifkan layanan tersebut terlebih dahulu di project Anda. Langkah ini hanya perlu dilakukan sekali per project. Untuk mengaktifkan layanan Cloud KMS, jalankan perintah berikut:

$ gcloud services enable cloudkms.googleapis.com \
    --project "${GOOGLE_CLOUD_PROJECT}"

Diperlukan waktu hingga satu menit untuk mengaktifkannya. Perintah akan melaporkan keberhasilan setelah selesai.

4. Membuat Kunci KMS

Membuat Key Ring Cloud KMS. Di Cloud KMS, Key Ring adalah kumpulan kunci kriptografis yang logis. Key Ring berisi metadata tentang kunci seperti lokasinya. Buat Key Ring bernama my-keyring di region global:

$ gcloud kms keyrings create "my-keyring" \
    --location "global"

Sekarang buat Kunci Kripto bernama my-symmetric-key dengan tujuan encryption di dalam Key Ring yang baru saja Anda buat.

$ gcloud kms keys create "my-symmetric-key" \
    --location "global" \
    --keyring "my-keyring" \
    --purpose "encryption"

5. Enkripsi Data

Buat file dengan data untuk mengenkripsi dan menggunakan alat command line gcloud untuk mengenkripsi data dalam file:

$ echo "my-contents" > ./data.txt
$ gcloud kms encrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --plaintext-file ./data.txt \
    --ciphertext-file ./data.txt.enc

Data terenkripsi (juga dikenal sebagai "ciphertext") disimpan di data.txt.enc pada disk. Jika Anda membuka file data.txt.enc, Anda akan melihat bahwa file tersebut berisi karakter aneh yang tidak dapat dicetak. Hal ini karena data yang dihasilkan dalam format biner.

Saat menyimpan teks tersandi dalam database atau mengirimkannya sebagai bagian dari permintaan HTTP, Anda mungkin perlu mengenkode data tersebut. Mekanisme encoding yang umum adalah base64.

Cloud KMS tidak menyimpan teks biasa yang Anda berikan. Anda harus menyimpan teks tersandi ini di lokasi yang aman karena teks tersandi tersebut akan diperlukan untuk mengambil nilai teks polos.

6. Mendekripsi Data

Dekripsi ciphertext dari file menggunakan alat command line gcloud:

$ gcloud kms decrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --plaintext-file - \
    --ciphertext-file ./data.txt.enc

Alat command line gcloud membaca ciphertext dari file dan mendekripsinya menggunakan Cloud KMS. Perhatikan bahwa contoh ini menentukan argumen --plaintext-file sebagai -. Tindakan ini akan menginstruksikan gcloud untuk mencetak hasilnya ke terminal.

Konsol akan mencetak my-contents, yang merupakan nilai teks biasa yang sama dari file di atas.

7. Putar Kunci

Di Cloud KMS, Kunci Kripto sebenarnya adalah kumpulan Versi Kunci Kripto. Anda dapat membuat Versi Kunci Kripto baru untuk melakukan rotasi kunci. Cloud KMS juga dapat merotasi kunci secara otomatis sesuai jadwal.

Untuk merotasi kunci secara manual, buat Versi Kunci Kripto baru dan tetapkan sebagai versi utama:

$ gcloud kms keys versions create \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --primary

Semua permintaan mendatang untuk mengenkripsi data akan menggunakan kunci baru ini. Kunci yang lebih lama masih tersedia untuk mendekripsi data yang sebelumnya dienkripsi menggunakan kunci tersebut. Cloud KMS secara otomatis menentukan kunci dekripsi yang sesuai berdasarkan ciphertext yang diberikan. Anda tidak perlu menentukan Versi Kunci Kripto mana yang akan digunakan untuk dekripsi.

Agar nilai teks tersandi yang dienkripsi menggunakan Versi Kunci Kripto lama tidak didekripsi menggunakan Cloud KMS, Anda dapat menonaktifkan atau menghancurkan Versi Kunci Kripto tersebut. Penonaktifan adalah operasi yang dapat dibatalkan, sedangkan pemusnahan bersifat permanen. Untuk menonaktifkan versi:

$ gcloud kms keys versions disable "1" \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key"

8. Selamat!

Anda telah mengaktifkan Cloud KMS API, membuat kunci enkripsi simetris, serta mengenkripsi dan mendekripsi data. Cloud KMS adalah produk yang canggih dan enkripsi/dekripsi hanya sebagian kecil dari kemampuannya.

Pembersihan

Jika Anda telah selesai menjelajah, pertimbangkan untuk menghapus proyek Anda.

  • Buka Cloud Platform Console
  • Pilih project yang ingin dinonaktifkan, lalu klik "Hapus" di bagian atas. Tindakan ini akan menjadwalkan penghapusan project.

Pelajari Lebih Lanjut

Lisensi

Karya ini dilisensikan berdasarkan Lisensi Umum Creative Commons Attribution 2.0.