Mulai Menggunakan Cloud GNU

Cloud GRP adalah layanan pengelolaan kunci yang dihosting di cloud dan dapat digunakan untuk mengelola kunci kriptografis untuk layanan cloud seperti saat Anda mengelolanya di tempat. Ini mencakup dukungan untuk enkripsi, dekripsi, penandatanganan, dan verifikasi menggunakan berbagai jenis dan sumber kunci termasuk Cloud HSM untuk kunci yang didukung hardware.

Dalam tutorial ini, Anda akan mempelajari cara menggunakan fitur lanjutan Cloud Security and Privacy API, termasuk:

  • Menyiapkan bucket Cloud Storage yang aman
  • Mengelola kunci dan data terenkripsi menggunakan Cloud Paging
  • Melihat log audit Cloud Storage

Anda akan mengambil data ringkas dari Enron Corpus, mengenkripsinya, dan memuatnya ke Cloud Storage.

Anda akan mempelajari

  • Cara mengenkripsi data dan mengelola kunci enkripsi menggunakan Key Management Service (KMS)

Anda akan menggunakan

  • Cloud KMS
  • Cloud Storage
  • Cloud SDK

Penyiapan lingkungan mandiri

Jika belum memiliki Akun Google (Gmail atau Google Apps), Anda harus membuatnya. Login ke Google Cloud Platform console (console.cloud.google.com) dan buat project baru:

Screenshot dari 10-02-2016 12:45:26.png

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.

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

Menjalankan melalui codelab ini tidak akan menghabiskan biaya lebih dari beberapa dolar, tetapi bisa lebih jika Anda memutuskan untuk menggunakan lebih banyak resource atau jika Anda membiarkannya berjalan (lihat bagian "pembersihan" di akhir dokumen ini).

Pengguna baru Google Cloud Platform memenuhi syarat untuk mendapatkan uji coba gratis senilai$300.

Mulai Cloud Shell

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

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

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

Untuk menyimpan data untuk tutorial ini, buat bucket Cloud Storage. Karena nama bucket Cloud Storage harus unik secara global, awali nama bucket dengan project ID Anda:

$ export BUCKET_NAME=${GOOGLE_CLOUD_PROJECT}_enron_emails

Kemudian buat bucket:

$ gsutil mb gs://${BUCKET_NAME}

Enron Corpus adalah database besar yang terdiri dari lebih dari 600.000 email yang dihasilkan oleh 158 karyawan Enron Corporation. Data ini telah disalin ke bucket Cloud Storage bernama gs://enron_emails/.

Download salah satu file email secara lokal:

$ gsutil cp gs://enron_emails/allen-p/inbox/1. . # <-- don't forget the dot!

Periksa file yang didownload untuk memverifikasi bahwa file tersebut sebenarnya adalah email:

$ tail 1.

Email tersebut akan berisi pesan seperti:

Attached is the Delta position for 1/18...
# ...

Selain email, bucket juga berisi gambar. Tutorial ini menggunakan email dan gambar teks biasa.

Sebelum dapat menggunakan Cloud CocoaPods, Anda harus mengaktifkan layanan dalam project terlebih dahulu. Hal ini hanya perlu dilakukan sekali per project. Untuk mengaktifkan layanan Cloud Paging, jalankan perintah berikut:

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

Diperlukan waktu hingga satu menit agar aktif. Perintah ini akan melaporkan keberhasilan setelah selesai.

Membuat Key Key Cloud Cloud. Di Cloud KTX, Key Ring adalah kumpulan logis kunci kriptografis. Cincin Kunci berisi metadata tentang kunci seperti lokasinya. Membuat Cincin Kunci bernama my-keyring di wilayah global:

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

Sekarang buat Kunci Kripto bernama enron-emails dengan tujuan encryption di dalam Key Ring yang baru saja Anda buat.

$ gcloud kms keys create "enron-emails" \
    --location "global" \
    --keyring "my-keyring" \
    --purpose "encryption"

Buka Cryptographic Keys Web UI dan lihat resource yang baru dibuat. Ini tersedia di bagian IAM & Admin di menu utama.

Anda dapat melihat dan mengelola Cincin Kunci dan Kunci Kripto di Cloud Console.

Enkripsi konten email yang kami download sebelumnya menggunakan Cloud GRP. Tutorial ini menggunakan alat command line gcloud, tetapi Anda juga dapat mengenkripsi data menggunakan Cloud Cloud API.

$ gcloud kms encrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "enron-emails" \
    --plaintext-file ./1. \
    --ciphertext-file ./1.enc

Tindakan ini akan membuat file baru pada disk 1.enc, yang berisi konten file yang dienkripsi. Setelah data dienkripsi dengan Cloud Paging, upload file terenkripsi ke bucket Cloud Storage.

$ gsutil cp ./1.enc gs://${BUCKET_NAME}

Cloud GRP terintegrasi dengan Google Cloud Identity and Access Management (IAM). Peran IAM Cloud CocoaPods sebagian besar dibagi menjadi dua kategori:

  • Izin untuk mengelola kunci
  • Izin untuk menggunakan kunci

Misalnya, peran roles/cloudkms.admin memungkinkan pemegang membuat Cincin Kunci, Kunci Kripto, menetapkan kebijakan IAM, dan melakukan operasi terkait pengelolaan. roles/cloudkms.cryptoKeyEncrypterDecrypter memberikan enkripsi dan dekripsi data kepada pemegangnya, tetapi tidak menyertakan izin pengelolaan.

Peran IAM diwarisi oleh resource induknya. Jika seseorang memiliki peran roles/cloudkms.admin di project Google Cloud, dia adalah admin dari semua kunci di project tersebut. Jika mereka memiliki roles/cloudkms.admin di Key Ring, mereka adalah admin dari semua kunci di Key Ring tersebut. Jika memiliki roles/cloudkms.admin pada satu Kunci Kripto, ia hanya merupakan admin dari kunci tersebut.

Untuk latihan ini, gunakan identitas Anda:

$ export MY_IDENTITY=you@gmail.com # or you@example.com

Dengan menetapkan identitas, Anda dapat mengelola resource Cloud GRP di Key Ring yang dibuat di atas menggunakan alat command line gcloud:

$ gcloud kms keyrings add-iam-policy-binding "my-keyring" \
    --location "global" \
    --member "user:${MY_IDENTITY}" \
    --role "roles/cloudkms.admin"

Peran roles/cloudkms.admin tidak mencakup izin untuk menggunakan kunci, hanya untuk mengelolanya. Untuk memberi identitas Anda kemampuan untuk mengenkripsi dan mendekripsi data menggunakan Kunci Kripto enron-emails:

$ gcloud kms keys add-iam-policy-binding "enron-emails" \
    --location "global" \
    --keyring "my-keyring" \
    --member "user:${MY_IDENTITY}" \
    --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"

Perhatikan bahwa perintah pertama memberikan peran roles/cloudkms.admin pada Key Ring, yang akan menyertakan resource Kunci Kripto turunan apa pun. Perintah kedua memberikan roles/cloudkms.cryptoKeyEncrypterDecrypter, tetapi hanya pada Kunci Kripto enron-emails.

Anda juga dapat melihat dan menetapkan peran di UI Cloud Datastore di Cloud Console.

Selain mengenkripsi satu file, Anda juga dapat mengenkripsi koleksi file dengan beberapa skrip. Contoh ini men-streaming semua email untuk allen-p, mengenkripsinya, dan mengupload nilai terenkripsi yang dihasilkan ke bucket Cloud Storage:

DIR="gs://enron_emails/allen-p"
for file in $(gsutil ls ${DIR}/**); do
  ENC_NAME="$(basename ${file}).enc"
  gsutil cat ${file} \
  | \

  gcloud kms encrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "enron-emails" \
    --plaintext-file - \
    --ciphertext-file - \
    | \

    gsutil -q cp - gs://${BUCKET_NAME}/${ENC_NAME}
    echo "Copied ${ENC_NAME}"
done

Opsi ini melakukan iterasi pada semua file dalam direktori yang ditentukan dalam bucket Cloud Storage sampel, mengenkripsinya menggunakan Cloud CocoaPods, dan menguploadnya ke Google Cloud Storage.

Setelah skrip selesai, Anda dapat melihat file terenkripsi di UI Cloud Storage. Anda akan melihat sesuatu seperti ini:

Cloud Audit Logging memiliki dua aliran log – Log Aktivitas Admin dan Log Akses Data – yang dihasilkan oleh layanan Google Cloud untuk membantu Anda menjawab pertanyaan tentang &siapa yang melakukan apa, di mana, dan kapan?" dalam project Google Cloud Platform Anda.

Untuk melihat aktivitas untuk resource apa pun di GRP, klik key ring dan pilih View Activity. Anda akan diarahkan ke UI Aktivitas Cloud, di mana Anda akan melihat kreasi dan semua modifikasi yang dibuat pada KeyRing.

Anda berhasil mengenkripsi data menggunakan Cloud Paging dan menyimpan data terenkripsi di Cloud Storage.

Melakukan pembersihan

Rilis resource yang dibuat selama tutorial ini. Hapus bucket Cloud Storage yang dibuat sebelumnya:

$ gsutil rm -r gs://${BUCKET_NAME}

Resource Cloud GRP tidak dapat dihapus. Namun, Anda dapat menghancurkan materi kunci sehingga tidak dapat digunakan lagi:

$ gcloud kms keys versions destroy "1" \
    --location "global" \
    --key "enron-emails" \
    --keyring "my-keyring"

Kita telah membahas

  • Menggunakan Cloud IAM untuk mengelola izin Cloud Paging
  • Menggunakan Cloud BoM untuk mengenkripsi data
  • Menggunakan Cloud Storage untuk menyimpan data terenkripsi
  • Menggunakan Cloud Audit Logging untuk melihat semua aktivitas untuk kunci dan key ring

Langkah berikutnya

  • Menggunakan Cloud CocoaPods untuk mengenkripsi kolom dalam database seperti BigQuery
  • Menetapkan jadwal rotasi otomatis pada kunci Cloud CocoaPods Anda

Pelajari lebih lanjut

Lisensi

Karya ini dilisensikan berdasarkan Lisensi Umum Creative Commons Attribution 2.0.