Insight Keamanan Runtime

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

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

ecdc43ada29e91b.png

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.

6356559df3eccdda.pngS

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.

7d9fd2213f3704c4.pngS

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.

62a9f5d26207e58e.pngS

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.

5b1b8158bc55ce67.pngS

Tinjau masalah Konfigurasi dan workload yang terpengaruh.

58e6f4b6d8eaa99a.pngS

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