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 Cloud Run và cụm GKE, đồng thời xem thông tin chi tiết về bảo mật cho quá trình triển khai trong Software Delivery Shield Security
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 trên Cloud Run
- Trạng thái 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 đám mây
- Đă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ị của 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 thông tin 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 trên Google Cloud và không thể thay đổi (bạn không thể thay đổi mã này sau khi đã đặt). Cloud Console sẽ 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ã dự án được tạo, bạn có thể tạo một mã dự án ngẫu nhiên khác. Hoặc bạn có thể thử tên người dùng của riêng mình để xem tên đó có được chấp nhận hay không. Bạn không thể thay đổi thông tin này sau bước này và thông tin này sẽ giữ nguyên trong suốt thời gian diễn ra dự án. - Để bạn biết, 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ả 3 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 tài nguyên/API 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í, nếu có. Để tắt các tài nguyên nhằm tránh bị tính phí ngoài phạm vi 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.

Từ Cloud Shell, hãy bật các API cần thiết cho bài thực hành 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ư sau:
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ộ. Bạn sẽ dùng đối tượng này sau trong lớp học lập trình:
gcloud beta container clusters create gke-cluster \
--zone us-central1-a \
--async
3. Chuẩn bị đơn đăng ký
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 khởi động và một phần phụ thuộc vào khung ứng dụng web Express.
Tiếp theo, trong cùng 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
Đoạn mã này tạo một máy chủ web cơ bản theo dõi cổng do biến môi trường PORT xác định. Ứng dụng của bạn hiện đã hoàn tất và sẵn sàng được đóng gói 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 của bạn:
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 này 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 của bản dựng cho bản dựng mới nhất.
Giao diện người dùng Cloud Build trong Cloud Console có bảng thông tin chi tiết về tính 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 bảo mật trong các phần phụ thuộc và nguồn gốc của bản dựng.

Xem thông tin chi tiết về tính bảo mật của hình ảnh vùng chứa đã tạo. Truy cập vào đường liên kết của các cấu phần phần mềm được quét để xem thông tin chi tiết về các lỗ hổng bảo mật của 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 trên Cloud Run
Cloud Run có 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 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 bản dựng và các lỗ hổng bảo mật được phát hiện trong các dịch vụ đang chạy.
Mở Cloud Run rồi xem Security Insights (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ị những thông tin sau:
- Danh tính và hoạt động mã hoá: Địa chỉ email của tài khoản dịch vụ Compute Engine mặc định và khoá mã hoá dùng cho quá trình triển khai.
- Cấp độ SLSA: Bản dựng này ở Cấp độ 3 của SLSA, xác định cấp độ trưởng thành của quy trình xây dựng phần mềm theo quy cách 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 chi tiết như chuỗi đại diện của các bản dựng hình ảnh, vị trí nguồn đầu vào, chuỗi công cụ tạo bản dựng, các bước tạo bản dựng và thời gian tạo bản dựng.
7. Trạng thái 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ề chế độ cài đặt cụm, cấu hình tải và các lỗ hổng. Công cụ này bao gồm trang tổng quan về tình trạng bảo mật (Bản xem trước), giúp quét các cụm và khối lượng công việc GKE để cung cấp cho bạn các đề xuất có tính định hướng và có thể hành động nhằm cải thiện tình trạng bảo mật của bạn.
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ề trạng thái 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
Kết quả 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
Lấy thông tin đăng nhập 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
Tốt nhất là các tải công việc GKE nên có cấu hình được tăng cường để hạn chế phạm vi tấn công. Việc kiểm tra tải 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 trên quy mô lớn. Bạn có thể sử dụng trang tổng quan về trạng thái bảo mật để tự động quét cấu hình của tất cả các tải đang chạy trên nhiều cụm, đồng thời trả về kết quả có thể hành động, được tính điểm và các đề xuất có chủ ý để cải thiện trạng thái bảo mật của bạn.
Bật tính năng quét cấu hình tải:
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 tải, bạn cũng có thể bật tính năng quét lỗ hổng bảo mật của tải và xem xét kết quả trong trang tổng quan về trạng thái bảo mật. Đây là một bộ tính năng cung cấp thông tin và đề xuất có chủ đích để cải thiện tính bảo mật của các cụm và tải 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 của bạn để tìm các lỗ hổng đã biết, bằng cách sử dụng dữ liệu về 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 bảo mật 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ề trạng thái bảo mật trong Cloud Console. 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 bảo mật 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 tải hoàn tất, sau đó xem xét kết quả.

Xem xét các vấn đề về cấu hình và những tải bị ảnh hưởng.

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