Tutorial ini menunjukkan cara menerapkan sistem karantina data dan klasifikasi otomatis menggunakan Cloud Storage dan produk Google Cloud lainnya. Tutorial ini mengasumsikan bahwa Anda telah memahami Google Cloud dan pemrograman shell dasar.
Di setiap organisasi, petugas perlindungan data seperti Anda menghadapi terus meningkatnya jumlah data, yang harus dilindungi dan ditangani dengan tepat. Mengarantina dan mengklasifikasikan data tersebut bisa menjadi proses yang rumit dan memakan waktu, terutama karena memiliki ratusan atau ribuan file setiap harinya.
Bagaimana jika Anda dapat mengambil setiap file, menguploadnya ke lokasi karantina, dan membuat file tersebut diklasifikasikan dan dipindahkan secara otomatis ke lokasi yang sesuai berdasarkan hasil klasifikasi? Tutorial ini menunjukkan cara menerapkan sistem tersebut menggunakan Cloud Functions, Cloud Storage, dan Pencegahan Kebocoran Data Cloud.
Tujuan
- Membuat bucket Cloud Storage untuk digunakan sebagai bagian dari pipeline karantina dan klasifikasi.
- Buat topik Pub/Sub dan langganan untuk memberi tahu Anda saat pemrosesan file selesai.
- Membuat Cloud Function sederhana yang memanggil DLP API saat file diupload.
- Upload beberapa file sampel ke bucket karantina untuk memanggil Cloud Function. Fungsi ini menggunakan DLP API untuk menginspeksi dan mengklasifikasikan file serta memindahkannya ke bucket yang sesuai.
Biaya
Tutorial ini menggunakan komponen Google Cloud yang dapat ditagih, termasuk:
- Cloud Storage
- Cloud Functions
- Cloud Data Loss Prevention
Anda dapat menggunakan Kalkulator Harga untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Cloud Functions, Cloud Storage,Cloud Build Cloud Build, and Cloud Data Loss Prevention.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Cloud Functions, Cloud Storage,Cloud Build Cloud Build, and Cloud Data Loss Prevention.
Memberikan izin ke akun layanan
Langkah pertama Anda adalah memberikan izin ke dua akun layanan: akun layanan Cloud Functions dan akun layanan Cloud DLP.
Memberikan izin ke akun layanan default App Engine
Di Konsol Google Cloud, buka halaman IAM & Admin, lalu pilih project yang Anda buat:
Temukan akun layanan App Engine. Akun ini memiliki format
[PROJECT_ID]@appspot.gserviceaccount.com
. Ganti[PROJECT_ID]
dengan project ID Anda.Pilih ikon edit edit di samping akun layanan.
Tambahkan peran berikut:
- Cloud DLP > Administrator DLP
- Agen Layanan DLP API (Anda harus memfilter peran ini untuk menemukannya)
Klik Simpan.
Memberikan izin ke akun layanan Perlindungan Data Sensitif
Agen Layanan Cloud DLP dibuat saat pertama kali diperlukan.
Di Cloud Shell, buat Agen Layanan Cloud DLP dengan melakukan panggilan ke
InspectContent
:curl --request POST
"https://dlp.googleapis.com/v2/projects/PROJECT_ID/locations/us-central1/content:inspect"
--header "X-Goog-User-Project: PROJECT_ID"
--header "Authorization: Bearer $(gcloud auth print-access-token)"
--header 'Accept: application/json'
--header 'Content-Type: application/json'
--data '{"item":{"value":"google@google.com"}}'
--compressedGanti
PROJECT_ID
dengan project ID Anda.Di Konsol Google Cloud, buka halaman IAM & Admin dan pilih project yang Anda buat:
Centang kotak sertakan pemberian peran yang disediakan Google
Temukan akun layanan Agen Layanan Cloud DLP. Akun ini memiliki format
service-[PROJECT_NUMBER]@dlp-api.iam.gserviceaccount.com
. Ganti[PROJECT_NUMBER]
dengan nomor project Anda.Pilih ikon edit edit di samping akun layanan.
Tambahkan peran Project > Pelihat, lalu klik Simpan.
Membangun pipeline karantina dan klasifikasi
Di bagian ini, Anda akan membuat pipeline karantina dan klasifikasi yang ditampilkan dalam diagram berikut.
Angka di pipeline ini sesuai dengan langkah-langkah berikut:
- Anda mengupload file ke Cloud Storage.
- Anda memanggil Cloud Function.
- Cloud DLP memeriksa dan mengklasifikasikan data.
- File akan dipindahkan ke bucket yang sesuai.
Membuat bucket Cloud Storage
Dengan mengikuti panduan yang diuraikan dalam panduan penamaan bucket, buat tiga bucket dengan nama unik yang akan Anda gunakan di sepanjang tutorial ini:
- Keranjang 1: Ganti
[YOUR_QUARANTINE_BUCKET]
dengan nama yang unik. - Bucket 2: Ganti
[YOUR_SENSITIVE_DATA_BUCKET]
dengan nama yang unik. - Keranjang 3: Ganti
[YOUR_NON_SENSITIVE_DATA_BUCKET]
dengan nama yang unik.
console
Di Konsol Google Cloud, buka browser Cloud Storage:
Klik Create bucket.
Di kotak teks Bucket name, masukkan nama yang Anda pilih untuk
[YOUR_QUARANTINE_BUCKET]
, lalu klik Create.Ulangi untuk bucket
[YOUR_SENSITIVE_DATA_BUCKET]
dan[YOUR_NON_SENSITIVE_DATA_BUCKET]
.
gcloud
Buka Cloud Shell:
Buat tiga bucket menggunakan perintah berikut:
gsutil mb gs://[YOUR_QUARANTINE_BUCKET] gsutil mb gs://[YOUR_SENSITIVE_DATA_BUCKET] gsutil mb gs://[YOUR_NON_SENSITIVE_DATA_BUCKET]
Membuat topik dan langganan Pub/Sub
console
Buka halaman Pub/Sub Topics:
Klik Create topic.
Di kotak teks, masukkan nama topik.
Centang kotak Tambahkan langganan default.
Klik Buat Topik.
gcloud
Buka Cloud Shell:
Buat topik, dengan mengganti
[PUB/SUB_TOPIC]
dengan nama pilihan Anda:gcloud pubsub topics create [PUB/SUB_TOPIC]
Buat langganan, ganti
[PUB/SUB_SUBSCRIPTION]
dengan nama pilihan Anda:gcloud pubsub subscriptions create [PUB/SUB_SUBSCRIPTION] --topic [PUB/SUB_TOPIC]
Membuat Cloud Functions
Bagian ini membahas cara men-deploy skrip Python yang berisi dua Cloud Functions berikut:
- Fungsi yang dipanggil saat sebuah objek diupload ke Cloud Storage.
- Fungsi yang dipanggil saat pesan diterima di antrean Pub/Sub.
Skrip Python yang Anda gunakan untuk menyelesaikan tutorial ini terdapat di repositori GitHub Untuk membuat Cloud Function pertama, Anda harus mengaktifkan API yang benar.
Untuk mengaktifkan API, lakukan hal berikut:
- Jika Anda bekerja di konsol, saat mengklik Create function, Anda akan melihat panduan tentang cara mengaktifkan API yang diperlukan untuk menggunakan Cloud Functions.
- Jika menggunakan gcloud CLI, Anda harus mengaktifkan API berikut secara manual:
- Artifact Registry API
- API Eventarc
- Cloud Run Admin API
Membuat fungsi pertama
console
Buka halaman Cloud Functions Overview:
Pilih project tempat Anda mengaktifkan Cloud Functions.
Klik Create function.
Di kotak Nama fungsi, ganti nama default dengan
create_DLP_job
.Pada kolom Pemicu, pilih Cloud Storage.
Di kolom Jenis peristiwa, pilih Selesaikan/Buat.
Di kolom Bucket, klik browse, pilih bucket karantina dengan menandai bucket di menu drop-down, lalu klik Select.
Klik Save
Klik Berikutnya.
Di bagian Runtime, pilih Python 3.7.
Di bagian Source code, centang Inline editor.
Ganti teks dalam kotak main.py dengan isi file
https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/main.py
berikut.Ganti kode berikut:
[PROJECT_ID_DLP_JOB & TOPIC]
: ID project yang menghosting topik Cloud Function dan Pub/Sub Anda.[YOUR_QUARANTINE_BUCKET]
nama bucket tempat Anda akan mengupload file yang akan diproses .[YOUR_SENSITIVE_DATA_BUCKET]
: nama bucket tempat Anda akan memindahkan file sensitif.[YOUR_NON_SENSITIVE_DATA_BUCKET]
: nama bucket tempat Anda akan mengupload file yang akan diproses.[PUB/SUB_TOPIC]
: nama topik Pub/Sub yang Anda buat sebelumnya.
Di kotak teks Entry point, ganti teks default dengan teks berikut:
create_DLP_job
.Ganti teks di kotak teks requirements.txt dengan konten file berikut:
https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/requirements.txt.
Klik Deploy.
Tanda centang hijau di samping fungsi menunjukkan deployment yang berhasil.
gcloud
Buka sesi Cloud Shell dan clone repositori GitHub yang berisi kode dan beberapa file data sampel:
Ubah direktori ke folder tempat repositori telah di-clone:
cd ~dlp-cloud-functions-tutorials/gcs-dlp-classification-python/
Lakukan pengganti berikut di file main.py
[PROJECT_ID_DLP_JOB & TOPIC]
: ID project yang menghosting topik Cloud Function dan Pub/Sub Anda.[YOUR_QUARANTINE_BUCKET]
: nama bucket tempat Anda akan mengupload file yang akan diproses .[YOUR_SENSITIVE_DATA_BUCKET]
: nama bucket tempat Anda akan memindahkan file sensitif.[YOUR_NON_SENSITIVE_DATA_BUCKET]
: nama bucket tempat Anda akan mengupload file yang akan diproses.[PUB/SUB_TOPIC
: nama topik Pub/Sub yang Anda buat sebelumnya.
Deploy fungsi, dengan mengganti
[YOUR_QUARANTINE_BUCKET]
dengan nama bucket Anda:gcloud functions deploy create_DLP_job --runtime python37 \ --trigger-resource [YOUR_QUARANTINE_BUCKET] \ --trigger-event google.storage.object.finalize
Validasi apakah fungsi telah berhasil di-deploy:
gcloud functions describe create_DLP_job
Deployment yang berhasil ditunjukkan dengan status siap yang mirip dengan yang berikut ini:
status: READY timeout: 60s
Setelah Cloud Function berhasil di-deploy, lanjutkan ke bagian berikutnya untuk membuat Cloud Function kedua.
Membuat fungsi kedua
console
Buka halaman Cloud Functions Overview:
Pilih project tempat Anda mengaktifkan Cloud Functions.
Klik Create function.
Di kotak Nama Fungsi, ganti nama default dengan
resolve_DLP
.Pada kolom Pemicu, pilih Pub/Sub.
Di kolom Select a Cloud Pub/Sub Topic, cari topik Pub/Sub yang Anda buat sebelumnya.
Klik Simpan.
Klik Berikutnya
Di bagian Runtime, pilih Python 3.7.
Pada Source code, pilih Inline editor.
Di kotak teks Entry point, ganti teks default dengan
resolve_DLP
.Ganti teks dalam kotak main.py dengan konten file berikut: https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/main.py. Lakukan penggantian berikut
[PROJECT_ID_DLP_JOB & TOPIC]
: ID project yang menghosting topik Cloud Function dan Pub/Sub Anda.[YOUR_QUARANTINE_BUCKET]
: nama bucket tempat Anda akan mengupload file yang akan diproses .[YOUR_SENSITIVE_DATA_BUCKET]
: nama bucket tempat Anda akan memindahkan file sensitif.[YOUR_NON_SENSITIVE_DATA_BUCKET]
: nama bucket tempat Anda akan mengupload file yang akan diproses.[PUB/SUB_TOPIC
: nama topik Pub/Sub yang Anda buat sebelumnya.
Klik Deploy.
Tanda centang hijau di samping fungsi menunjukkan deployment yang berhasil.
gcloud
Buka (atau buka kembali) sesi Cloud Shell dan clone repositori GitHub yang berisi kode dan beberapa file data sampel:
Ubah direktori ke folder yang berisi kode Python:
cd gcs-dlp-classification-python/
Lakukan pengganti berikut di file
main.py
:[PROJECT_ID_DLP_JOB & TOPIC]
: ID project yang menghosting topik Cloud Function dan Pub/Sub Anda.[YOUR_QUARANTINE_BUCKET]
: nama bucket tempat Anda akan mengupload file yang akan diproses.[YOUR_SENSITIVE_DATA_BUCKET]
: nama bucket tempat Anda akan memindahkan file sensitif.[YOUR_NON_SENSITIVE_DATA_BUCKET]
: nama bucket tempat Anda akan mengupload file yang akan diproses.[PUB/SUB_TOPIC
: nama topik Pub/Sub yang Anda buat sebelumnya.
Deploy fungsi, dengan mengganti
[PUB/SUB_TOPIC]
dengan topik Pub/Sub Anda:gcloud functions deploy resolve_DLP --runtime python37 --trigger-topic [PUB/SUB_TOPIC]
Validasi apakah fungsi telah berhasil di-deploy:
gcloud functions describe resolve_DLP
Deployment yang berhasil ditunjukkan dengan status siap yang mirip dengan yang berikut ini:
status: READY timeout: 60s
Setelah Cloud Function berhasil di-deploy, lanjutkan ke bagian berikutnya.
Mengupload file sampel ke bucket karantina
Repositori GitHub yang terkait dengan artikel ini menyertakan file data contoh. Folder
ini berisi beberapa file yang memiliki data sensitif dan file lain yang memiliki
data tidak sensitif. Data sensitif diklasifikasikan sebagai berisi satu atau beberapa nilai
INFO_TYPES
berikut:
US_SOCIAL_SECURITY_NUMBER EMAIL_ADDRESS PERSON_NAME LOCATION PHONE_NUMBER
Jenis data yang digunakan untuk mengklasifikasikan file contoh ditentukan dalam
konstanta INFO_TYPES
dalam file main.py
, yang awalnya ditetapkan ke
'FIRST_NAME,PHONE_NUMBER,EMAIL_ADDRESS,US_SOCIAL_SECURITY_NUMBER'
.
Jika Anda belum meng-clone repositori, buka Cloud Shell dan clone repositori GitHub yang berisi kode dan beberapa file data contoh:
Ubah folder ke file data sampel:
cd ~/dlp-cloud-functions-tutorials/sample_data/
Salin file data sampel ke bucket karantina menggunakan perintah
gsutil
, dan ganti[YOUR_QUARANTINE_BUCKET]
dengan nama bucket karantina Anda:gsutil -m cp * gs://[YOUR_QUARANTINE_BUCKET]/
Cloud DLP memeriksa dan mengklasifikasikan setiap file yang diupload ke bucket karantina dan memindahkannya ke bucket target yang sesuai berdasarkan klasifikasinya.
Di konsol Cloud Storage, buka halaman Storage Browser:
Pilih salah satu bucket target yang Anda buat sebelumnya dan tinjau file yang diupload. Tinjau juga bucket lain yang Anda buat.
Pembersihan
Setelah menyelesaikan tutorial, Anda dapat membersihkan resource yang dibuat agar resource tersebut berhenti menggunakan kuota dan dikenai biaya. Bagian berikut menjelaskan cara menghapus atau menonaktifkan resource ini.
Menghapus project
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Langkah selanjutnya
- Coba tetapkan
nilai jenis data valid yang berbeda
untuk
INFO_TYPES
. - Pelajari lebih lanjut cara memeriksa penyimpanan dan database untuk data sensitif menggunakan Cloud DLP.
- Pelajari Cloud Functions lebih lanjut.
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.