Petunjuk dan persyaratan penyiapan lab
Lindungi akun dan progres Anda. Selalu gunakan jendela browser pribadi dan kredensial lab untuk menjalankan lab ini.

Mengamankan Build dengan Cloud Build

Lab 20 menit universal_currency_alt 5 Kredit show_chart Menengah
info Lab ini mungkin menggabungkan alat AI untuk mendukung pembelajaran Anda.
Konten ini belum dioptimalkan untuk perangkat seluler.
Untuk pengalaman terbaik, kunjungi kami dengan komputer desktop menggunakan link yang dikirim melalui email.

GSP1184

Lab Mandiri Google Cloud

Ringkasan

Kerentanan software adalah kelemahan yang dapat menyebabkan kegagalan sistem yang tidak disengaja atau mengekspos celah bagi pelaku kejahatan untuk membahayakan software Anda. Artifact Analysis menyediakan dua jenis pemindaian OS untuk menemukan kerentanan dalam container:

  • On-Demand Scanning API memungkinkan Anda memindai image container secara manual untuk mendeteksi kerentanan OS, baik secara lokal di komputer Anda maupun dari jarak jauh di Artifact Registry. Tindakan ini memberi Anda kontrol terperinci atas container yang ingin dideteksi kerentanannya.
  • Container Scanning API memungkinkan Anda mengotomatiskan deteksi kerentanan OS, dengan melakukan pemindaian setiap kali Anda mengirim image ke Artifact Registry. Anda dapat menggunakan Pemindaian On-Demand untuk memindai image di pipeline CI/CD sebelum menentukan apakah akan menyimpannya di registry atau tidak. Mengaktifkan API ini juga akan mengaktifkan pemindaian paket bahasa untuk mencari kerentanan Go dan Java.

Di lab ini, Anda akan mempelajari cara membuat image container dan memindai kerentanan image container yang disimpan di Artifact Registry menggunakan Cloud Build.

Yang akan Anda pelajari

Di lab ini, Anda akan:

  • Membuat Image dengan Cloud Build
  • Menggunakan Artifact Registry untuk Container
  • Memanfaatkan pemindaian kerentanan otomatis
  • Mengonfigurasi Pemindaian On-Demand
  • Menambahkan pemindaian image dalam CI/CD di Cloud Build

Penyiapan dan Persyaratan

Sebelum mengklik tombol Start Lab

Baca petunjuk ini. Lab memiliki timer yang tidak dapat dijeda. Timer, yang dimulai saat Anda mengklik Start Lab, akan menampilkan durasi ketersediaan resource Google Cloud untuk Anda.

Lab praktis ini dapat Anda gunakan untuk mengerjakan sendiri aktivitas lab di lingkungan cloud sungguhan, bukan di lingkungan demo atau simulasi. Untuk mengakses lab ini, Anda akan diberi kredensial baru yang bersifat sementara dan dapat digunakan untuk login serta mengakses Google Cloud selama durasi lab.

Untuk menyelesaikan lab ini, Anda memerlukan:

  • Akses ke browser internet standar (disarankan browser Chrome).
Catatan: Gunakan jendela Samaran atau browser rahasia untuk menjalankan lab ini. Hal ini akan mencegah konflik antara akun pribadi Anda dan akun Siswa, yang mungkin menyebabkan tagihan ekstra pada akun pribadi Anda.
  • Waktu untuk menyelesaikan lab. Ingat, setelah dimulai, lab tidak dapat dijeda.
Catatan: Jika Anda sudah memiliki project atau akun pribadi Google Cloud, jangan menggunakannya untuk lab ini agar terhindar dari tagihan ekstra pada akun Anda.

Cara memulai lab dan login ke Konsol Google Cloud

  1. Klik tombol Start Lab. Jika Anda perlu membayar lab, jendela pop-up akan terbuka untuk memilih metode pembayaran. Panel Lab Details di sebelah kiri berisi:

    • Tombol Open Google Cloud console
    • Waktu tersisa
    • Kredensial sementara yang harus Anda gunakan untuk lab ini
    • Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
  2. Klik Open Google Cloud console (atau klik kanan dan pilih Open Link in Incognito Window jika Anda menjalankan browser Chrome).

    Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Sign in.

    Tips: Atur tab di jendela terpisah secara berdampingan.

    Catatan: Jika Anda melihat dialog Choose an account, klik Use Another Account.
  3. Jika perlu, salin Username di bawah dan tempel ke dialog Sign in.

    {{{user_0.username | "Username"}}}

    Anda juga dapat menemukan Username di panel Lab Details.

  4. Klik Next.

  5. Salin Password di bawah dan tempel ke dialog Welcome.

    {{{user_0.password | "Password"}}}

    Anda juga dapat menemukan Password di panel Lab Details.

  6. Klik Next.

    Penting: Anda harus menggunakan kredensial yang diberikan lab. Jangan menggunakan kredensial akun Google Cloud Anda. Catatan: Penggunaan akun Google Cloud sendiri untuk lab ini mungkin dikenai biaya tambahan.
  7. Klik untuk melanjutkan ke halaman berikutnya:

    • Setujui persyaratan dan ketentuan.
    • Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
    • Jangan daftar uji coba gratis.

Setelah beberapa saat, Konsol Google Cloud akan terbuka di tab ini.

Catatan: Untuk melihat menu dengan daftar produk dan layanan Google Cloud, klik Navigation menu di kiri atas. Ikon Navigation menu

Mengaktifkan Cloud Shell

Cloud Shell adalah mesin virtual yang dilengkapi dengan berbagai alat pengembangan. Mesin virtual ini menawarkan direktori beranda persisten berkapasitas 5 GB dan berjalan di Google Cloud. Cloud Shell menyediakan akses command-line untuk resource Google Cloud Anda.

  1. Klik Activate Cloud Shell Ikon Activate Cloud Shell di bagian atas konsol Google Cloud.

Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke Project_ID, . Output berisi baris yang mendeklarasikan Project_ID untuk sesi ini:

Project Cloud Platform Anda dalam sesi ini disetel ke {{{project_0.project_id | "PROJECT_ID"}}}

gcloud adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.

  1. (Opsional) Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
gcloud auth list
  1. Klik Authorize.

Output:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} Untuk menetapkan akun aktif, jalankan: $ gcloud config set account `ACCOUNT`
  1. (Opsional) Anda dapat menampilkan daftar ID project dengan perintah ini:
gcloud config list project

Output:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Catatan: Untuk mendapatkan dokumentasi gcloud yang lengkap di Google Cloud, baca panduan ringkasan gcloud CLI.

Penyiapan Lingkungan

  1. Di Cloud Shell, tetapkan project ID dan nomor project untuk project Anda. Simpan keduanya sebagai variabel PROJECT_ID dan PROJECT_NUMBER:
export PROJECT_ID=$(gcloud config get-value project) export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID \ --format='value(projectNumber)')
  1. Aktifkan semua layanan yang diperlukan:
gcloud services enable \ cloudkms.googleapis.com \ cloudbuild.googleapis.com \ container.googleapis.com \ containerregistry.googleapis.com \ artifactregistry.googleapis.com \ containerscanning.googleapis.com \ ondemandscanning.googleapis.com \ binaryauthorization.googleapis.com

Klik Periksa progres saya untuk memverifikasi tujuan.

Mengaktifkan API yang diperlukan

Tugas 1. Membuat image dengan Cloud Build

Di bagian ini, Anda akan membuat pipeline build otomatis untuk membuat image container, memindainya, lalu mengevaluasi hasilnya. Jika tidak ditemukan kerentanan KRITIS, image akan dikirim ke repositori. Jika ditemukan kerentanan KRITIS, build akan gagal dan keluar.

  1. Sediakan akses untuk Akun Layanan Cloud Build:
gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com" \ --role="roles/iam.serviceAccountUser" gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com" \ --role="roles/ondemandscanning.admin"

Cloud Build memerlukan hak untuk mengakses API pemindaian on-demand. Berikan akses dengan perintah berikut.

  1. Buat dan ubah ke direktori kerja:
mkdir vuln-scan && cd vuln-scan
  1. Tentukan image sampel:

Buat file bernama Dockerfile dengan isi berikut:

cat > ./Dockerfile << EOF FROM gcr.io/google-appengine/debian11 # System RUN apt update && apt install python3-pip -y # App WORKDIR /app COPY . ./ RUN pip3 install Flask==1.1.4 RUN pip3 install gunicorn==20.1.0 CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app EOF
  1. Buat file bernama main.py dengan isi sebagai berikut:
cat > ./main.py << EOF import os from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): name = os.environ.get("NAME", "Worlds") return "Hello {}!".format(name) if __name__ == "__main__": app.run(debug=True, host="0.0.0.0", port=int(os.environ.get("PORT", 8080))) EOF

Membuat pipeline Cloud Build

Anda harus membuat file cloudbuild.yaml di direktori yang akan digunakan untuk proses otomatis. Untuk lab ini, langkah-langkahnya terbatas pada proses build container. Namun, dalam praktiknya, Anda harus menyertakan petunjuk dan pengujian spesifik per aplikasi selain langkah-langkah container.

  1. Buat file dengan perintah berikut:
cat > ./cloudbuild.yaml << EOF steps: # build - id: "build" name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', '{{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image', '.'] waitFor: ['-'] EOF
  1. Jalankan pipeline CI:

Kirim build agar diproses:

gcloud builds submit
  1. Setelah proses build dimulai, buka dasbor Cloud Build di Konsol Cloud untuk melihat isinya.

Klik Periksa progres saya untuk memverifikasi tujuan.

Membuat image dengan Cloud Build

Tugas 2. Menggunakan Artifact Registry untuk Container

Membuat repositori Artifact Registry

Anda akan menggunakan Artifact Registry untuk menyimpan dan memindai image.

  1. Buat repositori dengan perintah berikut:
gcloud artifacts repositories create artifact-scanning-repo \ --repository-format=docker \ --location={{{ project_0.default_region | "REGION" }}} \ --description="Docker repository"
  1. Konfigurasi Docker agar menggunakan kredensial gcloud Anda saat mengakses Artifact Registry:
gcloud auth configure-docker {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev
  1. Ubah pipeline Cloud Build untuk mengirim image yang dihasilkan ke Artifact Registry:
cat > ./cloudbuild.yaml << EOF steps: # build - id: "build" name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', '{{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image', '.'] waitFor: ['-'] # push to artifact registry - id: "push" name: 'gcr.io/cloud-builders/docker' args: ['push', '{{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image'] images: - {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image EOF
  1. Jalankan pipeline CI:
gcloud builds submit

Klik Periksa progres saya untuk memverifikasi tujuan.

Membuat repositori Artifact Registry

Tugas 3. Memanfaatkan pemindaian kerentanan Otomatis

Pemindaian dipicu secara otomatis setiap kali Anda mengirim image baru ke Artifact Registry. Informasi kerentanan terus diperbarui ketika kerentanan baru ditemukan.

Di bagian ini, Anda akan meninjau image yang baru saja dibuat dan dikirim ke Artifact Registry serta mempelajari hasil kerentanan.

Meninjau Detail Image

Setelah proses build selesai, tinjau hasil image dan kerentanan di dasbor Artifact Registry.

  1. Di Konsol Cloud, buka Artifact Registry.
  2. Klik artifact-scanning-repo untuk melihat isinya.
  3. Klik image details.
  4. Klik ringkasan terbaru image Anda.
  5. Setelah pemindaian selesai, klik tab Vulnerabilities untuk image tersebut.

Dari tab vulnerabilities, Anda akan melihat hasil pemindaian otomatis untuk image yang baru saja Anda buat.

Halaman Artifact Registry yang menampilkan tab Vulnerabilities

Pemindaian otomatis aktif secara default. Jelajahi Setelan Artifact Registry untuk melihat cara menonaktifkan/mengaktifkan pemindaian otomatis.

Tugas 4. Mengonfigurasi pemindaian on-demand

Ada berbagai skenario yang mengharuskan Anda melakukan pemindaian sebelum mengirim image ke repositori. Misalnya, developer container dapat memindai image dan memperbaiki masalah yang ditemukan sebelum mengirimkan kode ke kontrol sumber.

Dalam contoh di bawah, Anda akan membuat dan menganalisis image secara lokal sebelum mengambil tindakan berdasarkan hasilnya.

  1. Gunakan docker lokal untuk membuat image ke cache lokal:
docker build -t {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image .
  1. Setelah image dibuat, buat permintaan pemindaian image:
gcloud artifacts docker images scan \ {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image \ --format="value(response.scan)" > scan_id.txt

Hasil pemindaian disimpan di server metadata. Tugas selesai dan informasi lokasi hasilnya dapat ditemukan di server metadata.

  1. Tinjau output yang disimpan dalam file scan_id.txt:
cat scan_id.txt

Perhatikan lokasi laporan hasil pemindaian di server metadata.

  1. Untuk melihat hasil pemindaian yang sebenarnya, gunakan perintah list-vulnerabilities di lokasi laporan yang tercantum dalam file output:
gcloud artifacts docker images list-vulnerabilities $(cat scan_id.txt)

Output berisi sejumlah besar data tentang semua kerentanan dalam image. Manusia jarang menggunakan data yang disimpan dalam laporan secara langsung. Biasanya, hasilnya digunakan oleh proses otomatis.

  1. Gunakan perintah di bawah untuk membaca detail laporan dan membuat log jika ditemukan kerentanan KRITIS:
export SEVERITY=CRITICAL gcloud artifacts docker images list-vulnerabilities $(cat scan_id.txt) --format="value(vulnerability.effectiveSeverity)" | if grep -Fxq ${SEVERITY}; then echo "Failed vulnerability check for ${SEVERITY} level"; else echo "No ${SEVERITY} Vulnerabilities found"; fi

Output dari perintah ini adalah

Failed vulnerability check for CRITICAL level

Klik Periksa progres saya untuk memverifikasi tujuan.

Pindai image menggunakan Pemindaian On-Demand

Tugas 5. Menggunakan Pemindaian Artefak dalam CI/CD di Cloud Build

Pertama, Anda perlu memberikan hak Cloud Build untuk mengakses API pemindaian on-demand.

  1. Berikan akses dengan perintah berikut:
gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com" \ --role="roles/iam.serviceAccountUser" gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com" \ --role="roles/ondemandscanning.admin"
  1. Perbarui pipeline Cloud Build menggunakan perintah berikut untuk membuat file cloudbuild.yaml yang akan digunakan untuk proses otomatis:
cat > ./cloudbuild.yaml << EOF steps: # build - id: "build" name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', '{{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image', '.'] waitFor: ['-'] #Run a vulnerability scan at _SECURITY level - id: scan name: 'gcr.io/cloud-builders/gcloud' entrypoint: 'bash' args: - '-c' - | (gcloud artifacts docker images scan \ {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image \ --location us \ --format="value(response.scan)") > /workspace/scan_id.txt #Analyze the result of the scan - id: severity check name: 'gcr.io/cloud-builders/gcloud' entrypoint: 'bash' args: - '-c' - | gcloud artifacts docker images list-vulnerabilities \$(cat /workspace/scan_id.txt) \ --format="value(vulnerability.effectiveSeverity)" | if grep -Fxq CRITICAL; \ then echo "Failed vulnerability check for CRITICAL level" && exit 1; else echo "No CRITICAL vulnerability found, congrats !" && exit 0; fi #Retag - id: "retag" name: 'gcr.io/cloud-builders/docker' args: ['tag', '{{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image', '{{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image:good'] #pushing to artifact registry - id: "push" name: 'gcr.io/cloud-builders/docker' args: ['push', '{{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image:good'] images: - {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/${PROJECT_ID}/artifact-scanning-repo/sample-image EOF

Untuk contoh ini, langkah-langkahnya terbatas pada proses build container. Dalam praktiknya, Anda harus menyertakan petunjuk dan pengujian khusus aplikasi tertentu selain langkah-langkah container.

  1. Kirimkan build untuk diproses guna memverifikasi bahwa proses build gagal saat ditemukan kerentanan dengan tingkat keparahan KRITIS.
gcloud builds submit
  1. Tinjau Kegagalan Build di halaman Histori Cloud Build.

Klik Periksa progres saya untuk memverifikasi tujuan.

Pastikan bahwa build gagal saat ditemukan kerentanan dengan tingkat keparahan KRITIS

Memperbaiki Kerentanan

Perbarui Dockerfile agar menggunakan image dasar yang tidak berisi kerentanan KRITIS.

  1. Timpa Dockerfile agar menggunakan image Debian 10 dengan perintah berikut:
cat > ./Dockerfile << EOF FROM python:3.8-alpine # App WORKDIR /app COPY . ./ RUN pip3 install Flask==2.1.0 RUN pip3 install gunicorn==20.1.0 RUN pip3 install Werkzeug==2.2.2 CMD exec gunicorn --bind :\$PORT --workers 1 --threads 8 main:app EOF
  1. Kirimkan build untuk diproses guna memverifikasi bahwa build akan berhasil jika tidak ditemukan kerentanan dengan tingkat keparahan KRITIS:
gcloud builds submit
  1. Di Konsol Cloud, buka Cloud Build > Histori Cloud Build untuk meninjau keberhasilan build.

Klik Periksa progres saya untuk memverifikasi tujuan.

Memperbaiki Kerentanan

Meninjau Hasil pemindaian

Meninjau image berhasil di Artifact Registry

  1. Buka Artifact Registry di Konsol Cloud.
  2. Klik artifact-scanning-repo untuk melihat isinya.
  3. Klik image details.
  4. Klik ringkasan terbaru image Anda.
  5. Klik tab Vulnerabilities untuk image tersebut.

Selamat!

Anda telah mempelajari cara membuat image dengan Cloud Build dan menyimpannya di Artifact Registry, serta melihat pemicuan pemindaian Artifact secara otomatis. Anda juga mengetahui cara memindai image "on-demand" - sebelum dikirimkan ke kontrol sumber.

Langkah berikutnya/pelajari lebih lanjut

Pelatihan & Sertifikasi Google Cloud

...membantu Anda mendapatkan manfaat optimal dari teknologi Google Cloud. Kelas kami mencakup keterampilan teknis dan praktik terbaik untuk membantu Anda memahami dengan cepat dan melanjutkan proses pembelajaran. Kami menawarkan pelatihan tingkat dasar hingga lanjutan dengan opsi on demand, live, dan virtual agar dapat disesuaikan dengan jadwal Anda yang sibuk. Sertifikasi membantu Anda memvalidasi dan membuktikan keterampilan serta keahlian Anda dalam teknologi Google Cloud.

Manual Terakhir Diperbarui: 23 Juli 2025

Lab Terakhir Diuji pada 23 Juli 2025

Hak cipta 2024 Google LLC. Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.

Sebelum memulai

  1. Lab membuat project dan resource Google Cloud untuk jangka waktu tertentu
  2. Lab memiliki batas waktu dan tidak memiliki fitur jeda. Jika lab diakhiri, Anda harus memulainya lagi dari awal.
  3. Di kiri atas layar, klik Start lab untuk memulai

Gunakan penjelajahan rahasia

  1. Salin Nama Pengguna dan Sandi yang diberikan untuk lab tersebut
  2. Klik Open console dalam mode pribadi

Login ke Konsol

  1. Login menggunakan kredensial lab Anda. Menggunakan kredensial lain mungkin menyebabkan error atau dikenai biaya.
  2. Setujui persyaratan, dan lewati halaman resource pemulihan
  3. Jangan klik End lab kecuali jika Anda sudah menyelesaikan lab atau ingin mengulanginya, karena tindakan ini akan menghapus pekerjaan Anda dan menghapus project

Konten ini tidak tersedia untuk saat ini

Kami akan memberi tahu Anda melalui email saat konten tersedia

Bagus!

Kami akan menghubungi Anda melalui email saat konten tersedia

Satu lab dalam satu waktu

Konfirmasi untuk mengakhiri semua lab yang ada dan memulai lab ini

Gunakan penjelajahan rahasia untuk menjalankan lab

Menggunakan jendela Samaran atau browser pribadi adalah cara terbaik untuk menjalankan lab ini. Langkah ini akan mencegah konflik antara akun pribadi Anda dan akun Siswa, yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.