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 khảo 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 đã đặt tên trong một chính sách bảo mật. Bạn không 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 của Cloud Armor
- Tạo chính sách bảo mật của Cloud Armor
- Triển khai danh sách địa chỉ IP có tên của Cloud Armor
- Tạo Trình cân bằng tải chung
- Tạo Nhóm thực thể được quản lý bằng ứng dụng thử nghiệm mẫu
Bạn cần có
- Kinh nghiệm về chính sách bảo mật và trình 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 cho phép
Một trường hợp sử dụng điển hình là tạo một 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à phần phụ trợ.
Ví dụ: nhà cung cấp CDN cần định kỳ lấy nội dung từ máy chủ gốc để phân phối nội dung đó vào bộ nhớ đệm của riêng họ. Mối quan hệ đối tác với Google giúp kết nối trực tiếp giữa nhà cung cấp CDN và biên mạng lưới 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 lấy dữ liệu gốc. 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, nhà cung cấp CDN sẽ công bố danh sách địa chỉ IP 23.235.32.0/20, 43.249.72.0/22, ⋯,. Người dùng CDN sẽ thiết lập một quy tắc bảo mật chỉ cho phép lưu lượng truy cập đến từ những địa chỉ IP này. Do đó, hai điểm truy cập của nhà cung cấp CDN là được 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 bị chặn.
Địa chỉ IP có tên của Google Cloud Armor
3. Đơn giản hóa 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
Nhà cung cấp CDN thường sử dụng các địa chỉ IP nổi tiếng và mà nhiều người dùng CDN cần sử dụng. Các danh sách này thay đổi theo thời gian do 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 quy tắc chính sách bảo mật sẽ giúp đơn giản hoá quá 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 mỗi 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 địa chỉ IP lớn theo cách thủ công.
Nhà cung cấp danh sách địa chỉ IP
Google Cloud Armor có hỗ trợ các 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 công bố thông qua từng URL công khai.
Các đối tác này cung cấp danh sách địa chỉ IPv4 và địa chỉ IPv6 riêng biệt. Google Cloud Armor sử dụng các URL được cung cấp để tìm nạp danh sách, sau đó chuyển đổi các danh sách đó thành các danh sách địa chỉ IP đã đặt tên. Bạn tham chiếu đến 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 đã đặt tên được định cấu hình sẵn
Đăng nhập vào Cloudshell và đặt mã dự án của bạn
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] Perform setting your projectID: projectid=YOUR-PROJECT-ID echo $projectid
Từ vỏ đám mây
gcloud compute security-policies list-preconfigured-expression-sets \ --filter="id:sourceiplist"
Kết quả trả về:
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
4. Cấu trúc liên kết của 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 tiến độ riêng
- Đăng nhập vào 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.)
Xin lưu ý rằng mã dự án là một tên riêng biệt trong tất cả dự án Google Cloud (tên ở trên đã được sử dụng nên sẽ không phù hợp với bạn!). Lớp này sẽ được đề cập sau trong lớp học lập trình này là PROJECT_ID
.
- Tiếp theo, bạn sẽ cần bật tính năng thanh toán trong Cloud Console để sử dụng tài nguyên của Google Cloud.
Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Hãy nhớ làm theo mọi hướng dẫn trong phần "Dọn dẹp" sẽ tư vấn cho bạn cách tắt tài nguyên để bạn không phải chịu thanh toán ngoài 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í 300 USD.
Khởi động Cloud Shell
Mặc dù bạn 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 trong Đám mây.
Trong Bảng điều khiển GCP, hãy nhấp vào biểu tượng Cloud Shell ở thanh công cụ trên cùng bên phải:
Sẽ chỉ mất một chút thời gian để cấp phép và kết nối với môi trường. Sau khi hoàn tất, bạn sẽ thấy như sau:
Máy ảo này chứa tất cả các công cụ phát triển mà bạn cần. Phiên bản này cung cấp thư mục gốc có dung lượng ổn định 5 GB và chạy trên Google Cloud, giúp nâng cao đáng kể hiệu suất và khả năng xác thực của mạng. Bạn có thể thực hiện tất cả công việc trong phòng thí nghiệm này chỉ bằng một trình duyệt.
6. Tạo mạng VPC
Mạng VPC
Của Cloud Shell
gcloud compute networks create
named-list-vpc
--subnet-mode custom
Tạo mạng con
Của 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 về tường lửa
Của 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 thực thể
Của 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 thực thể được quản lý
Của 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 phần phụ trợ
Kiểm tra để đảm bảo các phiên bản máy ảo đang được tạo ở cả hai khu vực và truy cập vào các trang web HTTP tương ứng.
- Vẫn trong Compute Engine, hãy nhấp vào các thực thể máy ảo trong trình đơn bên trái
- Lưu ý rằng những thực thể bắt đầu bằng us-east1-mig. Những thực thể này thuộc nhóm thực thể được quản lý.
- Nhấp vào IP bên ngoài của một phiên bản us-east1-mig. Bạn sẽ thấy IP của ứ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 biểu tượng 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 trình cân bằng tải.
- Trong mục Cân bằng tải HTTP(S), nhấp vào Bắt đầu cấu hình.
- Chọn Từ Internet đến máy ảo 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ợ hướng lưu lượng truy cập đến đến một hoặc nhiều phần phụ trợ đi kèm. Mỗi phần phụ trợ bao gồm một nhóm thực thể và siêu dữ liệu về khả năng phân phát bổ sung.
- Nhấp vào Cấu hình phần phụ trợ.
- Đối với các dịch vụ phụ trợ và các nhóm phụ trợ, hãy nhấp vào Tạo hoặc chọn các dịch vụ phụ trợ & nhóm phụ trợ, 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ụ trợ là Nhóm thực thể
- Thiết lập các giá trị sau đây, giữ nguyên tất cả các giá trị khác theo mặc định:
- Nhấp vào Xong.
- Đối với Kiểm tra tình trạng, hãy chọn Tạo quy trình kiểm tra tình trạng.
- Thiết lập các giá trị sau đây, 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ề đường dẫn và máy chủ lưu trữ xác định cách hướng lưu lượng truy cập của bạn. Ví dụ: Bạn có thể chuyển lưu lượng truy cập video đến một phần phụ trợ, còn lưu lượng truy cập tĩnh thì thực hiện một phần phụ trợ khác. Tuy nhiên, bạn chưa định cấu hình các quy tắc Máy chủ lưu trữ và đường dẫn trong phòng thí nghiệm này.
- Nhấp vào Cấu hình giao diện người dùng.
- http-front-end
- Chỉ định như sau, để tất cả giá trị khá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 rồi 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.
- Hãy đợi một vài phút để tạo trình cân bằng tải
- Nhấp vào tên của trình cân bằng tải (http-lb).
- Ghi lại địa chỉ IPv4 của trình cân bằng tải cho tác vụ tiếp theo, được gọi là http-lb.
9. Xác thực truy cập trái phép thành công
Trước khi triển khai chính sách Địa chỉ IP được đặt tên, hãy xác thực hành động truy cập trái phép thành công vào trình cân bằng phòng thí nghiệm và ứng dụng web tiếp theo. Lưu ý: sau khi triển khai chính sách về địa chỉ IP đã đặt tên, quyền truy cập vào ứng dụng web sẽ bị giới hạn đối với tập hợp biểu thức được cấp phép.
- Xác định địa chỉ IP của trình 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ả sẽ tương tự như ảnh chụp màn hình dưới đây.
LƯU Ý: Bước này sẽ mất vài phút, sau khi trang web được tạo, IP ứng dụng khách là từ Giao diện người dùng của Google, chứ không phải IP máy trạm của bạn.
Từ máy trạm của bạn, thực hiện xác thực tương tự như được chỉ ra dưới đây
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 tên
Tạo Chính sách Cloud Amour mới cho Danh sách IP đã đặt tên
Của Cloud Shell
gcloud compute --project=$projectid security-policies create ca-policy
Của 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ỉ có trong Danh sách IP được đặt tên của CDN.
Của Cloud Shell
gcloud compute security-policies list-preconfigured-expression-sets \ --filter="id:sourceiplist"
Kết quả trả về:
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
Trong phần Cloud Shell, định cấu hình danh sách địa chỉ IP được đặt tên dựa trên chế độ thiết lập biểu thức có sẵn CDN
gcloud beta compute security-policies rules create 600 \ --security-policy ca-policy \ --expression "evaluatePreconfiguredExpr('expression_set')" \ --action "allow"
Ví dụ về cách 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 dành cho CA
Áp dụng chính sách bảo mật dành cho Tổ chức phát hành chứng chỉ (CA) và đợi vài phút để áp dụng chính sách toàn cầu
gcloud compute backend-services update http-backend --security-policy ca-policy --global
13. Xác thực địa chỉ IP đã đặt tên
- Do chính sách bảo mật đã được triển khai, bạn sẽ không được phép truy cập vào trình cân bằng tải từ máy trạm của mình.
- Để xác thực, hãy mở cửa sổ dòng lệnh từ máy trạm của bạn rồi cuộn tròn đến địa chỉ IP của trình cân bằng tải. Đầu ra từ curl sẽ mang lại "403" Lỗi bị cấm vì máy trạm của bạn hiện không được cho phép.
Từ máy trạm của bạn
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ội dung đã đề cập
- Lợi ích của danh sách địa chỉ IP có tên của Cloud Armor
- Tạo Trình cân bằng tải chung
- Tạo Nhóm thực thể được quản lý bằng ứng dụng thử nghiệm mẫu
- Tạo chính sách bảo mật của Cloud Armor
- Triển khai danh sách địa chỉ IP có tên của Cloud Armor
- Xác thực chính sách IP Cloud Armor đã đặt tên