Men-deploy aplikasi ke GKE dan melihat insight keamanan

Pelajari cara men-deploy container yang sengaja rentan ke cluster GKE dan dapatkan insight keamanan tentang kerentanan di dasbor postur keamanan. Dasbor postur keamanan GKE menampilkan informasi tentang kerentanan sistem operasi yang diketahui. Jika Anda juga menginginkan pemindaian bahasa untuk mendeteksi kerentanan dalam paket Go atau Java, lihat Membangun aplikasi dan melihat insight keamanan.

Tujuan

  • Bangun dan kirim aplikasi dalam container ke Artifact Registry menggunakan Cloud Build.
  • Membuat pipeline pengiriman di Cloud Deploy.
  • Men-deploy aplikasi ke cluster GKE staging dan mempromosikannya ke cluster produksi.
  • Lihat insight tentang kerentanan dalam aplikasi yang di-deploy menggunakan dasbor postur keamanan di Konsol Google Cloud.

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. To initialize the gcloud CLI, run the following command:

    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. Make sure that billing is enabled for your Google Cloud project.

  6. Aktifkan API Artifact Registry, Cloud Build, Cloud Deploy, Google Kubernetes Engine, Container Security, and Container Analysis:

    gcloud services enable artifactregistry.googleapis.com cloudbuild.googleapis.com clouddeploy.googleapis.com container.googleapis.com containersecurity.googleapis.com  containeranalysis.googleapis.com
  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    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. Make sure that billing is enabled for your Google Cloud project.

  11. Aktifkan API Artifact Registry, Cloud Build, Cloud Deploy, Google Kubernetes Engine, Container Security, and Container Analysis:

    gcloud services enable artifactregistry.googleapis.com cloudbuild.googleapis.com clouddeploy.googleapis.com container.googleapis.com containersecurity.googleapis.com  containeranalysis.googleapis.com

Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.

Menyiapkan lingkungan Anda

  1. Tetapkan project ID Anda sebagai variabel lingkungan:

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

    gcloud config set deploy/region us-central1
    
  3. Clone repositori GitHub yang berisi kode contoh untuk tugas ini:

    git clone https://github.com/googlecloudplatform/software-delivery-shield-demo-java.git
    cd ~/software-delivery-shield-demo-java/backend
    
  4. Membuat akun layanan IAM untuk GKE Anda

    untuk digunakan:

    gcloud iam service-accounts create sds-runtime \
        --display-name="SDS with GKE service account"
    
  5. Berikan izin ke akun layanan IAM:

    gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \
        --role="roles/container.nodeServiceAccount"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \
        --role="roles/clouddeploy.jobRunner"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \
        --role="roles/container.developer"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \
        --role="roles/artifactregistry.reader"
    
  6. Beri akun layanan Compute Engine default akses ke cluster GKE. Cloud Deploy menggunakan akses ini untuk men-deploy aplikasi ke cluster dalam pipeline pengiriman Anda.

    PROJECT_NUMBER="$(gcloud projects describe ${PROJECT_ID} --format='get(projectNumber)')"
    gcloud projects add-iam-policy-binding ${PROJECT_NUMBER} \
        --member=serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \
        --role=roles/container.developer
    

Membuat repositori Artifact Registry untuk image Anda

  1. Buat repositori:

    gcloud artifacts repositories create containers \
        --repository-format=docker \
        --location=us-central1 \
        --description="SDS with GKE repository"
    
  2. Pastikan repositori ada:

    gcloud artifacts repositories list \
        --location=us-central1 \
        --filter="REPOSITORY:containers"
    

    Output akan menampilkan repositori containers yang Anda buat.

Membuat cluster GKE

Buat dua cluster GKE, cluster staging bernama dev-cluster dan cluster produksi bernama prod-cluster. Dalam Autopilot, pemindaian kerentanan workload otomatis diaktifkan untuk cluster baru yang menjalankan versi 1.27 dan yang lebih baru. Jika Anda menggunakan cluster Standar, tentukan flag --workload-vulnerability-scanning=standard.

gcloud container clusters create-auto dev-cluster \
    --region=us-central1 \
    --release-channel=rapid \
    --service-account=sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com
gcloud container clusters create-auto prod-cluster \
    --region=us-central1 \
    --release-channel=rapid \
    --service-account=sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com

Pembuatan cluster dapat memerlukan waktu hingga lima menit. Anda juga dapat mengaktifkan pemindaian kerentanan workload dengan mengupdate cluster GKE yang ada.

Membangun image

Buat dan kirim image menggunakan Cloud Build:

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

Setelah build selesai, outputnya akan serupa dengan berikut ini:

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

Men-deploy image ke GKE menggunakan Cloud Deploy

  1. Perbarui file konfigurasi Cloud Deploy dengan project ID Anda:

    sed -i "s/PROJECT_ID/${PROJECT_ID}/g" clouddeploy.yaml
    
  2. Daftarkan pipeline dan target:

    gcloud deploy apply --file=clouddeploy.yaml
    
  3. Untuk memverifikasi bahwa pipeline Anda ada, buka halaman Pipeline pengiriman di Konsol Google Cloud:

    Buka pipeline Pengiriman

    Daftar pipeline akan menampilkan pipeline baru Anda, guestbook-app-delivery.

  4. Klik nama pipeline untuk memantau progres. Halaman Detail pipeline pengiriman akan terbuka.

  5. Buat rilis baru di Cloud Deploy:

    gcloud deploy releases create guestbook-release-001 \
        --delivery-pipeline=guestbook-app-delivery \
        --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.

  6. Di halaman Detail pipeline pengiriman, pantau tampilan Visualisasi Pipeline hingga tombol Promosikan ditampilkan untuk dev-cluster. Anda mungkin perlu memuat ulang halaman.

  7. Klik Promosikan di visualisasi dev-cluster.

  8. Di panel Promosikan rilis, klik Promosikan untuk mengonfirmasi promosi ke cluster produksi Anda.

  9. Untuk memastikan bahwa rilis Anda berhasil, periksa bagian Rilis. Kolom Status peluncuran terakhir menampilkan Successfully deployed to prod-cluster.

Lihat kerentanan

Di bagian ini, lihat insight kerentanan OS menggunakan dasbor postur keamanan. Dasbor ini menampilkan informasi tentang kerentanan dalam workload yang sedang berjalan setelah Anda men-deploy-nya ke cluster.

  1. Buka halaman pasangan keamanan GKE di Konsol Google Cloud.

    Buka postur keamanan GKE

  2. Untuk melihat hasil pemindaian, muat ulang halaman. Pemindaian awal mungkin memerlukan waktu hingga 15 menit.

  3. Di halaman Postur keamanan GKE, tinjau bagian Kerentanan Workload OS. Bagian ini mencantumkan CVE teratas yang memengaruhi beban kerja yang di-deploy.

  4. Untuk mengetahui detailnya, klik Lihat semua masalah kerentanan. Tab Concerns akan terbuka dan menerapkan filter untuk jenis masalah Kerentanan. Tabel ini menunjukkan ringkasan dari setiap kerentanan dan dampaknya.

  5. Untuk mengetahui detail tentang kerentanan tertentu, klik nama masalah yang dimaksud dalam tabel. Panel Kerentanan akan terbuka. Di panel ini, Anda dapat melakukan hal berikut:

    • Baca deskripsi mendetail tentang CVE, termasuk versi, paket, dan skor CVSS yang terpengaruh.
    • Lihat tindakan yang disarankan untuk mengurangi masalah, seperti dokumentasi dan informasi versi patch.
    • Lihat workload tertentu yang terpengaruh oleh kerentanan di tab workload yang terpengaruh.

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.

Menghapus resource satu per satu

  1. Hapus pipeline Cloud Deploy:

    gcloud deploy delivery-pipelines delete guestbook-app-delivery --force
    
  2. Hapus cluster GKE:

    gcloud container clusters delete dev-cluster \
        --region=us-central1
    gcloud container clusters delete prod-cluster \
        --region=us-central1
    
  3. Hapus repositori Artifact Registry:

    gcloud artifacts repositories delete containers \
        --location=us-central1
    
  4. Hapus akun layanan IAM:

    gcloud iam service-accounts delete sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com
    

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