Thông tin chi tiết về bảo mật trong thời gian chạy

1. Giới thiệu

Trong phòng thí nghiệm này, bạn sẽ triển khai một ứng dụng cho cụm Cloud Run và GKE, đồng thời xem thông tin chi tiết về bảo mật để triển khai trong giải pháp 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ề tính bảo mật của Cloud Run
  • Tư thế 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

  1. Đăng nhập vào Google Cloud Console rồi tạo dự án mới hoặc sử dụng lại 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.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • 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ự không được API của Google 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à duy nhất trong tất cả các dự án Google Cloud và không thể thay đổi (không thể thay đổi sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường bạn không quan tâm đến sản phẩm đó là gì. 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 (mã này 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ã nhận dạng ngẫu nhiên khác. Ngoài ra, bạn có thể thử phương pháp của riêng mình và xem có được cung cấp hay không. Bạn không thể thay đổi thông tin này sau bước này và thông báo đó sẽ vẫn tồn tại trong thời gian của dự án.
  • Đối với thông tin của bạn, có giá trị thứ ba, Project Number (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 này.
  1. Tiếp theo, bạn sẽ phải bật tính năng thanh toán trong Cloud Console để sử dụng API/tài nguyên trên đám mây. Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Để tắt các tài nguyên nhằm tránh bị tính phí ngoài hướng dẫn này, bạn có thể xoá các tài nguyên bạ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í 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.

ecdc43ada29e91b.png

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 cho phép, hãy nhấp vào "Uỷ quyền" để tiếp tục.

6356559df3eccdda.pngS

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 sau:

Operation "operations/acf.p2-327036483151-73d90d00-47ee-447a-b600-a6badf0eceae" finished successfully.

Chạy lệnh để tạo cụm GKE một cách không đồng bộ. Dữ liệu này sẽ được dùng trong phòng thí nghiệm sau:

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 dựa trên nhanh để 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 đó thay đổi thành 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 lệnh start script và phần phụ thuộc trên khung ứng dụng web Express.

Tiếp theo, trong chính thư mục đó, hãy tạo một 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 tiếp nhận trên 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 để đưa vào vùng chứa cũng như triển khai.

4. Triển khai ứng dụng Cloud Run

Chạy lệnh dưới đây để 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. Artifact Registry và Cloud Build Security Insights

Quá trình tạo 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 của Cloud Build trong bảng điều khiển Google Cloud chứa bảng thông tin chi tiết về Software Delivery Shield Security, trong đó 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.

7d9fd2213f3704c4.png.

Xem xét Thông tin chi tiết về tính bảo mật để biết hình ảnh vùng chứa đã tạo. Truy cập đường liên kết đến các cấu phần phần mềm đã quét để xem 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ề tính 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) cho thấy thông tin chi tiết về tính bảo mật của chuỗi cung ứng phần mềm, chẳng hạn như thông tin về việc 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 bảo mật phát hiện được trong các dịch vụ đang chạy.

Mở Cloud Run rồi xem lại Thông tin chi tiết về bảo mật trong thẻ RevISIONS / bảo mật.

62a9f5d26207e58e.png.

Bảng điều khiển này hiển thị các thông tin sau:

  • Danh tính và quá trình 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 để triển khai.
  • Cấp SLSA: Bản dựng này đang ở cấp SLSA Cấp 3, xác định cấp độ hoàn thiện của quy trình xây dựng phần mềm theo thông số kỹ thuật SLSA
  • Lỗ hổng bảo mật: Mọi lỗ hổng bảo mật phát hiện được 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. Báo cáo này bao gồm các thông tin chi tiết như chuỗi đại diện của các 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 tạo và thời lượng tạo bản dựng.

7. Tư thế bảo mật của GKE

GKE có thể đánh giá tình hình bảo mật vùng chứa của bạn và đưa ra hướng dẫn chủ động về chế độ cài đặt cụm, cấu hình khối lượng công việc và các lỗ hổng bảo mật. Trong đó có trang tổng quan tình trạng bảo mật (Bản xem trước) có chức năng quét các cụm và khối lượng công việc GKE của bạn nhằm cung cấp cho bạn các đề xuất hữu ích, dễ thực hiện nhằm cải thiện khả năng bảo mật.

Trong các bước tiếp theo, bạn sẽ triển khai ứng dụng cho 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

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 của 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

Lý tưởng nhất là các tải công việc GKE nên có cấu hình cố định để hạn chế các bề mặt tấn công. Việc kiểm tra tải công việc trên nhiều 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ề tình hình 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ề những kết quả hữu ích, có tính điểm và nội dung đề xuất cố định nhằm cải thiện khả năng bảo mật.

Bật tính năng quét cấu hình của 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 chức năng 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 bảo mật và xem xét kết quả của khối lượng công việc trong trang tổng quan tình trạng bảo mật. Đây là một nhóm các tính năng cung cấp thông tin và đề xuất cố định để cải thiện khả năng bảo mật cho các cụm và tải công việc trong GKE.

GKE tự động quét hình ảnh vùng chứa trong mọi Nhóm đủ điều kiện 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 bảo mật từ các cơ sở dữ liệu CVE công khai như NIST.

Nếu phát hiện thấy một lỗ hổng bảo mật trong hình ảnh vùng chứa của bạn, GKE sẽ đưa ra mức đánh giá mức độ nghiêm trọng và hiện kết quả trong trang tổng quan về tình trạng bảo mật trong bảng điều khiển Google Cloud. GKE cũng thêm các mục vào Cloud Logging để kiểm tra và truy xuất nguồn gốc.

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 Trạng thái bảo mật của GKE.

Hãy chờ một vài phút để quá trình kiểm tra tải công việc hoàn tất, sau đó xem xét kết quả.

5b1b8158bc55ce67.pngS

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.

58e6f4b6d8eaa99a.png.

Lý do bạn 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à 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. 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 của mình vì những lý do sau:

  • Gián đoạn ở mức tối thiểu: Các tính năng không làm gián đoạn hay làm gián đoạn khối lượng công việc đang chạy.
  • Đề xuất thiết thực: Khi có sẵn, trang tổng quan tình hình bảo mật sẽ cung cấp các mục hành động để khắc phục các mối lo ngại mà chúng tôi phát hiện được. Những thao tác này bao gồm các lệnh mà bạn có thể chạy, ví dụ về 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 bảo mật.
  • Hình ảnh trực quan: Trang tổng quan về tình trạng bảo mật cung cấp hình ảnh trực quan ở mức cao về những vấn đề ảnh hưởng đến các cụm trong dự án của bạn. Trang tổng quan này có các biểu đồ và đồ thị để cho thấy tiến độ bạn đã thực hiện và tác động tiềm năng 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 vấn đề được phát hiện dựa trên kiến thức chuyên môn của các nhóm bảo mật và tiêu chuẩn ngành của Google.
  • Nhật ký sự kiện có thể kiểm tra: GKE bổ sung mọi mối lo ngại đã phát hiện vào tính năng Ghi nhật ký để tăng khả năng báo cáo và ghi nhận.

8. Xin chúc mừng!

Xin chúc mừng! Bạn đã kết thúc lớp học lập trình.

Nội dung chúng ta đã đề cập:

  • Thông tin về Security Insights đối với 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 làm phát sinh chi phí cho các tài nguyên được sử dụng trong hướng dẫn này trong tài khoản Google Cloud của bạn, 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 riêng lẻ.

Xoá dự án

Cách dễ nhất để loại bỏ việc thanh toán là xoá dự án bạn đã tạo cho phần hướng dẫn.

Lần cập nhật gần đây nhất: 21/3/2023