1. บทนำ
ในแล็บนี้ คุณจะได้ทำให้แอปพลิเคชันใช้งานได้ใน Cloud Run และคลัสเตอร์ GKE รวมถึงดูข้อมูลเชิงลึกด้านความปลอดภัยสำหรับการทำให้ใช้งานได้ใน Software Delivery Shield Security
สิ่งที่คุณจะได้เรียนรู้
- ข้อมูลเชิงลึกด้านความปลอดภัยของ Artifact Registry
- ข้อมูลเชิงลึกด้านความปลอดภัยของ Cloud Run
- ท่าทางด้านความปลอดภัยของ GKE
2. การตั้งค่าและข้อกำหนด
การตั้งค่าโปรเจ็กต์ Cloud
- ลงชื่อเข้าใช้ Google Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี



- ชื่อโปรเจ็กต์คือชื่อที่แสดงสำหรับผู้เข้าร่วมโปรเจ็กต์นี้ ซึ่งเป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ โดยคุณจะอัปเดตได้ทุกเมื่อ
- รหัสโปรเจ็กต์จะไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและเปลี่ยนแปลงไม่ได้ (เปลี่ยนไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งโดยปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นคืออะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยปกติจะระบุเป็น
PROJECT_ID) หากไม่ชอบรหัสที่สร้างขึ้น คุณก็สร้างรหัสแบบสุ่มอีกรหัสหนึ่งได้ หรือคุณจะลองใช้ชื่อของคุณเองเพื่อดูว่าพร้อมใช้งานหรือไม่ก็ได้ คุณจะเปลี่ยนแปลงรหัสนี้หลังจากขั้นตอนนี้ไม่ได้ และรหัสจะยังคงอยู่ตลอดระยะเวลาของโปรเจ็กต์ - โปรดทราบว่ายังมีค่าที่ 3 ซึ่งคือหมายเลขโปรเจ็กต์ที่ API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 นี้ได้ในเอกสารประกอบ
- จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของ Cloud การทำตาม Codelab นี้ไม่ควรมีค่าใช้จ่ายมากนัก หรืออาจไม่มีเลย หากต้องการปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่สร้างขึ้นหรือลบทั้งโปรเจ็กต์ได้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD
การตั้งค่าสภาพแวดล้อม
เปิดใช้งาน Cloud Shell โดยคลิกไอคอนทางด้านขวาของแถบค้นหา

จาก Cloud Shell ให้เปิดใช้ API ที่จำเป็นสำหรับแล็บนี้
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com \
container.googleapis.com \
containersecurity.googleapis.com
หากระบบแจ้งให้ให้สิทธิ์ ให้คลิก "ให้สิทธิ์" เพื่อดำเนินการต่อ

ซึ่งควรจะแสดงข้อความว่าดำเนินการสำเร็จคล้ายกับข้อความนี้
Operation "operations/acf.p2-327036483151-73d90d00-47ee-447a-b600-a6badf0eceae" finished successfully.
เรียกใช้คำสั่งเพื่อสร้างคลัสเตอร์ GKE แบบไม่พร้อมกัน โดยจะใช้ในภายหลังใน Lab ดังนี้
gcloud beta container clusters create gke-cluster \
--zone us-central1-a \
--async
3. เตรียมแอปพลิเคชัน
ก่อนอื่น คุณจะต้องเตรียมแอปพลิเคชัน Node.js แบบง่ายที่อิงตาม Express ซึ่งตอบสนองต่อคำขอ HTTP
สร้างไดเรกทอรีใหม่ชื่อ starter-nodejs ใน Cloud Shell แล้วเปลี่ยนไปที่ไดเรกทอรีนั้นโดยใช้คำสั่งต่อไปนี้
mkdir starter-nodejs
cd starter-nodejs
สร้างไฟล์ package.json โดยเรียกใช้คำสั่งด้านล่าง
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
ไฟล์ด้านบนมีคำสั่งสคริปต์เริ่มต้นและทรัพยากร Dependency บนเฟรมเวิร์กเว็บแอปพลิเคชัน Express
จากนั้นในไดเรกทอรีเดียวกัน ให้สร้างไฟล์ index.js โดยเรียกใช้คำสั่งด้านล่าง
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
โค้ดนี้จะสร้างเว็บเซิร์ฟเวอร์พื้นฐานที่รอฟังพอร์ตซึ่งกำหนดโดยตัวแปรสภาพแวดล้อมของพอร์ต ตอนนี้แอปของคุณเสร็จสมบูรณ์แล้วและพร้อมที่จะทำเป็นคอนเทนเนอร์และนำไปใช้งาน
4. ทำให้ใช้งานได้แอปพลิเคชัน Cloud Run
เรียกใช้คำสั่งด้านล่างเพื่อทำให้แอปพลิเคชันใช้งานได้
gcloud run deploy starter-app \
--source . \
--region us-central1 \
--allow-unauthenticated \
--max-instances=3
ยืนยันการสร้างที่เก็บ 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 และ Cloud Build
การบิลด์จะใช้เวลาสักครู่จึงจะเสร็จสมบูรณ์
เปิด Cloud Build แล้วตรวจสอบอาร์ติแฟกต์ของบิลด์สำหรับบิลด์ล่าสุด
UI ของ Cloud Build ในคอนโซล Google Cloud มีแผงข้อมูลเชิงลึกด้านความปลอดภัยของ Software Delivery Shield ซึ่งแสดงข้อมูลความปลอดภัยที่เกี่ยวข้องกับการสร้าง เช่น ระดับ SLSA, ช่องโหว่ในทรัพยากร Dependency และที่มาของการสร้าง

ตรวจสอบข้อมูลเชิงลึกด้านความปลอดภัยสำหรับอิมเมจคอนเทนเนอร์ที่สร้างขึ้น คลิกลิงก์สำหรับอาร์ติแฟกต์ที่สแกนเพื่อดูรายละเอียดช่องโหว่ของอิมเมจนี้ใน Artifact Registry
กลับไปที่คอนโซล Cloud Shell แล้วตรวจสอบว่าการทําให้แอปพลิเคชัน Cloud Run ใช้งานได้เสร็จสมบูรณ์แล้ว
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. ข้อมูลเชิงลึกด้านความปลอดภัยของ Cloud Run
Cloud Run มีแผงความปลอดภัย (ตัวอย่าง) ที่แสดงข้อมูลเชิงลึกด้านความปลอดภัยของซัพพลายเชนซอฟต์แวร์ เช่น ข้อมูลการปฏิบัติตามข้อกำหนดระดับการสร้าง SLSA, แหล่งที่มาของการสร้าง และช่องโหว่ที่พบในบริการที่ทำงานอยู่
เปิด Cloud Run แล้วตรวจสอบข้อมูลเชิงลึกด้านความปลอดภัยในแท็บ REVISIONS / SECURITY

แผงนี้จะแสดงข้อมูลต่อไปนี้
- ข้อมูลประจำตัวและการเข้ารหัส: อีเมลของบัญชีบริการเริ่มต้นของ Compute Engine และคีย์การเข้ารหัสที่ใช้สำหรับการติดตั้งใช้งาน
- ระดับ SLSA: บิลด์นี้อยู่ที่ระดับ SLSA 3 ซึ่งระบุระดับความพร้อมของกระบวนการบิลด์ซอฟต์แวร์ตามข้อกำหนด SLSA
- ช่องโหว่: ช่องโหว่ที่พบในการอ้างอิงของแอปพลิเคชัน
- รายละเอียดบิลด์: รายละเอียดของบิลด์ เช่น เครื่องมือสร้างและลิงก์เพื่อดูบันทึก
- สร้างที่มา: ที่มาของบิลด์ ซึ่งเป็นชุดข้อมูลเมตาที่ตรวจสอบได้เกี่ยวกับบิลด์ ซึ่งรวมถึงรายละเอียดต่างๆ เช่น ไดเจสต์ของอิมเมจที่สร้างขึ้น ตำแหน่งแหล่งที่มาของอินพุต เครื่องมือเชนสำหรับการสร้าง ขั้นตอนการสร้าง และระยะเวลาการสร้าง
7. ท่าทางด้านความปลอดภัยของ GKE
GKE สามารถประเมินระดับความปลอดภัยของคอนเทนเนอร์และให้คำแนะนำที่ใช้งานได้จริงเกี่ยวกับการตั้งค่าคลัสเตอร์ การกำหนดค่าเวิร์กโหลด และช่องโหว่ ซึ่งรวมถึงแดชบอร์ดระดับความปลอดภัย (ตัวอย่าง) ที่สแกนคลัสเตอร์และเวิร์กโหลด GKE เพื่อให้คำแนะนำที่นำไปใช้ได้จริงและมีเหตุผลเพื่อปรับปรุงระดับความปลอดภัย
ในขั้นตอนถัดไป คุณจะทำให้ใช้งานแอปพลิเคชันในคลัสเตอร์ GKE และตรวจสอบข้อมูลเชิงลึกด้านความปลอดภัยในแดชบอร์ดท่าทางด้านความปลอดภัยของ GKE
ตรวจสอบว่าคลัสเตอร์พร้อมใช้งานโดยเรียกใช้คำสั่งต่อไปนี้
gcloud beta container clusters list
ตัวอย่างเอาต์พุต
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
รับข้อมูลเข้าสู่ระบบและการกำหนดค่าสำหรับคลัสเตอร์ GKE โดยใช้คำสั่งต่อไปนี้
gcloud container clusters get-credentials gke-cluster \
--region=us-central1-a
เรียกใช้คำสั่งเพื่อติดตั้งใช้งานแอปพลิเคชันโดยใช้อิมเมจที่สร้างขึ้นในขั้นตอนก่อนหน้า
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
ปริมาณงาน GKE ควรมีการกำหนดค่าที่เพิ่มความปลอดภัยซึ่งจำกัดพื้นผิวการโจมตี การตรวจสอบภาระงานในคลัสเตอร์เพื่อหาปัญหาการกำหนดค่าด้วยตนเองในวงกว้างอาจทำได้ยาก คุณสามารถใช้แดชบอร์ดระดับความปลอดภัยเพื่อสแกนการกำหนดค่าของภาระงานที่ทำงานทั้งหมดในหลายคลัสเตอร์โดยอัตโนมัติ และแสดงผลลัพธ์ที่มีคะแนนซึ่งนำไปปฏิบัติได้ รวมถึงคำแนะนำที่อิงตามความคิดเห็นเพื่อปรับปรุงระดับความปลอดภัย
เปิดใช้การสแกนการกำหนดค่าเวิร์กโหลด
gcloud beta container clusters update gke-cluster \
--region=us-central1-a \
--enable-workload-config-audit
นอกจากการสแกนการกำหนดค่าภาระงานแล้ว คุณยังเปิดใช้การสแกนช่องโหว่ของภาระงานและตรวจสอบผลลัพธ์ในแดชบอร์ดท่าทางด้านความปลอดภัยได้ด้วย ซึ่งเป็นชุดฟีเจอร์ที่ให้ข้อมูลและความคิดเห็นที่แนะนำเพื่อปรับปรุงความปลอดภัยของคลัสเตอร์และภาระงาน GKE
GKE จะสแกนอิมเมจคอนเทนเนอร์ในพ็อดที่มีสิทธิ์ทั้งหมดที่ทำงานในคลัสเตอร์ GKE โดยอัตโนมัติเพื่อหาช่องโหว่ที่ทราบ โดยใช้ข้อมูลช่องโหว่จากฐานข้อมูล CVE สาธารณะ เช่น NIST
หากพบช่องโหว่ในอิมเมจคอนเทนเนอร์ GKE จะกำหนดระดับความรุนแรงและแสดงผลลัพธ์ในแดชบอร์ดท่าทางด้านความปลอดภัยในคอนโซล Google Cloud นอกจากนี้ GKE ยังเพิ่มรายการลงใน Cloud Logging เพื่อการตรวจสอบและการตรวจสอบย้อนกลับด้วย
เปิดใช้การสแกนช่องโหว่ของเวิร์กโหลด
gcloud beta container clusters update gke-cluster \
--region=us-central1-a \
--enable-workload-vulnerability-scanning \
--async
เปิดหน้าท่าทางด้านความปลอดภัยของ GKE
รอสักครู่เพื่อให้การตรวจสอบปริมาณงานเสร็จสมบูรณ์ แล้วตรวจสอบผลลัพธ์

ตรวจสอบข้อกังวลเกี่ยวกับการกำหนดค่าและเวิร์กโหลดที่ได้รับผลกระทบ

เหตุผลที่ควรใช้แดชบอร์ดท่าทางด้านความปลอดภัย
แดชบอร์ดท่าทางการรักษาความปลอดภัยเป็นมาตรการรักษาความปลอดภัยพื้นฐานที่คุณเปิดใช้ได้กับคลัสเตอร์ GKE ที่มีสิทธิ์ Google Cloud ขอแนะนำให้ใช้แดชบอร์ดท่าทางการรักษาความปลอดภัยในคลัสเตอร์ทั้งหมดด้วยเหตุผลต่อไปนี้
- การหยุดชะงักน้อยที่สุด: ฟีเจอร์จะไม่รบกวนหรือขัดขวางเวิร์กโหลดที่ทำงานอยู่
- คำแนะนำที่นำไปปฏิบัติได้: เมื่อพร้อมใช้งาน แดชบอร์ดท่าทางด้านความปลอดภัยจะแสดงรายการการทำงานเพื่อแก้ไขข้อกังวลที่พบ การดำเนินการเหล่านี้รวมถึงคำสั่งที่คุณเรียกใช้ได้ ตัวอย่างการเปลี่ยนแปลงการกำหนดค่าที่ต้องทำ และคำแนะนำเกี่ยวกับสิ่งที่ควรทำเพื่อลดช่องโหว่
- การแสดงภาพ: แดชบอร์ดท่าทางด้านความปลอดภัยจะแสดงภาพรวมของข้อกังวลที่ส่งผลต่อคลัสเตอร์ในโปรเจ็กต์ รวมถึงแผนภูมิและกราฟเพื่อแสดงความคืบหน้าที่คุณทำได้และผลกระทบที่อาจเกิดขึ้นจากข้อกังวลแต่ละอย่าง
- ผลลัพธ์ที่อิงตามความคิดเห็น: GKE จะกำหนดระดับความรุนแรงให้กับข้อกังวลที่พบโดยอิงตามความเชี่ยวชาญของทีมรักษาความปลอดภัยของ Google และมาตรฐานอุตสาหกรรม
- บันทึกเหตุการณ์ที่ตรวจสอบได้: GKE จะเพิ่มข้อกังวลที่พบทั้งหมดลงใน Logging เพื่อให้รายงานและการสังเกตการณ์ดีขึ้น
8. ยินดีด้วย
ยินดีด้วย คุณทำ Codelab เสร็จแล้ว
สิ่งที่เราได้พูดถึงไปแล้ว
- ข้อมูลเชิงลึกด้านความปลอดภัยสำหรับอาร์ติแฟกต์บิลด์และแอปพลิเคชันที่ทำงานบน Cloud Run และ GKE
ล้างข้อมูล
โปรดลบโปรเจ็กต์ที่มีทรัพยากรหรือเก็บโปรเจ็กต์ไว้และลบทรัพยากรแต่ละรายการเพื่อหลีกเลี่ยงการเรียกเก็บเงินจากบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ในบทแนะนำนี้
การลบโปรเจ็กต์
วิธีที่ง่ายที่สุดในการยกเลิกการเรียกเก็บเงินคือการลบโปรเจ็กต์ที่คุณสร้างขึ้นสำหรับบทแนะนำ
—
อัปเดตล่าสุด: 21/3/23