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 tab Keamanan di konsolGoogle Cloud . Anda akan:

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

    • Informasi identitas dan enkripsi untuk deployment.
    • Tingkat 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. Hal ini mencakup detail seperti ringkasan gambar yang dibuat, lokasi sumber input, toolchain build, langkah-langkah build, dan durasi build.

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. Install the Google Cloud CLI.

  3. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  4. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  5. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Verify that billing is enabled for your Google Cloud project.

  7. 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
  8. Install the Google Cloud CLI.

  9. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  10. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  11. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  12. Verify that billing is enabled for your Google Cloud project.

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

    Memberikan peran IAM ke akun layanan Compute Engine default. Hal ini diperlukan agar Cloud Deploy dapat men-deploy beban kerja 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 Anda 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 "Docker repository":

      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 memerlukan beberapa kode sumber contoh untuk dibuat dan di-deploy. Di bagian ini, Anda akan meng-clone repositori sumber yang ada yang berisi contoh kode Java.

    1. Buat 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. Perbarui 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 akan membangun dan memasukkan aplikasi Java ke dalam container, serta menyimpan container yang dibangun di repositori Docker Artifact Registry:

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

      Setelah build selesai, Anda akan melihat pesan status berhasil yang mirip dengan 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
      

    Buat SBOM untuk image yang dibuat

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

    Buat SBOM untuk image yang Anda buat 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
      

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

    2. Untuk memverifikasi bahwa pipeline Anda ada, buka halaman Delivery pipelines di konsol Google Cloud :

      Buka halaman Delivery pipelines

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

    3. Klik cloudrun-guestbook-backend-delivery untuk memantau progres. Halaman Delivery pipeline details 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. Halaman ini menampilkan detail target yang Anda promosikan.

    7. Klik Promote.

      Rilis kini diantrekan untuk di-deploy ke cloudrun-prod. Setelah deployment selesai, visualisasi pipeline pengiriman akan menunjukkannya sebagai di-deploy:

      Pipeline yang menunjukkan promosi dari cloudrun-dev ke cloudrun-prod

    Melihat insight keamanan di Cloud Deploy

    1. Buka halaman Delivery pipelines Cloud Deploy di konsolGoogle Cloud .

      Buka halaman Cloud Deploy

    2. Di tabel Delivery pipelines, klik cloudrun-guestbook-backend-delivery.

    3. Di halaman Delivery pipelines details, klik test-release-008.

    4. Di halaman Detail rilis, klik tab Artefak.

    5. Di tabel Build artifacts, temukan baris dengan artefak java-guestbook-backend, dan di kolom Security insights yang sesuai, klik View.

    Anda akan melihat tab Keamanan untuk deployment.

    Tab keamanan

    Tab ini menampilkan informasi berikut di bagian Insight keamanan:

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

    • Kerentanan: Kerentanan apa pun yang ditemukan di artefak Anda. Klik nama gambar (java-guestbook-backend) untuk melihat artefak yang telah dipindai untuk mengetahui kerentanan.

    • Dependensi untuk artefak build.

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

    Melihat insight keamanan di Cloud Run

    1. Buka halaman Services Cloud Run.

      Buka halaman Layanan Cloud Run

    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 tab Keamanan untuk deployment.

    Tab keamanan

    Tab ini menampilkan informasi berikut di bagian Insight keamanan:

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

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

    • Kerentanan: Kerentanan apa pun yang ditemukan di artefak Anda. Klik nama gambar (java-guestbook-backend) untuk melihat artefak yang telah dipindai untuk mengetahui kerentanan.

    • Dependensi 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 di 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. Hapus 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, serta semua resource release dan rollout yang dibuat oleh Keamanan supply chain software 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 berikutnya