Mengotomatiskan klasifikasi data yang diupload ke Cloud Storage


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

  1. 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.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Enable the Cloud Functions, Cloud Storage,Cloud Build Cloud Build, and Cloud Data Loss Prevention APIs.

    Enable the APIs

  5. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  6. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  7. Enable the Cloud Functions, Cloud Storage,Cloud Build Cloud Build, and Cloud Data Loss Prevention APIs.

    Enable the APIs

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

  1. Di Konsol Google Cloud, buka halaman IAM & Admin, lalu pilih project yang Anda buat:

    Buka IAM

  2. Temukan akun layanan App Engine. Akun ini memiliki format [PROJECT_ID]@appspot.gserviceaccount.com. Ganti [PROJECT_ID] dengan project ID Anda.

  3. Pilih ikon edit di samping akun layanan.

  4. Tambahkan peran berikut:

    • Cloud DLP > Administrator DLP
    • Agen Layanan DLP API (Anda harus memfilter peran ini untuk menemukannya)
  5. Klik Simpan.

Memberikan izin ke akun layanan Perlindungan Data Sensitif

Agen Layanan Cloud DLP dibuat saat pertama kali diperlukan.

  1. 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"}}'
    --compressed

    Ganti PROJECT_ID dengan project ID Anda.

  2. Di Konsol Google Cloud, buka halaman IAM & Admin dan pilih project yang Anda buat:

    Buka IAM

  3. Centang kotak sertakan pemberian peran yang disediakan Google

  4. 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.

  5. Pilih ikon edit di samping akun layanan.

  6. 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.

Alur kerja karantina dan klasifikasi

Angka di pipeline ini sesuai dengan langkah-langkah berikut:

  1. Anda mengupload file ke Cloud Storage.
  2. Anda memanggil Cloud Function.
  3. Cloud DLP memeriksa dan mengklasifikasikan data.
  4. 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

  1. Di Konsol Google Cloud, buka browser Cloud Storage:

    Buka Cloud Storage

  2. Klik Create bucket.

  3. Di kotak teks Bucket name, masukkan nama yang Anda pilih untuk [YOUR_QUARANTINE_BUCKET], lalu klik Create.

  4. Ulangi untuk bucket [YOUR_SENSITIVE_DATA_BUCKET] dan [YOUR_NON_SENSITIVE_DATA_BUCKET].

gcloud

  1. Buka Cloud Shell:

    Buka Cloud Shell

  2. 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

  1. Buka halaman Pub/Sub Topics:

    Buka topik Pub/Sub

  2. Klik Create topic.

  3. Di kotak teks, masukkan nama topik.

  4. Centang kotak Tambahkan langganan default.

  5. Klik Buat Topik.

gcloud

  1. Buka Cloud Shell:

    Buka Cloud Shell

  2. Buat topik, dengan mengganti [PUB/SUB_TOPIC] dengan nama pilihan Anda:

    gcloud pubsub topics create [PUB/SUB_TOPIC]
  3. 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

  1. Buka halaman Cloud Functions Overview:

    Buka Cloud Functions

  2. Pilih project tempat Anda mengaktifkan Cloud Functions.

  3. Klik Create function.

  4. Di kotak Nama fungsi, ganti nama default dengan create_DLP_job.

  5. Pada kolom Pemicu, pilih Cloud Storage.

  6. Di kolom Jenis peristiwa, pilih Selesaikan/Buat.

  7. Di kolom Bucket, klik browse, pilih bucket karantina dengan menandai bucket di menu drop-down, lalu klik Select.

  8. Klik Save

  9. Klik Berikutnya.

  10. Di bagian Runtime, pilih Python 3.7.

  11. Di bagian Source code, centang Inline editor.

  12. 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.
  13. Di kotak teks Entry point, ganti teks default dengan teks berikut: create_DLP_job.

  14. 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.

  15. Klik Deploy.

    Tanda centang hijau di samping fungsi menunjukkan deployment yang berhasil.

    deployment berhasil

gcloud

  1. Buka sesi Cloud Shell dan clone repositori GitHub yang berisi kode dan beberapa file data sampel:

    BUKA DI Cloud Shell

  2. Ubah direktori ke folder tempat repositori telah di-clone:

    cd ~dlp-cloud-functions-tutorials/gcs-dlp-classification-python/
  3. 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.
  4. 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
    
  5. 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

  1. Buka halaman Cloud Functions Overview:

    BUKA HALAMAN RINGKASAN Cloud Functions

  2. Pilih project tempat Anda mengaktifkan Cloud Functions.

  3. Klik Create function.

  4. Di kotak Nama Fungsi, ganti nama default dengan resolve_DLP.

  5. Pada kolom Pemicu, pilih Pub/Sub.

  6. Di kolom Select a Cloud Pub/Sub Topic, cari topik Pub/Sub yang Anda buat sebelumnya.

  7. Klik Simpan.

  8. Klik Berikutnya

  9. Di bagian Runtime, pilih Python 3.7.

  10. Pada Source code, pilih Inline editor.

  11. Di kotak teks Entry point, ganti teks default dengan resolve_DLP.

  12. 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.
  13. Klik Deploy.

    Tanda centang hijau di samping fungsi menunjukkan deployment yang berhasil.

    deployment berhasil

gcloud

  1. Buka (atau buka kembali) sesi Cloud Shell dan clone repositori GitHub yang berisi kode dan beberapa file data sampel:

    BUKA DI Cloud Shell

  2. Ubah direktori ke folder yang berisi kode Python:

    cd gcs-dlp-classification-python/

  3. 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.
  4. Deploy fungsi, dengan mengganti [PUB/SUB_TOPIC] dengan topik Pub/Sub Anda:

    gcloud functions deploy resolve_DLP --runtime python37 --trigger-topic [PUB/SUB_TOPIC]
  5. 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'.

  1. Jika Anda belum meng-clone repositori, buka Cloud Shell dan clone repositori GitHub yang berisi kode dan beberapa file data contoh:

    BUKA DI Cloud Shell

  2. Ubah folder ke file data sampel:

    cd ~/dlp-cloud-functions-tutorials/sample_data/
  3. 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.

  4. Di konsol Cloud Storage, buka halaman Storage Browser:

    BUKA Cloud Storage BROWSER

  5. 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

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Langkah selanjutnya