Men-deploy aplikasi ke GKE dan melihat insight keamanan

Pelajari cara men-deploy penampung yang sengaja rentan ke cluster GKE dan mendapatkan insight keamanan tentang kerentanan di dasbor postur keamanan. Dasbor postur keamanan GKE menampilkan informasi tentang kerentanan sistem operasi yang diketahui. Jika Anda juga ingin pemindaian bahasa untuk menemukan kerentanan dalam paket Go atau Java, lihat Mem-build aplikasi dan melihat insight keamanan.

Tujuan

  • Build dan kirim aplikasi dalam container ke Artifact Registry menggunakan Cloud Build.
  • Membuat pipeline pengiriman di Cloud Deploy.
  • Deploy aplikasi ke cluster GKE staging dan promosikan 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. 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.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Artifact Registry, Cloud Build, Cloud Deploy, Google Kubernetes Engine, Container Security, and Container Analysis APIs:

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

  10. Make sure that billing is enabled for your Google Cloud project.

  11. Enable the Artifact Registry, Cloud Build, Cloud Deploy, Google Kubernetes Engine, Container Security, and Container Analysis APIs:

    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

    cluster yang akan digunakan:

    gcloud iam service-accounts create sds-runtime \
        --display-name="Security insights 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}. \
        --role="roles/container.nodeServiceAccount"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member=serviceAccount:sds-runtime@${PROJECT_ID}. \
        --role="roles/clouddeploy.jobRunner"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member=serviceAccount:sds-runtime@${PROJECT_ID}. \
        --role="roles/container.developer"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member=serviceAccount:sds-runtime@${PROJECT_ID}. \
        --role="roles/artifactregistry.reader"
    
  6. Berikan akses akun layanan Compute Engine default 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@ \
        --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="Security insights 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. Di 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}.
gcloud container clusters create-auto prod-cluster \
    --region=us-central1 \
    --release-channel=rapid \
    --service-account=sds-runtime@${PROJECT_ID}.

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

Membangun image

Build dan kirim image menggunakan Cloud Build:

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

Setelah build selesai, output-nya akan terlihat seperti berikut:

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 Delivery pipelines di konsol Google Cloud:

    Buka Pipeline pengiriman

    Daftar pipeline 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 Promote di visualisasi dev-cluster.

  8. Di panel Promote release, klik Promote untuk mengonfirmasi promosi ke cluster produksi Anda.

  9. Untuk memverifikasi 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 menampilkan informasi tentang kerentanan dalam workload yang sedang berjalan setelah Anda men-deploy-nya ke cluster.

  1. Buka halaman Postur 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 untuk selesai.

  3. Di halaman Postur keamanan GKE, tinjau bagian Kerentanan OS Beban Kerja. Bagian ini mencantumkan CVE teratas yang memengaruhi workload yang di-deploy.

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

  5. Untuk mengetahui detail tentang kerentanan tertentu, klik nama masalah di tabel. Panel Vulnerability 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 direkomendasikan untuk memitigasi 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}.
    

Menghapus project

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Langkah selanjutnya