Men-deploy pemindaian malware otomatis untuk file yang diupload ke Cloud Storage

Last reviewed 2023-06-20 UTC

Dokumen ini menjelaskan cara Anda men-deploy arsitektur dalam Mengotomatiskan pemindaian malware untuk file yang diupload ke Cloud Storage.

Panduan deployment ini mengasumsikan bahwa Anda sudah memahami fungsi dasar teknologi berikut:

Arsitektur

Diagram berikut menunjukkan arsitektur deployment yang Anda buat di dokumen ini:

Arsitektur pipeline pemindaian malware.

Diagram ini menunjukkan dua pipeline berikut yang dikelola oleh arsitektur ini:

  • Pipeline pemindaian file, yang memeriksa apakah file yang diupload berisi malware.
  • Pipeline update duplikat database malware ClamAV, yang mempertahankan duplikat terbaru database malware yang digunakan ClamAV.

Untuk informasi selengkapnya tentang arsitektur, lihat Mengotomatiskan pemindaian malware untuk file yang diupload ke Cloud Storage.

Tujuan

  • Membangun duplikat database definisi malware ClamAV di bucket Cloud Storage.

  • Bangun layanan Cloud Run dengan fungsi berikut:

    • Memindai file di bucket Cloud Storage untuk mendeteksi malware menggunakan ClamAV dan memindahkan file yang dipindai ke bucket yang bersih atau dikarantina berdasarkan hasil pemindaian.
    • Mempertahankan duplikat database definisi malware ClamAV di Cloud Storage.
  • Membuat pemicu Eventarc untuk memicu layanan pemindaian malware saat file diupload ke Cloud Storage.

  • Membuat tugas Cloud Scheduler untuk memicu layanan pemindaian malware guna memperbarui duplikat database definisi malware di Cloud Storage.

Biaya

Arsitektur ini menggunakan komponen Google Cloud yang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan, gunakan kalkulator harga.

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. Aktifkan API Artifact Registry, Cloud Run, Eventarc, Logging, Cloud Scheduler, Pub/Sub, and Cloud Build.

    Mengaktifkan API

  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. Aktifkan API Artifact Registry, Cloud Run, Eventarc, Logging, Cloud Scheduler, Pub/Sub, and Cloud Build.

    Mengaktifkan API

  8. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  9. Dalam deployment ini, Anda menjalankan semua perintah dari Cloud Shell.

Menyiapkan lingkungan Anda

Di bagian ini, Anda akan menetapkan setelan untuk nilai yang digunakan selama deployment, seperti region dan zona. Dalam deployment ini, Anda menggunakan us-central1 sebagai region untuk layanan Cloud Run dan us sebagai lokasi untuk pemicu Eventarc dan bucket Cloud Storage.

  1. Di Cloud Shell, tetapkan variabel shell umum termasuk region dan lokasi:

    REGION=us-central1
    LOCATION=us
    PROJECT_ID=PROJECT_ID
    SERVICE_NAME="malware-scanner"
    SERVICE_ACCOUNT="${SERVICE_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"
    

    Ganti PROJECT_ID dengan project ID Anda.

  2. Lakukan inisialisasi lingkungan gcloud dengan ID project Anda:

    gcloud config set project "${PROJECT_ID}"
    
  3. Buat tiga bucket Cloud Storage dengan nama unik:

    gsutil mb -l "${LOCATION}" "gs://unscanned-${PROJECT_ID}"
    gsutil mb -l "${LOCATION}" "gs://quarantined-${PROJECT_ID}"
    gsutil mb -l "${LOCATION}" "gs://clean-${PROJECT_ID}"
    

    ${PROJECT_ID} digunakan untuk memastikan bahwa nama bucket unik.

    Ketiga bucket ini menyimpan file yang diupload di berbagai tahap selama pipeline pemindaian file:

    • unscanned-PROJECT_ID: Menyimpan file sebelum dipindai. Pengguna Anda mengupload file mereka ke bucket ini.

    • quarantined-PROJECT_ID: Menyimpan file yang telah dipindai dan dianggap berisi malware oleh layanan pemindai malware.

    • clean-PROJECT_ID: Menyimpan file yang telah dipindai oleh layanan pemindai malware dan ternyata tidak terinfeksi.

  4. Buat bucket Cloud Storage keempat:

    gsutil mb -l "${LOCATION}" "gs://cvd-mirror-${PROJECT_ID}"
    

    ${PROJECT_ID} digunakan untuk memastikan bahwa nama bucket unik.

    Bucket ini cvd-mirror-PROJECT_ID digunakan untuk mempertahankan duplikat lokal database definisi malware, yang mencegah pembatasan kapasitas dipicu oleh CDN ClamAV.

Menyiapkan akun layanan untuk layanan pemindai malware

Di bagian ini, Anda akan membuat akun layanan yang akan digunakan untuk layanan pemindai malware. Anda kemudian memberikan peran yang sesuai untuk akun layanan sehingga akun tersebut memiliki izin untuk membaca dan menulis ke bucket Cloud Storage. Peran ini memastikan bahwa akun memiliki izin minimal dan hanya memiliki akses ke resource yang diperlukan.

  1. Buat akun layanan malware-scanner:

    gcloud iam service-accounts create ${SERVICE_NAME}
    
  2. Berikan peran Object Admin ke bucket. Peran ini memungkinkan layanan membaca dan menghapus file dari bucket yang tidak dipindai, serta menulis file ke bucket yang dikarantina dan bersih.

    gsutil iam ch \
        "serviceAccount:${SERVICE_ACCOUNT}:objectAdmin" \
        "gs://unscanned-${PROJECT_ID}"
    gsutil iam ch \
        "serviceAccount:${SERVICE_ACCOUNT}:objectAdmin" \
        "gs://clean-${PROJECT_ID}"
    gsutil iam ch \
        "serviceAccount:${SERVICE_ACCOUNT}:objectAdmin" \
        "gs://quarantined-${PROJECT_ID}"
    gsutil iam ch \
        "serviceAccount:${SERVICE_ACCOUNT}:objectAdmin" \
        "gs://cvd-mirror-${PROJECT_ID}"
    
  3. Berikan peran Metric Writer, yang memungkinkan layanan menulis metrik ke Monitoring:

    gcloud projects add-iam-policy-binding \
          "${PROJECT_ID}" \
          --member="serviceAccount:${SERVICE_ACCOUNT}" \
          --role=roles/monitoring.metricWriter
    

Membuat layanan pemindai malware di Cloud Run

Di bagian ini, Anda akan men-deploy layanan pemindai malware ke Cloud Run. Layanan ini berjalan di container Docker yang berisi hal-hal berikut:

  • Dockerfile untuk membangun image container dengan layanan, runtime Node.js, Google Cloud SDK, dan biner ClamAV.
  • File Node.js untuk layanan Cloud Run pemindai malware.
  • File konfigurasi config.json untuk menentukan nama bucket Cloud Storage Anda.
  • Skrip shell updateCvdMirror.sh untuk memperbarui duplikat database definisi malware ClamAV di Cloud Storage.
  • Layanan cloud-run-proxy untuk membuat proxy permintaan HTTP freshclam, yang menyediakan akses yang diautentikasi ke Cloud Storage API.
  • Skrip shell bootstrap.sh untuk menjalankan layanan yang diperlukan saat instance dimulai.

Untuk men-deploy layanan, lakukan hal berikut:

  1. Di Cloud Shell, buat clone repositori GitHub yang berisi file kode:

    git clone https://github.com/GoogleCloudPlatform/docker-clamav-malware-scanner.git
    
  2. Ubah ke direktori cloudrun-malware-scanner:

    cd docker-clamav-malware-scanner/cloudrun-malware-scanner
    
  3. Edit file konfigurasi config.json untuk menentukan bucket Cloud Storage yang Anda buat. Karena nama bucket didasarkan pada project ID, Anda dapat menggunakan operasi telusuri dan ganti:

    sed "s/-bucket-name/-${PROJECT_ID}/" config.json.tmpl > config.json
    

    Anda dapat melihat file konfigurasi yang diperbarui:

    cat config.json
    
  4. Jalankan populasi awal duplikat database malware ClamAV di Cloud Storage:

    python3 -m venv pyenv
    . pyenv/bin/activate
    pip3 install crcmod cvdupdate
    ./updateCvdMirror.sh "cvd-mirror-${PROJECT_ID}"
    deactivate
    

    Perintah ini menjalankan penginstalan lokal alat CVDUpdate dan menggunakannya untuk mendownload database malware. Perintah tersebut kemudian mengupload database ke bucket cvd-mirror-PROJECT_ID yang Anda buat sebelumnya.

    Anda dapat memeriksa isi bucket mirror:

    gsutil ls "gs://cvd-mirror-${PROJECT_ID}/cvds"
    

    Bucket harus berisi beberapa file CVD yang berisi database malware lengkap, beberapa file .cdiff yang berisi update diferensial harian, dan dua file .json dengan informasi konfigurasi dan status.

  5. Buat dan deploy layanan Cloud Run menggunakan akun layanan yang Anda buat sebelumnya:

    gcloud beta run deploy "${SERVICE_NAME}" \
      --source . \
      --region "${REGION}" \
      --no-allow-unauthenticated \
      --memory 4Gi \
      --cpu 1 \
      --concurrency 20 \
      --min-instances 1 \
      --max-instances 5 \
      --no-cpu-throttling \
      --cpu-boost \
      --service-account="${SERVICE_ACCOUNT}"
    

    Perintah ini membuat instance cloud run yang memiliki 1 vCPU dan menggunakan RAM 4 GiB. Ukuran ini dapat diterima untuk deployment ini. Namun, dalam lingkungan produksi, Anda mungkin ingin memilih ukuran CPU dan memori yang lebih besar untuk instance, dan parameter --max-instances yang lebih besar. Ukuran resource yang mungkin Anda perlukan bergantung pada jumlah traffic yang perlu ditangani oleh layanan.

    Perintah tersebut menyertakan spesifikasi berikut:

    • Parameter --concurrency menentukan jumlah permintaan simultan yang dapat diproses oleh setiap instance.
    • Parameter --no-cpu-throttling memungkinkan instance melakukan operasi di latar belakang, seperti memperbarui definisi malware.
    • Parameter --cpu-boost menggandakan jumlah vCPU pada startup instans untuk mengurangi latensi startup.
    • Parameter --min-instances 1 mempertahankan setidaknya satu instance yang aktif, karena waktu startup untuk setiap instance relatif tinggi.
    • Parameter --max-instances 5 mencegah peningkatan skala layanan yang terlalu tinggi.
  6. Saat diminta, masukkan Y untuk membangun dan men-deploy layanan. Build dan deployment memerlukan waktu sekitar 10 menit. Jika sudah selesai, pesan berikut akan ditampilkan:

    Service [malware-scanner] revision [malware-scanner-UNIQUE_ID] has been deployed and is serving 100 percent of traffic.
    Service URL: https://malware-scanner-UNIQUE_ID.a.run.app
    
  7. Simpan nilai Service URL dari output perintah deployment dalam variabel shell. Anda akan menggunakan nilai ini nanti saat membuat tugas Cloud Scheduler.

    SERVICE_URL="SERVICE_URL"
    

Untuk memeriksa layanan yang sedang berjalan dan versi ClamAV, jalankan perintah berikut:

curl -D - -H "Authorization: Bearer $(gcloud auth print-identity-token)"  \
     ${SERVICE_URL}

Layanan Cloud Run mengharuskan semua pemanggilan diautentikasi, dan identitas autentikasi harus memiliki izin run.routes.invoke di layanan. Anda menambahkan izin di bagian berikutnya.

Membuat pemicu Cloud Storage Eventarc

Di bagian ini, Anda akan menambahkan izin untuk mengizinkan Eventarc mengambil peristiwa Cloud Storage dan membuat pemicu untuk mengirim peristiwa ini ke layanan malware-scanner Cloud Run.

  1. Jika Anda menggunakan project yang sudah ada dan dibuat sebelum 8 April 2021, tambahkan peran iam.serviceAccountTokenCreator ke akun layanan Pub/Sub:

    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
    PUBSUB_SERVICE_ACCOUNT="service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com"
    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
        --member="serviceAccount:${PUBSUB_SERVICE_ACCOUNT}"\
        --role='roles/iam.serviceAccountTokenCreator'
    

    Penambahan peran ini hanya diperlukan untuk project lama dan memungkinkan Pub/Sub memanggil layanan Cloud Run.

  2. Di Cloud Shell, hibahkan peran Pub/Sub Publisher ke akun layanan Cloud Storage:

    STORAGE_SERVICE_ACCOUNT=$(gsutil kms serviceaccount -p "${PROJECT_ID}")
    
    gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
      --member "serviceAccount:${STORAGE_SERVICE_ACCOUNT}" \
      --role "roles/pubsub.publisher"
    
  3. Izinkan akun layanan malware-scanner memanggil layanan Cloud Run, dan bertindak sebagai penerima peristiwa Eventarc:

    gcloud run services add-iam-policy-binding "${SERVICE_NAME}" \
      --region="${REGION}" \
      --member "serviceAccount:${SERVICE_ACCOUNT}" \
      --role roles/run.invoker
    gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
      --member "serviceAccount:${SERVICE_ACCOUNT}" \
      --role "roles/eventarc.eventReceiver"
    
  4. Buat pemicu Eventarc untuk mengambil peristiwa objek akhir dalam bucket Cloud Storage yang tidak dipindai dan kirimkan ke layanan Cloud Run Anda. Pemicu menggunakan akun layanan malware-scanner untuk autentikasi:

    BUCKET_NAME="unscanned-${PROJECT_ID}"
    gcloud eventarc triggers create "trigger-${BUCKET_NAME}-${SERVICE_NAME}" \
      --destination-run-service="${SERVICE_NAME}" \
      --destination-run-region="${REGION}" \
      --location="${LOCATION}" \
      --event-filters="type=google.cloud.storage.object.v1.finalized" \
      --event-filters="bucket=${BUCKET_NAME}" \
      --service-account="${SERVICE_ACCOUNT}"
    

    Jika Anda menerima salah satu error berikut, tunggu satu menit, lalu jalankan lagi perintah:

    ERROR: (gcloud.eventarc.triggers.create) INVALID_ARGUMENT: The request was invalid: Bucket "unscanned-PROJECT_ID" was not found. Please verify that the bucket exists.
    
    ERROR: (gcloud.eventarc.triggers.create) FAILED_PRECONDITION: Invalid resource state for "": Permission denied while using the Eventarc Service Agent. If you recently started to use Eventarc, it may take a few minutes before all necessary permissions are propagated to the Service Agent. Otherwise, verify that it has Eventarc Service Agent role.
    
  5. Ubah batas waktu konfirmasi pesan menjadi dua menit di langganan Pub/Sub yang mendasarinya yang digunakan oleh pemicu Eventarc. Nilai default 10 detik terlalu pendek untuk file yang besar atau beban yang tinggi.

    SUBSCRIPTION_NAME=$(gcloud eventarc triggers describe \
        "trigger-${BUCKET_NAME}-${SERVICE_NAME}" \
        --location="${LOCATION}" \
        --format="get(transport.pubsub.subscription)")
    gcloud pubsub subscriptions update "${SUBSCRIPTION_NAME}" --ack-deadline=120
    

    Meskipun pemicu Anda langsung dibuat, diperlukan waktu hingga 10 menit agar pemicu diterapkan dan memfilter peristiwa.

Membuat tugas Cloud Scheduler untuk memicu update duplikasi database ClamAV

  • Buat tugas Cloud Scheduler yang menjalankan permintaan POST HTTP di layanan Cloud Run dengan perintah untuk memperbarui duplikat database definisi malware. Agar tidak terlalu banyak klien yang menggunakan slot waktu yang sama, ClamAV mengharuskan Anda menjadwalkan tugas pada menit acak antara 3 dan 57, sehingga menghindari kelipatan 10.

    while : ; do
      # set MINUTE to a random number between 3 and 57
      MINUTE="$((RANDOM%55 + 3))"
      # exit loop if MINUTE isn't a multiple of 10
      [[ $((MINUTE % 10)) != 0 ]] && break
    done
    
    gcloud scheduler jobs create http \
        "${SERVICE_NAME}-mirror-update" \
        --location="${REGION}" \
        --schedule="${MINUTE} */2 * * *" \
        --oidc-service-account-email="${SERVICE_ACCOUNT}" \
        --uri="${SERVICE_URL}" \
        --http-method=post \
        --message-body='{"kind":"schedule#cvd_update"}' \
        --headers="Content-Type=application/json"
    

    Argumen command line --schedule menentukan kapan tugas dijalankan menggunakan format string unix-cron. Nilai yang diberikan menunjukkan bahwa tugas harus berjalan pada menit tertentu yang dihasilkan secara acak setiap dua jam.

Tugas ini hanya memperbarui duplikat ClamAV di Cloud Storage. Daemon freshclam ClamAV di setiap instance Cloud Run memeriksa duplikat setiap 30 menit untuk mencari definisi baru dan memperbarui daemon ClamAV.

Menguji pipeline dengan mengupload file

Untuk menguji pipeline, upload satu file bersih (bebas malware) dan satu file pengujian yang meniru file yang terinfeksi:

  1. Buat file teks contoh atau gunakan file bersih yang ada untuk menguji proses pipeline.

  2. Di Cloud Shell, salin file sampel data ke bucket yang tidak dipindai:

    gsutil cp FILENAME "gs://unscanned-${PROJECT_ID}"
    

    Ganti FILENAME dengan nama file teks yang bersih. Layanan pemindai malware memeriksa setiap file dan memindahkannya ke bucket yang sesuai. File ini dipindahkan ke bucket yang bersih.

  3. Beri waktu pipeline beberapa detik untuk memproses file, lalu periksa bucket Anda yang bersih untuk melihat apakah file yang diproses ada di sana:

    gsutil ls -r "gs://clean-${PROJECT_ID}"
    

    Anda dapat memeriksa apakah file telah dihapus dari bucket yang tidak dipindai:

    gsutil ls -r "gs://unscanned-${PROJECT_ID}"
    
  4. Upload file bernama eicar-infected.txt yang berisi tanda tangan pengujian anti-malware standar EICAR ke bucket yang tidak dipindai:

    echo -e 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' \
        | gsutil cp - "gs://unscanned-${PROJECT_ID}/eicar-infected.txt"
    

    String teks ini memiliki tanda tangan yang memicu pemindai malware untuk tujuan pengujian. File pengujian ini adalah pengujian yang banyak digunakan. Ini bukan malware yang sebenarnya dan tidak berbahaya bagi workstation Anda. Jika mencoba membuat file yang berisi string ini di komputer yang menginstal pemindai malware, Anda dapat memicu pemberitahuan.

  5. Tunggu beberapa detik, lalu periksa bucket yang dikarantina untuk melihat apakah file Anda berhasil melewati pipeline:

    gsutil ls -r "gs://quarantined-${PROJECT_ID}"
    

    Layanan ini juga mencatat entri log Logging saat file yang terinfeksi malware terdeteksi.

    Anda dapat memeriksa apakah file telah dihapus dari bucket yang tidak dipindai:

    gsutil ls -r "gs://unscanned-${PROJECT_ID}"
    

Menguji mekanisme update database definisi malware

  • Di Cloud Shell, picu pemeriksaan update dengan memaksa tugas Cloud Scheduler untuk dijalankan:

    gcloud scheduler jobs run "${SERVICE_NAME}-mirror-update" --location="${REGION}"
    

    Hasil perintah ini hanya ditampilkan di log mendetail.

Memantau layanan

Anda dapat memantau layanan menggunakan Cloud Logging dan Cloud Monitoring.

Melihat log mendetail

  1. Di konsol Google Cloud, buka halaman Logs Explorer Cloud Logging.

    Buka Logs Explorer

  2. Jika filter Kolom log tidak ditampilkan, klik Log Fields.

  3. Di filter Kolom log, klik Cloud Run Revision.

  4. Di bagian Nama Layanan pada filter Kolom Log, klik malware-scanner.

Hasil kueri log menampilkan log dari layanan, termasuk beberapa baris yang menampilkan permintaan dan status pemindaian untuk kedua file yang Anda upload:

Scan request for gs://unscanned-PROJECT_ID/FILENAME, (##### bytes) scanning with clam ClamAV CLAMAV_VERSION_STRING
Scan status for gs://unscanned-PROJECT_ID/FILENAME: CLEAN (##### bytes in #### ms)
...
Scan request for gs://unscanned-PROJECT_ID/eicar-infected.txt, (69 bytes) scanning with clam ClamAV CLAMAV_VERSION_STRING
Scan status for gs://unscanned-PROJECT_ID/eicar-infected.txt: INFECTED stream: Eicar-Signature FOUND (69 bytes in ### ms)

Output-nya menunjukkan versi ClamAV dan revisi tanda tangan database malware, beserta nama malware untuk file pengujian yang terinfeksi. Anda dapat menggunakan pesan log ini untuk menyiapkan pemberitahuan saat malware ditemukan, atau saat kegagalan terjadi saat pemindaian.

Output-nya juga menunjukkan log update duplikat definisi malware:

Starting CVD Mirror update
CVD Mirror update check complete. output: ...

Jika duplikat diperbarui, output akan menampilkan baris tambahan:

CVD Mirror updated: DATE_TIME - INFO: Downloaded daily.cvd. Version: VERSION_INFO

Log update Freshclam muncul setiap 30 menit:

DATE_TIME -> Received signal: wake up
DATE_TIME -> ClamAV update process started at DATE_TIME
DATE_TIME -> daily.cvd database is up-to-date (version: VERSION_INFO)
DATE_TIME -> main.cvd database is up-to-date (version: VERSION_INFO)
DATE_TIME -> bytecode.cvd database is up-to-date (version: VERSION_INFO)

Jika database telah diperbarui, baris log freshclam akan mirip dengan yang berikut:

DATE_TIME -> daily.cld updated (version: VERSION_INFO)

Melihat Metrik

Layanan ini menghasilkan metrik berikut untuk tujuan pemantauan dan pemberitahuan:

  • Jumlah file bersih yang diproses:
    custom.googleapis.com/opencensus/malware-scanning/clean_files
  • Jumlah file terinfeksi yang diproses:
    custom.googleapis.com/opencensus/malware-scanning/infected_files
  • Waktu yang dihabiskan untuk memindai file:
    custom.googleapis.com/opencensus/malware-scanning/scan_duration
  • Total jumlah byte yang dipindai:
    custom.googleapis.com/opencensus/malware-scanning/bytes_scanned
  • Jumlah pemindaian malware yang gagal:
    custom.googleapis.com/opencensus/malware-scanning/scans_failed
  • Jumlah pemeriksaan update Duplikat CVD:
    custom.googleapis.com/opencensus/malware-scanning/cvd-mirror-updates

Anda dapat melihat metrik ini di Metrics Explorer Cloud Monitoring:

  1. Di konsol Google Cloud, buka halaman Metrics Explorer Cloud Monitoring.

    Buka Metrics Explorer

  2. Klik kolom Select a metric dan masukkan string filter malware.

  3. Pilih metrik OpenCensus/malware-scanning/clean_files. Grafik ini menunjukkan titik data yang menunjukkan kapan file bersih dipindai.

Anda dapat menggunakan metrik untuk memantau pipeline dan membuat pemberitahuan saat malware terdeteksi, atau saat file gagal diproses.

Metrik yang dihasilkan memiliki label berikut, yang dapat Anda gunakan untuk pemfilteran dan agregasi guna melihat detail terperinci dengan Metrics Explorer:

  • source_bucket
  • destination_bucket
  • clam_version
  • cloud_run_revision

Menangani beberapa bucket

Layanan pemindai malware dapat memindai file dari beberapa bucket sumber dan mengirim file untuk memisahkan bucket bersih dan yang dikarantina. Meskipun konfigurasi lanjutan ini berada di luar cakupan deployment ini, berikut adalah ringkasan langkah-langkah yang diperlukan:

  1. Membuat bucket Cloud Storage yang tidak dipindai, bersih, dan dikarantina dengan nama unik.

  2. Berikan peran yang sesuai ke akun layanan malware-scanner di setiap bucket.

  3. Edit file konfigurasi config.json untuk menentukan nama bucket bagi setiap konfigurasi:

    {
      "buckets": [
        {
          "unscanned": "unscanned-bucket-1-name",
          "clean": "clean-bucket-1-name",
          "quarantined": "quarantined-bucket-1-name"
        },
        {
          "unscanned": "unscanned-bucket-2-name",
          "clean": "clean-bucket-2-name",
          "quarantined": "quarantined-bucket-2-name"
        }
      ]
      "ClamCvdMirrorBucket": "cvd-mirror-bucket-name"
    }
    
  4. Untuk setiap bucket yang tidak dipindai, buat pemicu Eventarc. Pastikan untuk membuat nama pemicu yang unik untuk setiap bucket.

    Bucket Cloud Storage harus berada dalam project dan region yang sama dengan pemicu Eventarc.

Pembersihan

Bagian berikut menjelaskan cara agar Anda tidak dikenai biaya di masa mendatang untuk project Google Cloud yang Anda gunakan dalam deployment ini.

Menghapus project Google Cloud

Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam deployment ini, Anda dapat menghapus project Google Cloud.

  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