Men-deploy aplikasi ke GKE dan melihat insight keamanan
Pelajari cara men-deploy container yang sengaja dibuat 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 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.
- Buat 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
- 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.
-
Install the Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init
-
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.
-
-
Verify that billing is enabled for your Google Cloud project.
-
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 -
Install the Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init
-
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.
-
-
Verify that billing is enabled for your Google Cloud project.
-
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 Tetapkan project ID Anda sebagai variabel lingkungan:
export PROJECT_ID=$(gcloud config get project)
Tetapkan region Google Cloud default untuk Cloud Deploy:
gcloud config set deploy/region us-central1
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
Buat akun layanan IAM untuk GKE Anda
cluster yang akan digunakan:
gcloud iam service-accounts create sds-runtime \ --display-name="Security insights with GKE service account"
Memberikan 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"
Beri akun layanan Compute Engine default akses ke cluster GKE. Cloud Deploy menggunakan akses ini untuk men-deploy aplikasi ke cluster di 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
Buat repositori:
gcloud artifacts repositories create containers \ --repository-format=docker \ --location=us-central1 \ --description="Security insights with GKE repository"
Pastikan repositori ada:
gcloud artifacts repositories list \ --location=us-central1 \ --filter="REPOSITORY:containers"
Output akan menampilkan repositori
containers
yang Anda buat.Perbarui file konfigurasi Cloud Deploy dengan project ID Anda:
sed -i "s/PROJECT_ID/${PROJECT_ID}/g" clouddeploy.yaml
Daftarkan pipeline dan target:
gcloud deploy apply --file=clouddeploy.yaml
Untuk memverifikasi bahwa pipeline Anda ada, buka halaman Delivery pipelines di konsol Google Cloud :
Daftar pipeline menampilkan pipeline baru Anda,
guestbook-app-delivery
.Klik nama pipeline untuk memantau progres. Halaman Detail pipeline pengiriman akan terbuka.
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 pada halaman Detail pipeline pengiriman.
Di halaman Delivery pipeline details, pantau tampilan Pipeline visualization hingga tombol Promote ditampilkan untuk
dev-cluster
. Anda mungkin perlu memuat ulang halaman.Klik Promote di visualisasi
dev-cluster
.Di panel Promosikan rilis, klik Promosikan untuk mengonfirmasi promosi ke cluster produksi Anda.
Untuk memverifikasi bahwa rilis Anda berhasil, periksa bagian Rilis. Kolom Status peluncuran terakhir menampilkan
Successfully deployed to prod-cluster
.Buka halaman GKE security posture di konsol Google Cloud .
Untuk melihat hasil pemindaian, muat ulang halaman. Pemindaian awal mungkin memerlukan waktu hingga 15 menit untuk selesai.
Di halaman Postur keamanan GKE, tinjau bagian Kerentanan OS workload. Bagian ini mencantumkan CVE teratas yang memengaruhi workload yang di-deploy.
Untuk mengetahui detailnya, klik Lihat semua masalah kerentanan. Tab Masalah akan terbuka dan menerapkan filter untuk jenis masalah Kerentanan. Tabel menampilkan ringkasan setiap kerentanan dan dampaknya.
Untuk mengetahui detail tentang kerentanan tertentu, klik nama masalah di tabel. Panel Kerentanan akan terbuka. Di panel ini, Anda dapat melakukan hal berikut:
- Baca deskripsi mendetail CVE, termasuk versi dan paket yang terpengaruh, serta skor CVSS.
- 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.
Hapus pipeline Cloud Deploy:
gcloud deploy delivery-pipelines delete guestbook-app-delivery --force
Hapus cluster GKE:
gcloud container clusters delete dev-cluster \ --region=us-central1 gcloud container clusters delete prod-cluster \ --region=us-central1
Hapus repositori Artifact Registry:
gcloud artifacts repositories delete containers \ --location=us-central1
Hapus akun layanan IAM:
gcloud iam service-accounts delete sds-runtime@${PROJECT_ID}.
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
Buat repositori Artifact Registry untuk image Anda
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 Standard, 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 memakan waktu hingga lima menit. Anda juga dapat mengaktifkan pemindaian kerentanan workload dengan mengupdate cluster GKE yang ada.
Membangun image
Bangun dan kirimkan image menggunakan Cloud Build:
gcloud builds submit --region us-central1 --config cloudbuild.yaml
Setelah build selesai, output-nya akan mirip 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
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.
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.
Menghapus resource satu per satu
Menghapus project
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID