1. Pengantar
Di lab ini, Anda akan men-deploy aplikasi ke cluster Cloud Run dan GKE, serta melihat insight keamanan untuk deployment di Software Delivery Shield Security
Yang akan Anda pelajari
- Insight Keamanan Artifact Registry
- Insight Keamanan Cloud Run
- Postur Keamanan GKE
2. Penyiapan dan Persyaratan
Penyiapan Project Cloud
- Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.
- Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
- Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak
peduli tentang apa itu. Di sebagian besar codelab, Anda harus mereferensikan Project ID (biasanya diidentifikasi sebagai
PROJECT_ID
). Jika Anda tidak menyukai ID yang dihasilkan, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri dan lihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan akan tetap ada selama durasi project. - Sebagai informasi, ada nilai ketiga, Project Number yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
- Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Untuk mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus seluruh project. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.
Penyiapan Lingkungan
Aktifkan Cloud Shell dengan mengklik ikon di sebelah kanan kotak penelusuran.
Dari Cloud Shell, aktifkan API yang diperlukan untuk lab ini:
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com \
container.googleapis.com \
containersecurity.googleapis.com
Jika diminta untuk memberi otorisasi, klik "Authorize" untuk melanjutkan.
Perintah di atas akan menampilkan pesan seperti berikut yang menandakan bahwa proses berhasil:
Operation "operations/acf.p2-327036483151-73d90d00-47ee-447a-b600-a6badf0eceae" finished successfully.
Jalankan perintah untuk membuat cluster GKE secara asinkron. Nantinya akan digunakan di lab:
gcloud beta container clusters create gke-cluster \
--zone us-central1-a \
--async
3. Siapkan Permohonan
Pertama, Anda akan menyiapkan aplikasi Node.js sederhana berbasis express yang merespons permintaan HTTP.
Di Cloud Shell, buat direktori baru bernama starter-nodejs
, lalu beralihlah ke direktori tersebut:
mkdir starter-nodejs
cd starter-nodejs
Buat file package.json
, dengan menjalankan perintah di bawah:
cat > ./package.json << EOF
{
"name": "cloudrun-starter-app",
"version": "1.0.0",
"description": "Node.js Starter Application",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"author": "",
"license": "Apache-2.0",
"dependencies": {
"express": "^4.18.2"
}
}
EOF
File di atas berisi perintah mulai skrip dan dependensi pada framework aplikasi web Express.
Berikutnya, di direktori yang sama, buat file index.js
dengan menjalankan perintah di bawah:
cat > ./index.js << EOF
const express = require('express');
const app = express();
app.get('/', (req, res) => {
console.log('Received a request.');
res.send("Hello Cloud Run!");
});
const port = process.env.PORT || 8080;
app.listen(port, () => {
console.log('Listening on port', port);
});
EOF
Kode ini akan menghasilkan server web dasar yang memantau port yang ditentukan oleh variabel lingkungan PORT. Aplikasi Anda kini sudah jadi dan siap dimasukkan ke dalam container serta di-deploy.
4. Men-deploy Aplikasi Cloud Run
Jalankan perintah di bawah ini untuk men-deploy aplikasi Anda:
gcloud run deploy starter-app \
--source . \
--region us-central1 \
--allow-unauthenticated \
--max-instances=3
Konfirmasi pembuatan repositori Artifact Registry:
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [us-central1] will be created. Do you want to continue (Y/n)? y
5. Artifact Registry dan Insight Keamanan Cloud Build
Diperlukan waktu beberapa menit untuk menyelesaikan build.
Buka Cloud Build dan tinjau artefak build untuk build terbaru.
UI Cloud Build di Konsol Google Cloud berisi panel insight Software Delivery Shield Security yang menampilkan informasi keamanan terkait build seperti level SLSA, kerentanan apa pun dalam dependensi, dan sumber build.
Meninjau Insight Keamanan untuk image container yang dibuat. Ikuti link untuk artefak yang dipindai guna melihat detail kerentanan untuk image ini di Artifact Registry.
Kembali ke konsol Cloud Shell dan pastikan deployment aplikasi Cloud Run sudah selesai.
Done. Service [starter-app] revision [starter-app-00001-maw] has been deployed and is serving 100 percent of traffic. Service URL: https://starter-app-nin5jpgefq-uc.a.run.app
6. Insight Keamanan Cloud Run
Cloud Run berisi panel keamanan (Pratinjau) yang menampilkan insight keamanan supply chain software seperti info kepatuhan tingkat build SLSA, asal build, dan kerentanan yang ditemukan di layanan yang sedang berjalan.
Buka Cloud Run dan tinjau Security Insights pada tab REVISI / KEAMANAN.
Panel ini menampilkan informasi berikut:
- Identitas dan enkripsi: Alamat email akun layanan Compute Engine default dan kunci enkripsi yang digunakan untuk deployment.
- SLSA Level: Build ini berada pada SLSA Level 3, yang mengidentifikasi tingkat kematangan proses build software sesuai dengan spesifikasi SLSA
- Kerentanan: Kerentanan yang ditemukan dalam dependensi aplikasi.
- Detail build: Detail build seperti builder dan link untuk melihat log.
- Asal build: Terbukti untuk build, yang merupakan kumpulan metadata yang dapat diverifikasi tentang build. Paket ini mencakup detail seperti ringkasan image yang dibangun, lokasi sumber input, toolchain build, langkah-langkah build, dan durasi build.
7. Postur Keamanan GKE
GKE dapat menilai postur keamanan container Anda dan memberikan panduan aktif seputar setelan cluster, konfigurasi workload, dan kerentanan. Alat ini mencakup dasbor postur keamanan (Pratinjau), yang memindai cluster dan workload GKE Anda untuk memberi Anda rekomendasi yang tegas dan dapat ditindaklanjuti guna meningkatkan postur keamanan Anda.
Pada langkah berikutnya, Anda akan men-deploy aplikasi ke cluster GKE dan meninjau insight keamanan di dasbor postur keamanan GKE.
Pastikan cluster sudah siap dengan menjalankan perintah berikut:
gcloud beta container clusters list
Contoh output:
NAME: gke-cluster LOCATION: us-central1-a MASTER_VERSION: 1.24.9-gke.3200 MASTER_IP: 34.29.226.228 MACHINE_TYPE: e2-medium NODE_VERSION: 1.24.9-gke.3200 NUM_NODES: 3 STATUS: RUNNING
Dapatkan kredensial dan konfigurasi untuk cluster GKE:
gcloud container clusters get-credentials gke-cluster \
--region=us-central1-a
Jalankan perintah untuk men-deploy aplikasi menggunakan image yang di-build di langkah sebelumnya:
export PROJECT_ID=$(gcloud config get-value project)
kubectl run starter-app \
--image us-central1-docker.pkg.dev/${PROJECT_ID}/cloud-run-source-deploy/starter-app:latest \
--port 8080
Workload GKE idealnya memiliki konfigurasi yang telah melalui proses hardening yang membatasi permukaan serangannya. Memeriksa beban kerja di seluruh cluster untuk masalah konfigurasi bisa jadi sulit dilakukan secara manual dalam skala besar. Anda dapat menggunakan dasbor postur keamanan untuk otomatis memindai konfigurasi semua workload yang sedang berjalan di berbagai cluster serta menampilkan hasil skor yang dapat ditindaklanjuti dan rekomendasi untuk meningkatkan postur keamanan Anda.
Aktifkan pemindaian konfigurasi workload:
gcloud beta container clusters update gke-cluster \
--region=us-central1-a \
--enable-workload-config-audit
Selain memindai konfigurasi workload, Anda juga dapat mengaktifkan pemindaian kerentanan workload dan meninjau hasilnya di dasbor postur keamanan. Ini merupakan serangkaian fitur yang memberikan informasi dan rekomendasi yang tegas untuk meningkatkan keamanan cluster dan workload GKE Anda.
GKE otomatis memindai image container di setiap Pod yang memenuhi syarat dan berjalan di cluster GKE Anda untuk mendeteksi kerentanan umum, menggunakan data kerentanan dari database CVE publik seperti NIST.
Jika kerentanan ditemukan di image container Anda, GKE akan menetapkan rating tingkat keparahan dan menampilkan hasilnya di dasbor postur keamanan di Konsol Google Cloud. GKE juga menambahkan entri ke Cloud Logging untuk keperluan audit dan pelacakan.
Aktifkan pemindaian kerentanan workload:
gcloud beta container clusters update gke-cluster \
--region=us-central1-a \
--enable-workload-vulnerability-scanning \
--async
Buka halaman Postur Keamanan GKE.
Tunggu beberapa menit sampai audit beban kerja selesai dan kemudian tinjau hasilnya.
Tinjau masalah Konfigurasi dan workload yang terpengaruh.
Alasan menggunakan dasbor postur keamanan
Dasbor postur keamanan adalah langkah keamanan dasar yang dapat Anda aktifkan untuk semua cluster GKE yang memenuhi syarat. Google Cloud merekomendasikan penggunaan dasbor postur keamanan di semua cluster Anda karena alasan berikut:
- Gangguan minimal: Fitur tidak mengganggu atau mengganggu workload yang berjalan.
- Rekomendasi yang dapat ditindaklanjuti: Jika tersedia, dasbor postur keamanan akan menyediakan item tindakan untuk memperbaiki masalah yang ditemukan. Tindakan ini termasuk perintah yang dapat Anda jalankan, contoh perubahan konfigurasi yang harus dilakukan, dan saran tentang apa yang harus dilakukan untuk mengurangi kerentanan.
- Visualisasi: Dasbor postur keamanan memberikan visualisasi tingkat tinggi mengenai permasalahan yang memengaruhi cluster di seluruh proyek Anda, dan menyertakan diagram dan grafik untuk menunjukkan progres yang telah Anda buat dan potensi dampak dari setiap kekhawatiran.
- Hasil opini: GKE menetapkan rating tingkat keparahan untuk masalah yang ditemukan berdasarkan keahlian tim keamanan dan standar industri Google.
- Log peristiwa yang dapat diaudit: GKE menambahkan semua masalah yang ditemukan ke Logging untuk meningkatkan kemampuan observasi dan pelaporan.
8. Selamat!
Selamat! Anda telah menyelesaikan codelab.
Yang telah kita bahas:
- Informasi Security Insights untuk artefak build dan aplikasi yang berjalan di Cloud Run dan GKE
Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource, atau simpan project dan hapus resource satu per satu.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
—
Terakhir diperbarui: 21/3/23