1. Giới thiệu
Trong phòng thí nghiệm này, bạn sẽ triển khai một ứng dụng vào cụm Cloud Run và GKE, đồng thời xem thông tin chi tiết về bảo mật cho quá trình triển khai trong phần Bảo mật của Software Delivery Shield
Kiến thức bạn sẽ học được
- Thông tin chi tiết về bảo mật của Artifact Registry
- Thông tin chi tiết về bảo mật của Cloud Run
- Tình trạng bảo mật của GKE
2. Thiết lập và yêu cầu
Thiết lập dự án trên Cloud
- Đăng nhập vào Google Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.



- Tên dự án là tên hiển thị cho những người tham gia dự án này. Đây là một chuỗi ký tự mà các API của Google không sử dụng. Bạn có thể cập nhật tên này bất cứ lúc nào.
- Mã dự án là mã duy nhất trên tất cả các dự án của Google Cloud và không thể thay đổi (không thể thay đổi sau khi đã đặt). Cloud Console tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (thường được xác định là
PROJECT_ID). Nếu không thích mã đã tạo, bạn có thể tạo một mã ngẫu nhiên khác. Ngoài ra, bạn có thể thử mã của riêng mình và xem mã đó có dùng được hay không. Bạn không thể thay đổi mã này sau bước này và mã sẽ giữ nguyên trong suốt thời gian diễn ra dự án. - Để bạn tham khảo, có một giá trị thứ ba là Số dự án mà một số API sử dụng. Tìm hiểu thêm về cả ba giá trị này trong tài liệu.
- Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các API/tài nguyên trên Cloud. Việc thực hiện lớp học lập trình này sẽ không tốn nhiều chi phí, thậm chí là không tốn chi phí. Để tắt các tài nguyên nhằm tránh phát sinh chi phí thanh toán ngoài hướng dẫn này, bạn có thể xoá các tài nguyên đã tạo hoặc xoá toàn bộ dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí trị giá 300 USD.
Thiết lập môi trường
Kích hoạt Cloud Shell bằng cách nhấp vào biểu tượng ở bên phải thanh tìm kiếm.

Trong Cloud Shell, hãy bật các API cần thiết cho phòng thí nghiệm này:
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com \
container.googleapis.com \
containersecurity.googleapis.com
Nếu được nhắc uỷ quyền, hãy nhấp vào "Uỷ quyền" để tiếp tục.

Thao tác này sẽ tạo ra một thông báo thành công tương tự như thông báo này:
Operation "operations/acf.p2-327036483151-73d90d00-47ee-447a-b600-a6badf0eceae" finished successfully.
Chạy lệnh để tạo cụm GKE không đồng bộ. Cụm này sẽ được sử dụng sau trong phòng thí nghiệm:
gcloud beta container clusters create gke-cluster \
--zone us-central1-a \
--async
3. Chuẩn bị ứng dụng
Trước tiên, bạn sẽ chuẩn bị một ứng dụng Node.js đơn giản dựa trên Express để phản hồi các yêu cầu HTTP.
Trong Cloud Shell, hãy tạo một thư mục mới có tên là starter-nodejs, sau đó chuyển sang thư mục đó:
mkdir starter-nodejs
cd starter-nodejs
Tạo tệp package.json bằng cách chạy các lệnh bên dưới:
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
Tệp ở trên chứa một lệnh tập lệnh bắt đầu và một phần phụ thuộc vào khung ứng dụng web Express.
Tiếp theo, trong cùng một thư mục, hãy tạo tệp index.js bằng cách chạy các lệnh bên dưới:
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
Mã này tạo một máy chủ web cơ bản theo dõi cổng được xác định bởi biến môi trường PORT. Ứng dụng của bạn hiện đã hoàn tất và sẵn sàng được đóng gói vào vùng chứa và triển khai.
4. Triển khai ứng dụng Cloud Run
Chạy lệnh bên dưới để triển khai ứng dụng:
gcloud run deploy starter-app \
--source . \
--region us-central1 \
--allow-unauthenticated \
--max-instances=3
Xác nhận việc tạo kho lưu trữ 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. Thông tin chi tiết về bảo mật của Artifact Registry và Cloud Build
Quá trình xây dựng sẽ mất vài phút để hoàn tất.
Mở Cloud Build và xem xét các cấu phần phần mềm bản dựng cho bản dựng mới nhất.
Giao diện người dùng Cloud Build trong bảng điều khiển Cloud chứa bảng thông tin chi tiết về bảo mật của Software Delivery Shield. Bảng này hiển thị thông tin bảo mật liên quan đến bản dựng, chẳng hạn như cấp độ SLSA, mọi lỗ hổng trong các phần phụ thuộc và nguồn gốc của bản dựng.

Xem xét thông tin chi tiết về bảo mật cho hình ảnh vùng chứa đã tạo. Làm theo đường liên kết cho các cấu phần phần mềm đã quét để xem thông tin chi tiết về lỗ hổng cho hình ảnh này trong Artifact Registry.
Quay lại bảng điều khiển Cloud Shell và xác minh rằng quá trình triển khai ứng dụng Cloud Run đã hoàn tất.
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. Thông tin chi tiết về bảo mật của Cloud Run
Cloud Run chứa một bảng điều khiển bảo mật (Bản xem trước) hiển thị thông tin chi tiết về bảo mật của chuỗi cung ứng phần mềm, chẳng hạn như thông tin tuân thủ cấp độ bản dựng SLSA, nguồn gốc của bản dựng và các lỗ hổng được phát hiện trong các dịch vụ đang chạy.
Mở Cloud Run và xem xét thông tin chi tiết về bảo mật trong thẻ REVISIONS / SECURITY (BẢN SỬA ĐỔI/BẢO MẬT).

Bảng điều khiển này hiển thị thông tin sau:
- Danh tính và mã hoá: Địa chỉ email của tài khoản dịch vụ Compute Engine mặc định và khoá mã hoá được dùng để triển khai.
- Cấp độ SLSA: Bản dựng này ở Cấp độ SLSA 3, xác định cấp độ trưởng thành của quy trình xây dựng phần mềm theo thông số kỹ thuật SLSA
- Lỗ hổng: Mọi lỗ hổng được phát hiện trong các phần phụ thuộc của ứng dụng.
- Thông tin chi tiết về bản dựng: Thông tin chi tiết về bản dựng, chẳng hạn như trình tạo và đường liên kết để xem nhật ký.
- Nguồn gốc của bản dựng: Nguồn gốc của bản dựng là một tập hợp siêu dữ liệu có thể xác minh về một bản dựng. Thông tin này bao gồm các thông tin chi tiết như bản tóm tắt của hình ảnh đã tạo, vị trí nguồn đầu vào, chuỗi công cụ bản dựng, các bước xây dựng và thời lượng xây dựng.
7. Tình trạng bảo mật của GKE
GKE có thể đánh giá tình trạng bảo mật của vùng chứa và đưa ra hướng dẫn chủ động về các chế độ cài đặt cụm, cấu hình khối lượng công việc và lỗ hổng. GKE bao gồm trang tổng quan về tình trạng bảo mật (Bản xem trước), quét các cụm và khối lượng công việc của GKE để cung cấp cho bạn các đề xuất có ý kiến và có thể thực hiện nhằm cải thiện tình trạng bảo mật.
Trong các bước tiếp theo, bạn sẽ triển khai ứng dụng vào cụm GKE và xem xét thông tin chi tiết về bảo mật trong trang tổng quan về tình trạng bảo mật của GKE.
Xác minh rằng cụm đã sẵn sàng bằng cách chạy lệnh sau:
gcloud beta container clusters list
Nội dung đầu ra mẫu:
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
Nhận thông tin xác thực và cấu hình cho cụm GKE:
gcloud container clusters get-credentials gke-cluster \
--region=us-central1-a
Chạy lệnh để triển khai ứng dụng bằng hình ảnh đã được tạo ở bước trước:
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
Khối lượng công việc của GKE lý tưởng nhất là có cấu hình được củng cố để hạn chế bề mặt tấn công. Việc kiểm tra khối lượng công việc trên các cụm để tìm vấn đề về cấu hình có thể khó thực hiện theo cách thủ công ở quy mô lớn. Bạn có thể sử dụng trang tổng quan về tình trạng bảo mật để tự động quét cấu hình của tất cả khối lượng công việc đang chạy trên nhiều cụm và trả về kết quả có thể thực hiện, được tính điểm và các đề xuất có ý kiến để cải thiện tình trạng bảo mật.
Bật tính năng quét cấu hình khối lượng công việc:
gcloud beta container clusters update gke-cluster \
--region=us-central1-a \
--enable-workload-config-audit
Ngoài việc quét cấu hình khối lượng công việc, bạn cũng có thể bật tính năng quét lỗ hổng của khối lượng công việc và xem xét kết quả trong trang tổng quan về tình trạng bảo mật. Đây là một tập hợp các tính năng cung cấp thông tin và đề xuất có ý kiến để cải thiện tính bảo mật của các cụm và khối lượng công việc của GKE.
GKE tự động quét các hình ảnh vùng chứa trong mọi Pod đủ điều kiện đang chạy trong cụm GKE để tìm các lỗ hổng đã biết, sử dụng dữ liệu lỗ hổng từ các cơ sở dữ liệu CVE công khai như NIST.
Nếu phát hiện thấy lỗ hổng trong hình ảnh vùng chứa, GKE sẽ chỉ định mức độ nghiêm trọng và hiển thị kết quả trong trang tổng quan về tình trạng bảo mật trong bảng điều khiển Cloud. GKE cũng thêm các mục vào Cloud Logging để kiểm tra và theo dõi.
Bật tính năng quét lỗ hổng của khối lượng công việc:
gcloud beta container clusters update gke-cluster \
--region=us-central1-a \
--enable-workload-vulnerability-scanning \
--async
Mở trang Tình trạng bảo mật của GKE.
Đợi vài phút để quá trình kiểm tra khối lượng công việc hoàn tất, sau đó xem xét kết quả.

Xem xét các vấn đề về Cấu hình và khối lượng công việc bị ảnh hưởng.

Lý do nên sử dụng trang tổng quan về tình trạng bảo mật
Trang tổng quan về tình trạng bảo mật là một biện pháp bảo mật cơ bản mà bạn có thể bật cho bất kỳ cụm GKE đủ điều kiện nào. Google Cloud khuyên bạn nên sử dụng trang tổng quan về tình trạng bảo mật trong tất cả các cụm vì những lý do sau:
- Giảm thiểu sự gián đoạn: Các tính năng không can thiệp hoặc làm gián đoạn khối lượng công việc đang chạy.
- Đề xuất có thể thực hiện: Khi có, trang tổng quan về tình trạng bảo mật sẽ cung cấp các mục hành động để khắc phục các vấn đề đã phát hiện. Các hành động này bao gồm các lệnh mà bạn có thể chạy, ví dụ về các thay đổi cấu hình cần thực hiện và lời khuyên về những việc cần làm để giảm thiểu lỗ hổng.
- Trực quan hoá: Trang tổng quan về tình trạng bảo mật cung cấp hình ảnh trực quan cấp cao về các vấn đề ảnh hưởng đến các cụm trong dự án của bạn, đồng thời bao gồm các biểu đồ và đồ thị để cho thấy tiến trình bạn đã thực hiện và tác động tiềm ẩn của từng vấn đề.
- Kết quả có ý kiến: GKE chỉ định mức độ nghiêm trọng cho các vấn đề đã phát hiện dựa trên chuyên môn của các nhóm bảo mật của Google và các tiêu chuẩn trong ngành.
- Nhật ký sự kiện có thể kiểm tra: GKE thêm tất cả các vấn đề đã phát hiện vào Logging để cải thiện khả năng báo cáo và khả năng quan sát.
8. Xin chúc mừng!
Xin chúc mừng! Bạn đã hoàn tất lớp học lập trình.
Nội dung chúng ta đã đề cập:
- Thông tin chi tiết về bảo mật cho các cấu phần phần mềm bản dựng và ứng dụng đang chạy trên Cloud Run và GKE
Dọn dẹp
Để tránh phát sinh chi phí cho tài khoản Google Cloud của bạn đối với các tài nguyên được sử dụng trong hướng dẫn này, hãy xoá dự án chứa các tài nguyên đó hoặc giữ lại dự án và xoá từng tài nguyên.
Xoá dự án
Cách dễ nhất để loại bỏ chi phí thanh toán là xoá dự án mà bạn đã tạo cho hướng dẫn này.
—
Cập nhật lần gần đây nhất: 21/3/2023