Men-deploy di Cloud Run dan melihat insight keamanan

Panduan memulai ini menjelaskan cara men-deploy image container ke Cloud Run dan melihat insight keamanan untuk deployment di panel Keamanan Perlindungan Pengiriman Software di Konsol Google Cloud. Anda akan:

  • Men-deploy image ke Cloud Run menggunakan Cloud Deploy. Cloud Deploy adalah layanan Google Cloud yang mengotomatiskan pengiriman aplikasi Anda ke serangkaian lingkungan target dalam urutan promosi yang ditentukan.
  • Lihat insight keamanan berikut untuk deployment:

    • Informasi identitas dan enkripsi untuk deployment.
    • Level Supply chain Levels for Software Artifacts (SLSA), yang mengidentifikasi tingkat jaminan untuk deployment.
    • Kerentanan dalam artefak build.
    • Software bill of materials (SBOM) untuk artefak build.
    • Build provenance, yang merupakan kumpulan metadata yang dapat diverifikasi tentang build. File ini berisi detail seperti ringkasan image yang di-build, lokasi sumber input, toolchain build, langkah-langkah build, dan durasi build.

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. Menginstal Google Cloud CLI.
  3. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  4. Buat atau pilih project Google Cloud.

    • Membuat project Google Cloud:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk project Google Cloud yang Anda buat.

    • Pilih project Google Cloud yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama project Google Cloud Anda.

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

  6. Enable the Cloud Build, Artifact Registry, Cloud Deploy, Cloud Run, and Container Scanning APIs:

    gcloud services enable cloudbuild.googleapis.com  artifactregistry.googleapis.com  clouddeploy.googleapis.com  run.googleapis.com  containerscanning.googleapis.com
  7. Menginstal Google Cloud CLI.
  8. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  9. Buat atau pilih project Google Cloud.

    • Membuat project Google Cloud:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk project Google Cloud yang Anda buat.

    • Pilih project Google Cloud yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama project Google Cloud Anda.

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

  11. Enable the Cloud Build, Artifact Registry, Cloud Deploy, Cloud Run, and Container Scanning APIs:

    gcloud services enable cloudbuild.googleapis.com  artifactregistry.googleapis.com  clouddeploy.googleapis.com  run.googleapis.com  containerscanning.googleapis.com

Menetapkan setelan default

  1. Tetapkan variabel lingkungan untuk project ID:

    export PROJECT_ID=$(gcloud config get project)
    
  2. Tetapkan region default untuk Cloud Deploy:

    gcloud config set deploy/region us-central1
    

Berikan akses

Berikan peran IAM ke akun layanan Compute Engine default. Hal ini diperlukan agar Cloud Deploy men-deploy workload ke Cloud Run.

 gcloud projects add-iam-policy-binding $PROJECT_ID \
     --member=serviceAccount:$(gcloud projects describe $PROJECT_ID \
     --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
     --role="roles/clouddeploy.jobRunner"
 gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe $PROJECT_ID \
     --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
     --member=serviceAccount:$(gcloud projects describe $PROJECT_ID \
     --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
     --role="roles/iam.serviceAccountUser" \
     --project=$PROJECT_ID
 gcloud projects add-iam-policy-binding $PROJECT_ID \
     --member=serviceAccount:$(gcloud projects describe $PROJECT_ID \
     --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
     --role="roles/run.developer"

Jika mengalami masalah saat menambahkan salah satu peran ini, hubungi administrator project Anda.

Membuat repositori Docker di Artifact Registry

  1. Buat repositori Docker baru bernama containers di lokasi us-central1 dengan deskripsi "Repositori Docker":

    gcloud artifacts repositories create containers --repository-format=docker \
        --location=us-central1 --description="Docker repository"
    
  2. Pastikan repositori Anda telah dibuat:

    gcloud artifacts repositories list
    

    Anda akan melihat containers dalam daftar repositori yang ditampilkan.

Menyiapkan aplikasi contoh

Anda akan memerlukan beberapa kode sumber contoh untuk membangun dan men-deploy. Di bagian ini, Anda akan meng-clone repositori sumber yang ada yang berisi contoh kode Java.

  1. Clone repositori yang berisi contoh kode Java:

    git clone https://github.com/googlecloudplatform/software-delivery-shield-demo-java.git
    cd software-delivery-shield-demo-java/backend
    
  2. Update cloudrun.clouddeploy.yaml untuk mengganti PROJECT_ID dengan project ID Anda:

    sed -i "s/PROJECT_ID/${PROJECT_ID}/g" cloudrun.clouddeploy.yaml
    

Membangun aplikasi

  1. Bangun dan masukkan aplikasi Java ke dalam container menggunakan Cloud Build. Perintah berikut mem-build dan memasukkan aplikasi Java ke dalam container dan menyimpan container yang telah dibangun di repositori docker Artifact Registry:

    gcloud builds submit --config=cloudbuild.yaml --region=us-central1
    

    Setelah build selesai, Anda akan melihat pesan status berhasil seperti berikut:

    DONE
    -----------------------------------------------------------------------------
    ID: 3e08565f-7f57-4449-bc68-51c46cf33d03
    CREATE_TIME: 2022-09-19T15:41:07+00:00
    DURATION: 54S
    SOURCE: gs://sds-docs-project_cloudbuild/source/1663602066.777581-6ebe4b2d6fd741ffa18936d7f78055e9.tgz
    IMAGES: us-central1-docker.pkg.dev/sds-docs-project/containers/java-guestbook-backend:quickstart
    STATUS: SUCCESS
    

Membuat SBOM untuk image yang di-build

SBOM adalah inventaris lengkap aplikasi, yang mengidentifikasi paket yang diandalkan software Anda. Isinya dapat mencakup software pihak ketiga dari vendor, artefak internal, dan library open source.

Buat SBOM untuk image yang Anda build di bagian sebelumnya:

gcloud artifacts sbom export
    --uri=us-central1-docker.pkg.dev/${PROJECT_ID}/containers/java-guestbook-backend:quickstart

Men-deploy container di Cloud Run menggunakan Cloud Deploy

  1. Daftarkan pipeline dan target Anda dengan layanan Cloud Deploy:

    gcloud deploy apply --file cloudrun.clouddeploy.yaml
    

    Anda sekarang memiliki pipeline, dengan target, yang siap men-deploy aplikasi ke target pertama Anda.

  2. Untuk memverifikasi bahwa pipeline Anda ada, buka halaman Pipeline pengiriman di Konsol Google Cloud:

    Buka halaman Pipeline pengiriman

    Pipeline pengiriman yang baru saja Anda buat, cloudrun-guestbook-backend-delivery akan ditampilkan.

  3. Klik cloudrun-guestbook-backend-delivery untuk memantau progres. Halaman Detail pipeline pengiriman akan terbuka.

  4. Di Cloud Shell, buat rilis di Cloud Deploy:

    gcloud deploy releases create test-release-007 \
        --delivery-pipeline=cloudrun-guestbook-backend-delivery \
        --skaffold-file=cloudrun.skaffold.yaml \
        --images=java-guestbook-backend=us-central1-docker.pkg.dev/${PROJECT_ID}/containers/java-guestbook-backend:quickstart
    

    Rilis baru akan muncul di bagian Rilis di halaman Detail pipeline pengiriman.

  5. Pantau tampilan Visualisasi pipeline di halaman Detail pipeline pengiriman hingga tombol Promosikan ditampilkan untuk dev-cluster. Anda mungkin perlu memuat ulang halaman.

  6. Pada target pertama dalam visualisasi pipeline penayangan, cloudrun-dev, klik Promosikan.

    Dialog Promosikan rilis akan ditampilkan. Bagian ini menunjukkan detail target yang Anda promosikan.

  7. Klik Promosikan.

    Rilis tersebut kini berada dalam antrean untuk deployment ke cloudrun-prod. Setelah deployment selesai, visualisasi pipeline pengiriman akan menampilkannya sebagai di-deploy:

    Screenshot deployment

Lihat insight keamanan di Cloud Deploy

  1. Buka halaman Delivery pipelines Cloud Deploy di Konsol Google Cloud.

    Buka halaman Cloud Deploy

  2. Di tabel Pipeline penayangan, klik cloudrun-guestbook-backend-delivery.

  3. Di halaman Detail pipeline pengiriman, klik test-release-008.

  4. Di halaman Detail rilis, klik tab Artefak.

  5. Di tabel Build artefak, cari baris yang berisi artefak java-guestbook-backend, dan pada kolom Security insights yang sesuai, klik View.

Anda akan melihat panel Keamanan Perlindungan Pengiriman Software untuk deployment.

Screenshot panel keamanan

Panel ini menampilkan informasi berikut:

  • Level SLSA: Build ini telah mencapai SLSA Level 3. Klik link Pelajari lebih lanjut untuk mempelajari arti tingkat keamanan ini.

  • Kerentanan: Kerentanan yang ditemukan di artefak Anda. Klik nama image (java-guestbook-backend) untuk melihat artefak yang telah dipindai untuk mendeteksi kerentanan.

  • Dependencies untuk artefak build.

  • Detail build: Detail build seperti builder dan link untuk melihat log.

Lihat insight keamanan di Cloud Run

  1. Buka halaman Services Cloud Run.

    Buka halaman Cloud Run Services

  2. Di tabel Services Cloud Run, klik guestbook-backend-prod.

  3. Di halaman Detail layanan, klik Revisi.

  4. Di panel Revisi, klik Keamanan.

Anda akan melihat panel Keamanan Perlindungan Pengiriman Software untuk deployment.

Screenshot panel keamanan

Panel ini menampilkan informasi berikut:

  • Identitas dan enkripsi: Alamat email akun layanan Compute Engine default dan kunci enkripsi yang digunakan untuk deployment.

  • Level SLSA: Build ini telah mencapai SLSA Level 3. Klik link Pelajari lebih lanjut untuk mempelajari arti tingkat keamanan ini.

  • Kerentanan: Kerentanan yang ditemukan di artefak Anda. Klik nama image (java-guestbook-backend) untuk melihat artefak yang telah dipindai untuk mendeteksi kerentanan.

  • Dependencies untuk artefak build.

  • Detail build: Detail build seperti builder dan link untuk melihat log.

Pembersihan

Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan pada halaman ini, hapus project Google Cloud yang berisi resource tersebut.

  1. Nonaktifkan Container Scanning API:

    gcloud services disable containerscanning.googleapis.com --force
    
  2. Hapus layanan Cloud Run guestbook-backend-dev:

    gcloud run services delete guestbook-backend-dev --region=us-central1 \
        --project=${PROJECT_ID}
    
  3. Hapus layanan guestbook-backend-prod:

    gcloud run services delete guestbook-backend-prod --region=us-central1 \
        --project=${PROJECT_ID}
    
  4. Menghapus pipeline pengiriman, termasuk rilis dan peluncuran:

    gcloud deploy delivery-pipelines delete cloudrun-guestbook-backend-delivery \
        --force --region=us-central1 --project=${PROJECT_ID}
    

    Perintah ini menghapus pipeline pengiriman itu sendiri, beserta semua Keamanan supply chain software resource release dan rollout yang dibuat untuk pipeline tersebut.

  5. Hapus repositori Artifact Registry:

    gcloud artifacts repositories delete containers \
        --location=us-central1 --async
    

Selesai. Anda telah menyelesaikan panduan memulai ini.

Langkah selanjutnya