1. Giới thiệu
Danh sách địa chỉ IP có tên của Google Cloud Armor cho phép bạn tham chiếu danh sách địa chỉ IP và dải IP do các nhà cung cấp bên thứ ba duy trì. Bạn có thể định cấu hình danh sách địa chỉ IP có tên trong chính sách bảo mật. Bạn không cần phải chỉ định từng địa chỉ IP hoặc dải IP theo cách thủ công.
Kiến thức bạn sẽ học được
- Lợi ích của danh sách địa chỉ IP có tên Cloud Armor
- Tạo chính sách bảo mật Cloud Armor
- Triển khai danh sách địa chỉ IP có tên Cloud Armor
- Tạo Trình cân bằng tải toàn cầu
- Tạo Nhóm phiên bản được quản lý bằng ứng dụng kiểm thử mẫu
Bạn cần có
- Có kinh nghiệm về Chính sách bảo mật và Bộ cân bằng tải
2. Chỉ cho phép lưu lượng truy cập từ các nhà cung cấp bên thứ ba được phép
Một trường hợp sử dụng điển hình là tạo danh sách cho phép chứa địa chỉ IP của một đối tác bên thứ ba được phép để đảm bảo rằng chỉ lưu lượng truy cập đến từ đối tác này mới có thể truy cập vào trình cân bằng tải và các phần phụ trợ.
Ví dụ: các nhà cung cấp CDN cần lấy nội dung từ máy chủ gốc theo định kỳ để phân phối nội dung đó đến bộ nhớ đệm của riêng họ. Việc hợp tác với Google giúp thiết lập mối kết nối trực tiếp giữa các nhà cung cấp CDN và mạng biên của Google. Người dùng CDN trên Google Cloud có thể sử dụng kết nối trực tiếp này trong quá trình kéo nguồn. Trong trường hợp này, người dùng CDN có thể muốn xây dựng một chính sách bảo mật chỉ cho phép lưu lượng truy cập đến từ nhà cung cấp CDN cụ thể đó.
Trong ví dụ này, một nhà cung cấp CDN xuất bản danh sách địa chỉ IP 23.235.32.0/20, 43.249.72.0/22, ⋯. Một người dùng CDN định cấu hình một quy tắc bảo mật chỉ cho phép lưu lượng truy cập đến từ các địa chỉ IP này. Do đó, hai điểm truy cập của nhà cung cấp CDN được cho phép (23.235.32.10 và 43.249.72.10) và lưu lượng truy cập của chúng được cho phép. Lưu lượng truy cập từ điểm truy cập trái phép 198.51.100.1 sẽ bị chặn.

Địa chỉ IP được đặt tên của Google Cloud Armor
3. Đơn giản hoá việc định cấu hình và quản lý bằng cách sử dụng các quy tắc được định cấu hình sẵn
Các nhà cung cấp CDN thường sử dụng những địa chỉ IP nổi tiếng và nhiều người dùng CDN cần sử dụng. Các danh sách này sẽ thay đổi theo thời gian, khi các nhà cung cấp thêm, xoá và cập nhật địa chỉ IP.
Việc sử dụng danh sách địa chỉ IP có tên trong một quy tắc chính sách bảo mật giúp đơn giản hoá quy trình định cấu hình và quản lý địa chỉ IP vì Google Cloud Armor tự động đồng bộ hoá thông tin từ các nhà cung cấp CDN hằng ngày. Điều này giúp loại bỏ quy trình tốn thời gian và dễ xảy ra lỗi khi duy trì danh sách lớn gồm các địa chỉ IP theo cách thủ công.
Nhà cung cấp danh sách địa chỉ IP
Google Cloud Armor hỗ trợ nhà cung cấp danh sách địa chỉ IP trong bảng sau. Đây là những nhà cung cấp CDN đã hợp tác với Google. Danh sách địa chỉ IP của họ được xuất bản thông qua các URL công khai riêng lẻ.
Các đối tác này cung cấp danh sách riêng về địa chỉ IPv4 và địa chỉ IPv6. Google Cloud Armor sử dụng các URL được cung cấp để tìm nạp danh sách, sau đó chuyển đổi danh sách thành danh sách địa chỉ IP có tên. Bạn tham chiếu đến các danh sách theo tên trong bảng.

Ngoài ra, hãy sử dụng cloud shell để lấy danh sách các danh sách địa chỉ IP được đặt tên đã định cấu hình trước
Đăng nhập vào Cloud Shell và đặt projectid
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] Perform setting your projectID: projectid=YOUR-PROJECT-ID echo $projectid
Từ Cloud Shell
gcloud compute security-policies list-preconfigured-expression-sets \
--filter="id:sourceiplist"
Thao tác này sẽ trả về:
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
4. Cấu trúc liên kết lớp học lập trình

5. Thiết lập và yêu cầu
Thiết lập môi trường theo tốc độ của riêng bạn
- Đăng nhập vào 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.)



Hãy nhớ mã dự án, một tên duy nhất trên tất cả các dự án trên Google Cloud (tên ở trên đã được sử dụng và sẽ không hoạt động đối với bạn, xin lỗi!). Sau này trong lớp học lập trình này, chúng ta sẽ gọi nó là PROJECT_ID.
- 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 của Google 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ó. Hãy nhớ làm theo mọi hướng dẫn trong phần "Dọn dẹp" để biết cách 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. 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.
Khởi động Cloud Shell
Mặc dù có thể vận hành Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trên Cloud.
Trên Bảng điều khiển GCP, hãy nhấp vào biểu tượng Cloud Shell trên thanh công cụ ở trên cùng bên phải:

Quá trình này chỉ mất vài phút để cung cấp và kết nối với môi trường. Khi quá trình này kết thúc, bạn sẽ thấy như sau:

Máy ảo này được trang bị tất cả các công cụ phát triển mà bạn cần. Nó cung cấp một thư mục chính có dung lượng 5 GB và chạy trên Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và hoạt động xác thực. Bạn chỉ cần một trình duyệt là có thể thực hiện mọi thao tác trong phòng thí nghiệm này.
6. Tạo mạng VPC
Mạng VPC
Từ Cloud Shell
gcloud compute networks create
named-list-vpc
--subnet-mode custom
Tạo mạng con
Từ Cloud Shell
gcloud compute networks subnets create named-ip-subnet \
--network
named-list-vpc
--range 10.0.0.0/24 --region us-east1
Tạo quy tắc cho tường lửa
Từ Cloud Shell
gcloud compute --project=$projectid firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0
gcloud compute --project=$projectid firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp --source-ranges=130.211.0.0/22,35.191.0.0/16
Tạo trình cân bằng tải
Tạo mẫu phiên bản
Từ Cloud Shell
gcloud beta compute --project=$projectid instance-templates create us-east1-template --machine-type=e2-medium --subnet=projects/$projectid/regions/us-east1/subnetworks/named-ip-subnet --network-tier=PREMIUM --metadata=startup-script-url=gs://cloud-training/gcpnet/httplb/startup.sh --maintenance-policy=MIGRATE --image=debian-10-buster-v20210217 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=us-east1-template --no-shielded-secure-boot --no-shielded-vtpm --no-shielded-integrity-monitoring --reservation-affinity=any
Tạo Nhóm phiên bản được quản lý
Từ Cloud Shell
gcloud compute --project=$projectid instance-groups managed create us-east1-mig --base-instance-name=us-east1-mig --template=us-east1-template --size=1 --zone=us-east1-b
7. Xác minh các dịch vụ phụ trợ
Xác minh rằng các phiên bản VM đang được tạo ở cả hai khu vực và truy cập vào các trang web HTTP của chúng.
- Vẫn trong Compute Engine, hãy nhấp vào VM instances (Các phiên bản máy ảo) trong trình đơn bên trái
- Lưu ý những phiên bản bắt đầu bằng us-east1-mig. Đây là những phiên bản thuộc nhóm phiên bản được quản lý.
- Nhấp vào IP ngoài của một thực thể us-east1-mig. Bạn sẽ thấy IP ứng dụng khách (địa chỉ IP của bạn), Tên máy chủ (bắt đầu bằng us-east1-mig)
Định cấu hình Trình cân bằng tải HTTP
- Trong Cloud Console, hãy nhấp vào Trình đơn điều hướng (
) > nhấp vào Dịch vụ mạng > Cân bằng tải, rồi nhấp vào Tạo bộ cân bằng tải. - Trong phần Cân bằng tải HTTP(S), hãy nhấp vào Bắt đầu định cấu hình.

- Chọn Từ Internet đến các VM của tôi rồi nhấp vào Tiếp tục.
- Đặt Tên thành http-lb.
Định cấu hình phần phụ trợ
Các dịch vụ phụ trợ chuyển hướng lưu lượng truy cập đến một hoặc nhiều phụ trợ được đính kèm. Mỗi hệ thống phụ trợ bao gồm một nhóm thực thể và siêu dữ liệu bổ sung về năng lực phân phát.
- Nhấp vào Cấu hình phụ trợ.
- Đối với Dịch vụ phụ trợ và nhóm phụ trợ, hãy nhấp vào Tạo hoặc chọn dịch vụ phụ trợ và nhóm phụ trợ, sau đó nhấp vào Dịch vụ phụ trợ rồi nhấp vào Tạo dịch vụ phụ trợ.
- Loại phần phụ trợ là Nhóm phiên bản
- Đặt các giá trị sau, giữ nguyên tất cả các giá trị khác theo mặc định:

- Nhấp vào Xong.
- Đối với tính năng Kiểm tra tình trạng, hãy chọn Tạo một quy trình kiểm tra tình trạng.

- Đặt các giá trị sau, giữ nguyên tất cả các giá trị khác theo mặc định:

- Đặt các giá trị sau, giữ nguyên tất cả các giá trị khác theo mặc định:
- Nhấp vào Lưu và tiếp tục.
- Nhấp vào Tạo để tạo dịch vụ phụ trợ.

Định cấu hình giao diện người dùng
Các quy tắc về máy chủ lưu trữ và đường dẫn sẽ xác định cách lưu lượng truy cập của bạn được chuyển hướng. Ví dụ: bạn có thể chuyển hướng lưu lượng truy cập video đến một phần phụ trợ và lưu lượng truy cập tĩnh đến một phần phụ trợ khác. Tuy nhiên, bạn không định cấu hình các quy tắc Máy chủ lưu trữ và đường dẫn trong bài thực hành này.
- Nhấp vào Cấu hình giao diện người dùng.
- http-front-end
- Chỉ định các giá trị sau, để nguyên tất cả các giá trị khác ở mức mặc định

- Nhấp vào Xong.
8. Xem xét và tạo Trình cân bằng tải HTTP
- Nhấp vào Xem lại và hoàn tất.

- Xem xét các dịch vụ phụ trợ và giao diện người dùng.

- Nhấp vào Tạo.
- Đợi vài phút để trình cân bằng tải được tạo
- Nhấp vào tên của bộ cân bằng tải (http-lb).
- Ghi lại địa chỉ IPv4 của bộ cân bằng tải cho tác vụ tiếp theo, được gọi là http-lb.
9. Xác thực thành công quyền truy cập trái phép
Trước khi triển khai chính sách Địa chỉ IP được đặt tên, hãy xác thực thành công quyền truy cập trái phép vào bộ cân bằng tải của phòng thí nghiệm và ứng dụng web tiếp theo. Xin lưu ý rằng sau khi chính sách địa chỉ IP có tên được triển khai, quyền truy cập vào ứng dụng web sẽ bị giới hạn ở bộ biểu thức được cung cấp.
- Xác định địa chỉ IP của bộ cân bằng tải mà bạn đã tạo ở bước trước (http-lb) rồi dán vào trình duyệt web. Kết quả đầu ra sẽ tương tự như ảnh chụp màn hình bên dưới.
LƯU Ý: Bước này sẽ mất vài phút. Sau khi trang web được tạo, IP máy khách sẽ là IP của Google Front End chứ không phải IP của máy trạm.

Từ máy trạm, hãy thực hiện quy trình xác thực tương tự như quy trình được chỉ ra bên dưới
bash-3.2$ curl <load-balancer-IP>
10. Kết quả ví dụ
bash-3.2$ curl <load-balancer-ip> <h1>HTTP Load Balancing Lab</h1><h2>Client IP</h2>Your IP address : 35.191.0.151<h2>Hostname</h2>Server Hostname: us-east1-mig-8nqq<h2>Server Location</h2>Region and Zone: us-east1-b
11. Định cấu hình Danh sách IP có tên
Tạo Chính sách Cloud Armor mới cho Danh sách IP có tên
Từ Cloud Shell
gcloud compute --project=$projectid security-policies create ca-policy
Từ Cloud Shell
gcloud compute --project=$projectid security-policies rules update 2147483647 --action=deny-403 --security-policy=ca-policy --description="Default rule, higher priority overrides it" --src-ip-ranges=\*
Xác định các địa chỉ trong Danh sách địa chỉ IP có tên của CDN hiện có.
Từ Cloud Shell
gcloud compute security-policies list-preconfigured-expression-sets \
--filter="id:sourceiplist"
Thao tác này sẽ trả về:
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
Từ Cloud Shell, hãy định cấu hình danh sách địa chỉ IP có tên dựa trên tập hợp biểu thức có sẵn của CDN
gcloud beta compute security-policies rules create 600 \
--security-policy ca-policy \
--expression "evaluatePreconfiguredExpr('expression_set')" \
--action "allow"
Ví dụ sử dụng Cloudflare
gcloud beta compute security-policies rules create 600 \
--security-policy ca-policy \
--expression "evaluatePreconfiguredExpr('sourceiplist-cloudflare')" \
--action "allow"
12. Áp dụng chính sách bảo mật CA
Áp dụng chính sách bảo mật CA và đợi vài phút để chính sách được truyền tải trên toàn cầu
gcloud compute backend-services update http-backend --security-policy ca-policy --global
13. Xác thực địa chỉ IP được đặt tên
- Vì chính sách bảo mật đã được triển khai, nên bạn không được phép truy cập vào bộ cân bằng tải từ máy trạm.
- Để xác thực, hãy mở một cửa sổ dòng lệnh trên máy trạm của bạn và thực hiện một lệnh curl đến địa chỉ IP của bộ cân bằng tải. Đầu ra từ lệnh curl sẽ tạo ra lỗi "403" Bị cấm vì máy trạm của bạn hiện không được uỷ quyền.
Trên máy trạm
bash-3.2$ curl <load-balancer-IP> <!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden
Các bước dọn dẹp
gcloud -q compute backend-services update http-backend --security-policy "" --global gcloud -q compute --project=$projectid security-policies delete ca-policy gcloud -q compute forwarding-rules delete http-front-end --global gcloud -q compute target-http-proxies delete http-lb-target-proxy gcloud -q compute url-maps delete http-lb gcloud -q compute backend-services delete http-backend --global gcloud -q compute health-checks delete http-health-check gcloud -q compute --project=$projectid instance-groups managed delete us-east1-mig --zone=us-east1-b gcloud -q beta compute --project=$projectid instance-templates delete us-east1-template gcloud -q compute --project=$projectid firewall-rules delete default-allow-http gcloud -q compute --project=$projectid firewall-rules delete default-allow-health-check gcloud -q compute networks subnets delete named-ip-subnet --region us-east1 gcloud -q compute networks delete named-list-vpc
14. Xin chúc mừng!
Chúc mừng bạn đã hoàn thành lớp học lập trình này.
Nội dung đã đề cập
- Lợi ích của danh sách địa chỉ IP có tên Cloud Armor
- Tạo Trình cân bằng tải toàn cầu
- Tạo Nhóm phiên bản được quản lý bằng ứng dụng kiểm thử mẫu
- Tạo chính sách bảo mật Cloud Armor
- Triển khai danh sách địa chỉ IP có tên Cloud Armor
- Xác thực chính sách IP có tên của Cloud Armor