Mengotomatiskan klasifikasi data yang diupload ke Cloud Storage


Tutorial ini menunjukkan cara mengimplementasikan karantina data otomatis dan sistem klasifikasi menggunakan Cloud Storage dan produk Google Cloud lainnya. Tutorial ini mengasumsikan bahwa Anda sudah memahami Google Cloud dan pemrograman shell dasar.

Di setiap organisasi, petugas perlindungan data seperti Anda menghadapi jumlah data yang terus meningkat, yaitu data yang harus dilindungi dan diperlakukan dengan tepat. Mengarantina dan mengklasifikasikan data tersebut dapat menjadi rumit dan memakan waktu, terutama jika ada ratusan atau ribuan file dalam sehari.

Bagaimana jika Anda dapat mengambil setiap file, menguploadnya ke lokasi karantina, dan membuatnya diklasifikasikan secara otomatis serta dipindahkan ke lokasi yang sesuai berdasarkan hasil klasifikasi? Tutorial ini menunjukkan cara menerapkan sistem tersebut dengan menggunakan fungsi Cloud Run, Cloud Storage, dan Cloud Data Loss Prevention.

Tujuan

  • Buat bucket Cloud Storage untuk digunakan sebagai bagian dari pipeline karantina dan klasifikasi.
  • Buat topik dan langganan Pub/Sub untuk memberi tahu Anda saat pemrosesan file selesai.
  • Buat Cloud Function sederhana yang memanggil DLP API saat file diupload.
  • Upload beberapa file contoh ke bucket karantina untuk memanggil Cloud Function. Fungsi ini menggunakan DLP API untuk memeriksa dan mengklasifikasikan file, lalu memindahkannya ke bucket yang sesuai.

Biaya

Tutorial ini menggunakan komponen Google Cloud yang dapat ditagih, termasuk:

  • Cloud Storage
  • Fungsi Cloud Run
  • Cloud Data Loss Prevention

Anda dapat menggunakan Kalkulator Harga untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan.

Sebelum memulai

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Aktifkan API Cloud Run functions, Cloud Storage,Cloud Build Cloud Build, and Cloud Data Loss Prevention.

    Mengaktifkan API

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

    Buka pemilih project

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Aktifkan API Cloud Run functions, Cloud Storage,Cloud Build Cloud Build, and Cloud Data Loss Prevention.

    Mengaktifkan API

Memberikan izin ke akun layanan

Langkah pertama Anda adalah memberikan izin ke dua akun layanan: akun layanan fungsi Cloud Run 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]@. Ganti [PROJECT_ID] dengan project ID Anda.

  3. Pilih ikon edit di samping akun layanan.

  4. Tambahkan peran berikut:

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

Memberikan izin ke akun layanan Sensitive Data Protection

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, lalu pilih project yang Anda buat:

    Buka IAM

  3. Centang kotak include Google-provided role grants

  4. Temukan akun layanan Cloud DLP Service Agent. Akun ini memiliki format service-[PROJECT_NUMBER]@dlp-api.. Ganti [PROJECT_NUMBER] dengan nomor project Anda.

  5. Pilih ikon edit di samping akun layanan.

  6. Tambahkan peran Project > Viewer, lalu klik Save.

Membuat pipeline karantina dan klasifikasi

Di bagian ini, Anda akan membuat pipeline karantina dan klasifikasi yang ditunjukkan dalam diagram berikut.

Alur kerja karantina dan klasifikasi

Angka dalam pipeline ini sesuai dengan langkah-langkah berikut:

  1. Anda mengupload file ke Cloud Storage.
  2. Anda memanggil Cloud Function.
  3. Cloud DLP akan 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 seluruh tutorial ini:

  • Bucket 1: Ganti [YOUR_QUARANTINE_BUCKET] dengan nama unik.
  • Bucket 2: Ganti [YOUR_SENSITIVE_DATA_BUCKET] dengan nama unik.
  • Bucket 3: Ganti [YOUR_NON_SENSITIVE_DATA_BUCKET] dengan nama 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:

    gcloud storage buckets create gs://[YOUR_QUARANTINE_BUCKET]
    gcloud storage buckets create gs://[YOUR_SENSITIVE_DATA_BUCKET]
    gcloud storage buckets create 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 fungsi Cloud Run

Bagian ini menjelaskan langkah-langkah untuk men-deploy skrip Python yang berisi dua fungsi Cloud Run berikut:

  • Fungsi yang dipanggil saat 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 dalam 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 Anda bekerja di 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 Ringkasan fungsi Cloud Run:

    Buka fungsi Cloud Run

  2. Pilih project tempat Anda mengaktifkan fungsi Cloud Run.

  3. Klik Create function.

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

  5. Di kolom Pemicu, pilih Cloud Storage.

  6. Di kolom Jenis peristiwa, pilih Finalize/Create.

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

  8. Klik Simpan

  9. Klik Berikutnya.

  10. Di bagian Runtime, pilih Python 3.7.

  11. Di bagian Source code, centang Inline editor.

  12. Ganti teks di kotak main.py dengan konten 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]: project ID yang menghosting fungsi Cloud Run dan topik 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 Titik entri, 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 berhasil.

    deployment yang berhasil

gcloud

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

    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 penggantian berikut di file main.py

    • [PROJECT_ID_DLP_JOB & TOPIC]: project ID yang menghosting fungsi Cloud Run dan topik 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, ganti [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 bahwa fungsi telah berhasil di-deploy:

    gcloud functions describe create_DLP_job

    Deployment yang berhasil ditunjukkan dengan status siap yang mirip dengan berikut:

    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 Ringkasan fungsi Cloud Run:

    BUKA HALAMAN RINGKASAN fungsi Cloud Run

  2. Pilih project tempat Anda mengaktifkan fungsi Cloud Run.

  3. Klik Create function.

  4. Di kotak Function Name, ganti nama default dengan resolve_DLP.

  5. Di kolom Trigger, pilih Pub/Sub.

  6. Di kolom Select a Cloud Pub/Sub Topic, telusuri 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 Titik entri, ganti teks default dengan resolve_DLP.

  12. Ganti teks di 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]: project ID yang menghosting fungsi Cloud Run dan topik 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 berhasil.

    deployment yang berhasil

gcloud

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

    BUKA DI Cloud Shell

  2. Ubah direktori ke folder dengan kode Python:

    cd gcs-dlp-classification-python/

  3. Lakukan penggantian berikut di file main.py:

    • [PROJECT_ID_DLP_JOB & TOPIC]: project ID yang menghosting fungsi Cloud Run dan topik 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, ganti [PUB/SUB_TOPIC] dengan topik Pub/Sub Anda:

    gcloud functions deploy resolve_DLP --runtime python37 --trigger-topic [PUB/SUB_TOPIC]
  5. Validasi bahwa fungsi telah berhasil di-deploy:

    gcloud functions describe resolve_DLP

    Deployment yang berhasil ditunjukkan dengan status siap yang mirip dengan berikut:

    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 nonsensitif. 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 sampel 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 contoh:

    cd ~/dlp-cloud-functions-tutorials/sample_data/
  3. Salin file data sampel ke bucket karantina menggunakan perintah cp, dengan mengganti [YOUR_QUARANTINE_BUCKET] dengan nama bucket karantina Anda:

    gcloud storage 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 BROWSER Cloud Storage

  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