1. Giới thiệu
Chính sách bảo mật biên của Google Cloud Armor cho phép bạn hạn chế quyền truy cập vào các đối tượng được lưu vào bộ nhớ đệm trên Google Cloud CDN và Google Cloud Storage. Ví dụ: bạn có thể làm như vậy để đảm bảo người dùng không truy cập vào các đối tượng trong vùng lưu trữ ở những khu vực địa lý bị hạn chế hoặc đảm bảo rằng hoạt động phân phối nội dung nghe nhìn của bạn đang lọc theo những khu vực địa lý mà bạn có giấy phép để làm như vậy.
Trong phòng thí nghiệm này, chúng ta sẽ tạo một vùng chứa GCS, tải hình ảnh lên vùng chứa đó, liên kết vùng chứa với một trình cân bằng tải, sau đó bật Cloud CDN và các chính sách bảo mật biên trên vùng chứa đó.
Kiến thức bạn sẽ học được
- Cách thiết lập bộ chứa Cloud Storage có nội dung có thể lưu vào bộ nhớ đệm
- Cách tạo Chính sách bảo mật nội dung trong bộ nhớ đệm để bảo vệ nội dung
- Cách xác thực rằng Chính sách bảo mật nội dung trong bộ nhớ đệm đang hoạt động như mong đợi
Bạn cần có
- Kiến thức cơ bản về Mạng và HTTP
- Kiến thức cơ bản về dòng lệnh Unix/Linux
2. 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 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 dùng và bạn có thể cập nhật chuỗi này bất cứ lúc nào.
- Mã dự án phải là 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 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). Vì vậy, nếu không thích mã này, bạn có thể tạo một mã ngẫu nhiên khác hoặc thử mã của riêng mình để xem mã đó có dùng được hay không. Sau đó, mã này sẽ "đóng băng" sau khi dự án được tạ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ả 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, hãy làm theo mọi hướng dẫn "dọn dẹp" ở cuối lớp học lập trình. 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.
Trước khi bắt đầu
Trong Cloud Shell, hãy đảm bảo rằng bạn đã thiết lập mã dự án
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] PROJECT_ID=[YOUR-PROJECT-NAME] echo $PROJECT_ID
Cho phép API
Bật tất cả các dịch vụ cần thiết
gcloud services enable compute.googleapis.com gcloud services enable logging.googleapis.com gcloud services enable monitoring.googleapis.com
3. Tạo một bộ chứa Cloud Storage
Trong Cloud Console, hãy chuyển đến Trình đơn điều hướng > Cloud Storage > Trình duyệt. Nhấp vào TẠO NHÓM:

Quy tắc đặt tên bộ chứa:
- Đừng đưa thông tin nhạy cảm vào tên bộ chứa, vì không gian tên bộ chứa là không gian tên chung và có thể nhìn thấy công khai.
- Tên nhóm chỉ được chứa chữ cái viết thường, số, dấu gạch ngang (-), dấu gạch dưới (_) và dấu chấm (.). Tên chứa dấu chấm cần được xác minh.
- Tên nhóm lưu trữ phải bắt đầu và kết thúc bằng một chữ số hoặc chữ cái.
- Tên nhóm phải có từ 3 đến 63 ký tự. Tên có dấu chấm có thể chứa tối đa 222 ký tự, nhưng mỗi thành phần được phân tách bằng dấu chấm không được dài quá 63 ký tự.
- Bạn không thể biểu thị tên nhóm dưới dạng địa chỉ IP bằng ký hiệu thập phân có dấu chấm (ví dụ: 192.168.5.4).
- Tên vùng lưu trữ không được bắt đầu bằng tiền tố "goog".
- Tên nhóm không được chứa "google" hoặc các lỗi chính tả gần giống với "google".
- Ngoài ra, để tuân thủ DNS và đảm bảo khả năng tương thích trong tương lai, bạn không nên sử dụng dấu gạch dưới (_) hoặc có dấu chấm bên cạnh một dấu chấm hoặc dấu gạch ngang khác. Ví dụ: ".." hoặc "-." hoặc ".-" không hợp lệ trong tên DNS.
Nhấp vào TIẾP TỤC.
Loại vị trí: khu vực
Vị trí: chọn một khu vực cách xa bạn
Nhấp vào TIẾP TỤC.
Lớp lưu trữ mặc định: Chuẩn
Nhấp vào TIẾP TỤC.
Bỏ chọn hộp đánh dấu Thực thi biện pháp phòng tránh truy cập công khai trên bộ chứa này trong mục Ngăn chặn truy cập công khai.
Chọn Chi tiết trong phần Kiểm soát quyền truy cập.
Nhấp vào TIẾP TỤC.
Sau khi bạn định cấu hình xong nhóm, hãy nhấp vào TẠO:
Vậy là bạn vừa tạo một bộ chứa Cloud Storage!
4. Tải một đối tượng lên bộ chứa
Bây giờ, hãy tải một đối tượng lên bộ chứa.
Trước tiên, hãy tải hình ảnh này xuống một phiên bản tạm thời trong Cloud Shell. Trong ví dụ bên dưới, hình ảnh Google trên trang chủ Google được dùng.
Từ Cloud Shell
wget --output-document google.png https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
Dùng lệnh gsutil cp để tải hình ảnh từ vị trí bạn đã lưu lên vùng chứa bạn đã tạo:
Từ Cloud Shell
gsutil cp google.png gs://YOUR-BUCKET-NAME
Bây giờ, hãy xoá hình ảnh đã tải xuống:
Từ Cloud Shell
rm google.png
Tìm Đối tượng của bạn rồi nhấp vào biểu tượng ba dấu chấm ở bên phải và chỉnh sửa quyền thành công khai.


5. Tạo một Trình cân bằng tải
Tiếp theo, chúng ta sẽ tạo một Trình cân bằng tải HTTP.
Chuyển đến phần Networking >> Network services >> Load Balancing >> Create Load Balancer >> HTTP Load Balancer >> Internet to my VMs >> Classic HTTP(S) Load Balancer (Mạng >> Dịch vụ mạng >> Cân bằng tải >> Tạo bộ cân bằng tải >> Bộ cân bằng tải HTTP >> Internet đến các VM của tôi >> Bộ cân bằng tải HTTP(S) cổ điển)
Trước tiên, hãy đặt tên cho trình cân bằng tải mà bạn sẽ tạo.
Tạo vùng lưu trữ phụ trợ
Tạo một vùng chứa phụ trợ mới là vùng chứa bạn vừa tạo, rồi chọn Bật CDN và Lưu nội dung tĩnh vào bộ nhớ đệm. Nhấp vào Tạo.

Tạo quy tắc về máy chủ lưu trữ và đường dẫn
Chuyển đến phần Quy tắc về máy chủ lưu trữ và đường dẫn ở bên trái. Chúng ta sẽ sử dụng một quy tắc đơn giản về máy chủ/đường dẫn và gửi mọi yêu cầu đến nhóm.

Tạo cấu hình giao diện người dùng
Chọn cấu hình giao diện người dùng. Đối với cấu hình giao diện người dùng, chúng ta sẽ sử dụng HTTP (mặc dù HTTPS cũng sẽ hoạt động nếu bạn có chứng chỉ) và địa chỉ IP tạm thời, đồng thời đảm bảo rằng bạn đã chọn mạng cấp cao.

Nhấp vào Tạo
Lấy IP của trình cân bằng tải
Lấy IP của trình cân bằng tải từ bảng điều khiển bằng cách nhấp vào tên trình cân bằng tải trong danh sách trình cân bằng tải cho dự án của bạn.

Truy vấn Trình cân bằng tải
Sau vài phút, hãy thử truy vấn bộ cân bằng tải cho đối tượng mà bạn đã tải lên. Bạn sẽ cần địa chỉ IP của bộ cân bằng tải và tên của hình ảnh. Lệnh có cấu trúc như sau:
Từ nhà ga
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
Đầu ra
armanrye-macbookpro% curl -svo /dev/null http://34.98.81.123/google.png * Trying 34.98.81.123... * TCP_NODELAY set * Connected to 34.98.81.123 (34.98.81.123) port 80 (#0) > GET /google.png HTTP/1.1 > Host: YOUR_IP > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 200 OK < X-GUploader-UploadID: ADPycdtoILI76KVsvBvdVGvSfzaxys1m3zYqCepBrmJxAI48ni24cWCRIdNu-53PX3DS6iycxp6xwFbMpwtcHHZQUQmEBxAgng < Expires: Mon, 13 Dec 2021 22:58:26 GMT < Date: Mon, 13 Dec 2021 21:58:26 GMT < Cache-Control: public, max-age=3600 < Last-Modified: Mon, 13 Dec 2021 21:45:57 GMT < ETag: "8f9327db2597fa57d2f42b4a6c5a9855" < x-goog-generation: 1639431957957903 < x-goog-metageneration: 2 < x-goog-stored-content-encoding: identity < x-goog-stored-content-length: 5969 < Content-Type: image/png < x-goog-hash: crc32c=TeiHTA== < x-goog-hash: md5=j5Mn2yWX+lfS9CtKbFqYVQ== < x-goog-storage-class: STANDARD < Accept-Ranges: bytes < Content-Length: 5969 < Server: UploadServer
Xác thực rằng nội dung của bạn đang được phân phát từ CDN thông qua CDN hoặc tính năng Giám sát cân bằng tải. Bạn có thể đạt được tỷ lệ trùng khớp gần 100%. Nếu cần chạy một vài truy vấn, bạn có thể làm như sau
Từ nhà ga
#for i in `seq 1 50`; do curl http://%loadbalncer-IP%/google.png; done
Xác nhận nội dung do Cloud CDN phân phát
Xác thực rằng bạn đang phân phát lưu lượng truy cập từ CDN bằng cách chuyển đến phần Network Services >> CDN (Dịch vụ mạng >> CDN)

6. Xoá Đối tượng khỏi GCS
Bây giờ, khi bộ nhớ đệm đã được điền sẵn, hãy xoá đối tượng khỏi nhóm để củng cố rằng chúng ta đang áp dụng chính sách cho bộ nhớ đệm chứ không phải cho phần phụ trợ.
Chuyển đến Cloud Storage >> %tên bộ chứa% >> đối tượng
Chọn hình ảnh rồi xoá.

7. Tạo Chính sách bảo mật nội dung trong bộ nhớ đệm cho Bộ nhớ đệm CDN
Chuyển đến Bảo mật mạng >> Cloud Armor rồi nhấp vào tạo chính sách
Chọn các mục sau
Loại chính sách: Chính sách bảo mật nội dung trong bộ nhớ đệm
Hành động mặc định: Từ chối



Áp dụng chính sách này cho nhóm lưu trữ phụ trợ của bạn.
8. Xác thực Chính sách bảo mật nội dung trong bộ nhớ đệm
Bây giờ chúng ta đã tạo một Chính sách bảo mật nội dung trong bộ nhớ đệm trước vùng lưu trữ phụ trợ, hãy xác thực rằng chính sách này đang hoạt động như mong đợi.
Kiểm tra chính sách bảo mật
Sau vài phút, bạn sẽ có thể kiểm tra để biết Cloud Armor Policy đang chạy. Từ dòng lệnh, việc chạy lệnh sau sẽ cho bạn biết lỗi 403
Từ nhà ga
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
Đầu ra
curl -svo /dev/null http://34.98.81.123/google.png * Trying 34.98.81.123... * TCP_NODELAY set * Connected to 34.98.81.123 (34.98.81.123) port 80 (#0) > GET /google.png HTTP/1.1 > Host: YOUR_IP > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 403 Forbidden < X-GUploader-UploadID: ADPycdtS6FtJOGIsiWYDrAAE8VFeQuNutcvbGoQe2t8EZxsuspVtmCjyiTv_P3CNktroHMOGFXkTCfG-Jj-rUO60ZGPpEbpqcw < Content-Type: application/xml; charset=UTF-8 < Content-Length: 111 < Date: Mon, 13 Dec 2021 23:09:35 GMT < Expires: Mon, 13 Dec 2021 23:09:35 GMT < Cache-Control: private, max-age=0 < Server: UploadServer <
Điều tra nhật ký
Tiếp theo, bạn có thể kiểm tra nhật ký để xem chính sách bảo mật cạnh được thực thi. Chuyển đến phần Operations >> Logging >> Logs Explorer (Thao tác >> Ghi nhật ký >> Trình khám phá nhật ký)
Nhập đoạn mã dưới đây vào truy vấn rồi nhấp vào chạy

resource.type:(http_load_balancer) AND jsonPayload.enforcedEdgeSecurityPolicy.name:(%SECURITY_POLICY_NAME%)
Lưu ý phản hồi 403 và chính sách bảo mật bắt buộc

Xoá chính sách bảo mật
Xoá chính sách bảo mật và truy vấn đối tượng từ bộ nhớ đệm.
Chuyển đến Network Security >> Cloud Armor >> %POLICY NAME% >> targets (Bảo mật mạng >> Cloud Armor >> %POLICY NAME% >> mục tiêu) rồi xoá nhóm mục tiêu.

Xác nhận đã xoá chính sách
Sau vài phút, hãy gửi một curl khác đến tài nguyên trong vùng lưu trữ. Lần này, bạn sẽ nhận được phản hồi 200.
Từ nhà ga
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
Đầu ra
armanrye-macbookpro% curl -svo /dev/null http://34.98.81.123/google.png
* Trying 34.98.81.123...
* TCP_NODELAY set
* Connected to 34.98.81.123 (34.98.81.123) port 80 (#0)
> GET /google.png HTTP/1.1
> Host: YOUR_IP
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< X-GUploader-UploadID: ADPycdtI7f49P3MSuZSZ8vl6RwfwmnIDJ59EeSKp7UPvLPawdaiRHXiNWLtseQTxUxceWOvSLvpYmT3pWVkV4qeIP7M
< Date: Mon, 13 Dec 2021 23:06:46 GMT
< Last-Modified: Mon, 13 Dec 2021 21:45:57 GMT
< ETag: "8f9327db2597fa57d2f42b4a6c5a9855"
< x-goog-generation: 1639431957957903
< x-goog-metageneration: 2
< x-goog-stored-content-encoding: identity
< x-goog-stored-content-length: 5969
< Content-Type: image/png
< x-goog-hash: crc32c=TeiHTA==
< x-goog-hash: md5=j5Mn2yWX+lfS9CtKbFqYVQ==
< x-goog-storage-class: STANDARD
< Accept-Ranges: bytes
< Content-Length: 5969
< Server: UploadServer
< Age: 1621
< Cache-Control: public,max-age=3600
<
{ [775 bytes data]
* Connection #0 to host 34.98.81.123 left intact
* Closing connection 0
Xin chúc mừng! Bạn đã hoàn thành bài tập này về Chính sách bảo mật nội dung trong bộ nhớ đệm của Cloud Armor.
©2020 Google LLC Bảo lưu mọi quyền. Google và biểu trưng Google là các nhãn hiệu của Google LLC. Tất cả các tên công ty và sản phẩm khác có thể là nhãn hiệu của công ty liên quan tương ứng.
9. Dọn dẹp phòng thí nghiệm
Chuyển đến Network Security >> Cloud Armor >> %POLICY NAME% (Bảo mật mạng >> Cloud Armor >> %POLICY NAME%) rồi chọn xoá

Chuyển đến Cloud Storage, chọn nhóm tài nguyên bạn đã tạo rồi nhấp vào biểu tượng xoá

Chuyển đến phần Mạng >> Dịch vụ mạng >> Cân bằng tải. Chọn trình cân bằng tải mà bạn đã tạo rồi nhấp vào xoá.

10. Xin chúc mừng!
Bạn đã hoàn tất lớp học lập trình Bảo vệ bộ nhớ đệm biên bằng Cloud Armor!
Nội dung đã đề cập
- Cách thiết lập một bộ chứa bộ nhớ trên đám mây và trình cân bằng tải trên đám mây được liên kết
- Cách tạo Chính sách bảo mật nội dung trong bộ nhớ đệm của Cloud Armor
- Cách xác thực rằng Chính sách bảo mật nội dung trong bộ nhớ đệm đang hoạt động như dự kiến.
Các bước tiếp theo
- Hãy thử thiết lập Chính sách bảo mật biên với một kết quả tìm kiếm trong bộ nhớ cache từ một tài nguyên của Compute Engine.