Chính sách tường lửa phân cấp có các thẻ do IAM quản lý

1. Giới thiệu

Tường lửa thế hệ mới (NGFW) trên đám mây

Tường lửa thế hệ mới trên đám mây là một dịch vụ tường lửa được phân phối đầy đủ, có các chức năng bảo vệ nâng cao, phân đoạn vi mô và phạm vi phủ sóng rộng rãi để bảo vệ các khối lượng công việc trên Google Cloud của bạn khỏi các cuộc tấn công từ bên trong và bên ngoài.

Cloud NGFW có những lợi ích sau:

  • Dịch vụ tường lửa phân tán: Cloud NGFW cung cấp một cơ chế thực thi dựa trên máy chủ lưu trạng thái và được phân phối đầy đủ trên mỗi khối lượng công việc để cho phép kiến trúc bảo mật không tin cậy.
  • Đơn giản hoá việc định cấu hình và triển khai: Cloud NGFW triển khai các chính sách tường lửa theo phân cấp và mạng có thể được đính kèm vào một nút phân cấp tài nguyên. Các chính sách này mang lại trải nghiệm nhất quán về tường lửa trên hệ thống phân cấp tài nguyên của Google Cloud.
  • Kiểm soát chi tiết và phân đoạn vi mô: Sự kết hợp giữa các chính sách tường lửa và Thẻ do giải pháp Quản lý danh tính và quyền truy cập (IAM) kiểm soát giúp kiểm soát chặt chẽ cả lưu lượng truy cập bắc-nam và đông-tây, xuống đến một máy ảo duy nhất, trên các mạng Đám mây riêng ảo (VPC).

Chính sách về tường lửa mạng

Chính sách tường lửa mạng đóng vai trò là một vùng chứa cho các quy tắc tường lửa. Các quy tắc được xác định trong chính sách tường lửa mạng sẽ không được thực thi ở bất kỳ đâu cho đến khi chính sách đó được liên kết với một mạng VPC. Mỗi mạng VPC có thể có một chính sách tường lửa mạng được liên kết. Các chính sách tường lửa mạng hỗ trợ Thẻ do IAM quản lý (hoặc chỉ là Thẻ) trong các quy tắc tường lửa và có thể dùng để cung cấp danh tính cho tải.

Việc chia sẻ chính sách tường lửa mạng trên nhiều mạng và tích hợp với các Thẻ do IAM quản lý giúp đơn giản hoá đáng kể việc định cấu hình và quản lý tường lửa.

Khi chính sách tường lửa mạng được ra mắt, các chính sách tường lửa của Google Cloud hiện bao gồm những thành phần sau:

  1. Chính sách tường lửa theo hệ thống phân cấp
  2. Quy tắc về tường lửa VPC
  3. Chính sách tường lửa mạng toàn cầuChính sách tường lửa mạng theo khu vực

Chính sách tường lửa theo hệ thống phân cấp được hỗ trợ tại các nút tổ chức và thư mục trong hệ thống phân cấp tài nguyên, trong khi các quy tắc tường lửa VPC và chính sách tường lửa mạng được áp dụng ở cấp VPC. Một điểm khác biệt lớn giữa các quy tắc tường lửa VPC và chính sách tường lửa mạng là các quy tắc tường lửa VPC chỉ có thể được áp dụng cho một mạng VPC duy nhất, trong khi chính sách tường lửa mạng có thể được đính kèm vào một VPC duy nhất hoặc nhóm VPC, cùng với những lợi ích khác như cập nhật hàng loạt.

Trong phòng thí nghiệm này, chúng ta sẽ kiểm thử Chính sách tường lửa theo hệ phân cấp và Chính sách tường lửa mạng toàn cầu.

Cuối cùng, chúng ta cũng có các quy tắc tường lửa ngầm định đi kèm với mọi mạng VPC:

  • Một quy tắc lưu lượng truy cập đi có hành động là cho phép, đích đến là 0.0.0.0/0
  • Một quy tắc đầu vào có hành động là từ chối, nguồn là 0.0.0.0/0

Theo mặc định, trình tự thực thi được minh hoạ trong sơ đồ sau:

86df8f0d19c64e80.png

Thẻ do IAM quản lý

Thẻ mới được tích hợp trong các quy tắc chính sách tường lửa là các tài nguyên cặp khoá-giá trị được xác định ở cấp Tổ chức hoặc Dự án trong hệ thống phân cấp tài nguyên của Google Cloud. Thẻ như vậy chứa một chế độ kiểm soát quyền truy cập IAM (như tên gọi), cho biết ai có thể làm gì trên thẻ. Ví dụ: các quyền trong IAM cho phép người dùng chỉ định những người dùng chính nào có thể chỉ định giá trị cho thẻ và những người dùng chính nào có thể đính kèm thẻ vào tài nguyên. Sau khi bạn áp dụng Thẻ cho một tài nguyên, các quy tắc chính sách tường lửa có thể sử dụng thẻ đó để cho phép và từ chối lưu lượng truy cập.

Thẻ tuân theo mô hình tài nguyên kế thừa của Google Cloud, tức là thẻ và giá trị của thẻ được truyền xuống trong hệ thống phân cấp từ thẻ gốc. Do đó, bạn có thể tạo thẻ ở một nơi rồi sử dụng cho các thư mục và dự án khác trong hệ thống phân cấp tài nguyên. Hãy truy cập vào trang này để biết thêm thông tin về thẻ và quy định hạn chế về quyền truy cập.

Bạn không nên nhầm lẫn thẻ với thẻ mạng. Thẻ mạng là các chuỗi có thể được thêm vào các phiên bản Compute Engine; chúng được liên kết với phiên bản và biến mất khi phiên bản ngừng hoạt động. Các quy tắc tường lửa VPC có thể bao gồm thẻ mạng, nhưng vì không được coi là tài nguyên đám mây nên không phải tuân theo chế độ kiểm soát quyền truy cập IAM. Hãy truy cập vào trang này để biết thông tin chi tiết về điểm khác biệt.

2. Kiến thức bạn sẽ học được

  • Cách tạo thẻ do IAM quản lý để sử dụng với Cloud NGFW và có phạm vi toàn cầu.
  • Cách đính kèm thẻ vào máy ảo.
  • Cách tạo Chính sách tường lửa phân cấp và liên kết chính sách đó với một thư mục.
  • Cách tạo quy tắc tường lửa trong Chính sách tường lửa có phân cấp và chỉ định nguồn cũng như đích bằng cách sử dụng các thẻ do IAM quản lý.

3. Cấu trúc tổng thể của phòng thí nghiệm

1bfe78ad755496e5.png

Sắp xếp và phân loại thư mục:

  • Bạn sẽ tạo hai thư mục là folder1folder2 ngay trong tổ chức của mình.

Dự án:

  • Bên trong folder1, bạn sẽ tạo một dự án lưu trữ. Dự án này sẽ chứa mạng VPC dùng chung.
  • Bên trong folder2, bạn sẽ tạo một dự án dịch vụ. Dự án này sẽ chứa các máy ảo sử dụng VPC dùng chung.

Mạng:

  • Mạng VPC có tên mynet sẽ được tạo trong dự án lưu trữ và được định cấu hình làm VPC dùng chung. Điều này cho phép các tài nguyên trong dự án dịch vụ sử dụng mạng.
  • Hai máy ảo sẽ được tạo trong dự án dịch vụ và kết nối với VPC (đám mây riêng ảo) dùng chung mynet.

Thẻ do IAM quản lý:

  • Bạn sẽ tạo một thẻ do IAM quản lý có tên là http_tags với hai giá trị, tên là http_serverhttp_client ở cấp tổ chức. Các thẻ/giá trị này sẽ được dùng để xác định và áp dụng các quy tắc tường lửa cho các VM.

Chính sách tường lửa:

  • Một Chính sách tường lửa theo hệ phân cấp sẽ được tạo và liên kết với folder1. Một quy tắc trong chính sách này sẽ sử dụng các thẻ do IAM quản lý để cho phép lưu lượng truy cập từ http-client đến http-server trên cổng 80.
  • Một Chính sách tường lửa mạng sẽ được tạo trong dự án lưu trữ và liên kết với VPC mynet. Chính sách này sẽ bao gồm một quy tắc cho phép quyền truy cập SSH IAP vào các VM cho mục đích kiểm thử.

4. Các bước chuẩn bị

Trước tiên, hãy thiết lập các vai trò IAM, cơ sở hạ tầng mạng và các phiên bản cần thiết trong tổ chức của bạn trên Google Cloud.

Các vai trò IAM cần thiết để thực hiện bài thực hành

Chúng ta bắt đầu bằng việc chỉ định các vai trò IAM bắt buộc cho tài khoản GCP ở cấp Tổ chức.

  • Quản trị viên tổ chức (roles/resourcemanager.organizationAdmin) Vai trò này cho phép bạn quản lý các chính sách IAM và xem chính sách tổ chức cho các tổ chức, thư mục và dự án.
  • Quản trị viên thẻ(roles/resourcemanager.tagAdmin) Vai trò này cho phép bạn tạo, cập nhật và xoá các thẻ bảo mật.
  • Vai trò Người dùng thẻ (roles/resourcemanager.tagUser) Vai trò này cho phép bạn truy cập vào danh sách thẻ bảo mật và quản lý mối liên kết của các thẻ đó với tài nguyên.
  • Vai trò Quản trị viên chính sách tường lửa của tổ chức Compute (roles/compute.orgFirewallPolicyAdmin) Vai trò này cho phép bạn kiểm soát hoàn toàn Chính sách tường lửa của tổ chức Compute Engine.
  • Vai trò Quản trị viên tài nguyên tổ chức Compute (roles/compute.orgSecurityResourceAdmin) Vai trò này cho phép bạn kiểm soát hoàn toàn các mối liên kết Chính sách tường lửa của Compute Engine với tổ chức hoặc thư mục.
  • Quản trị viên mạng máy tính (roles/compute.networkAdmin) Vai trò này cho phép bạn kiểm soát hoàn toàn các tài nguyên mạng của Compute Engine.
  • Quản trị viên phiên bản máy tính( bản thử nghiệm) (roles/compute.instanceAdmin) Vai trò này cho phép bạn có toàn quyền kiểm soát các tài nguyên đối tượng trong Compute Engine.
  • Quản trị viên ghi nhật ký (roles/logging.admin) Vai trò này cho phép bạn truy cập vào tất cả các quyền ghi nhật ký và các quyền phụ thuộc.
  • Quản trị viên tài khoản dịch vụ (roles/iam.serviceAccountAdmin) Vai trò này cho phép bạn tạo và quản lý tài khoản dịch vụ.
  • Quản trị viên sử dụng dịch vụ (roles/serviceusage.serviceUsageAdmin) Vai trò này cho phép bạn bật, tắt và kiểm tra trạng thái dịch vụ, kiểm tra các thao tác, cũng như sử dụng hạn mức và thông tin thanh toán cho một dự án người dùng.
  • Quản trị viên VPC dùng chung cho hoạt động tính toán (roles/compute.xpnAdmin) Vai trò này cho phép bạn quản trị một mạng VPC dùng chung (XPN).

Tạo thư mục và dự án

Trong Cloud Shell, hãy thực hiện các bước sau để tạo folder1folder2:

gcloud auth login

export org_id=$(gcloud organizations list --format='value(ID)')
export BILLING_ACCOUNT_ID=$(gcloud billing accounts list --format='value(ACCOUNT_ID)')
export folder1=[FOLDER1 NAME]
export folder2=[FOLDER2 NAME]
export hostproject=[HOST PROJECT NAME]
export serviceproject=[SERVICE PROJECT NAME]
export regionname=[REGION NAME]
export zonename=[COMPUTE ZONE NAME]

gcloud resource-manager folders create --display-name=$folder1 --organization=$org_id
export folder1_id=$(gcloud resource-manager folders list --organization=$org_id --filter="displayName=$folder1" --format="value(ID)")
gcloud resource-manager folders create --display-name=$folder2 --organization=$org_id
export folder2_id=$(gcloud resource-manager folders list --organization=$org_id --filter="displayName=$folder2" --format="value(ID)")

Trong Cloud Shell, hãy thực hiện các bước sau để tạo dự án lưu trữ trong folder1:

gcloud projects create  --name=$hostproject --folder=$folder1_id

Bạn sẽ thấy những thông tin sau. Nhấn Y để tạo dự án bằng mã dự án mới.

No project ID provided.

Use [NEW-PROJECT-ID] as project ID (Y/n)?

Ghi lại mã dự án. Trong Cloud Shell, hãy thực hiện các bước sau để xuất tệp này sang hostproject_id:

export hostproject_id=[HOSTPROJECT ID]

Trong Cloud Shell, hãy thực hiện các bước sau để liên kết dự án lưu trữ với tài khoản thanh toán:

gcloud billing projects link $hostproject_id \
--billing-account=$BILLING_ACCOUNT_ID

Trong Cloud Shell, hãy thực hiện các bước sau để tạo dự án dịch vụ trong folder2:

gcloud projects create  --name=$serviceproject --folder=$folder2_id

Bạn sẽ thấy những thông tin sau. Nhấn Y để tạo dự án bằng mã dự án mới.

No project ID provided.

Use [NEW-PROJECT-ID] as project ID (Y/n)?

Ghi lại mã dự án. Trong Cloud Shell, hãy thực hiện các bước sau để xuất tệp này sang serviceproject_id:

export serviceproject_id=[SERVICEPROJECT ID]

Trong Cloud Shell, hãy thực hiện các bước sau để liên kết dự án dịch vụ với tài khoản thanh toán:

gcloud billing projects link $serviceproject_id \
--billing-account=$BILLING_ACCOUNT_ID

Tạo thẻ chịu sự quản lý của IAM

Thẻ là một cặp khoá-giá trị có thể gắn với một tổ chức, thư mục hoặc dự án. Hãy xem bài viết Tạo và quản lý thẻ cũng như các quyền bắt buộc để biết thêm thông tin chi tiết.

Chúng ta tạo một thẻ ở cấp tổ chức, http-tags. Mục đích của thẻ này là để sử dụng Cloud NGFW. Chúng tôi không giới hạn phạm vi ở một mạng duy nhất – thẻ này có phạm vi toàn cầu. Sau đó, chúng ta sẽ áp dụng thẻ cho các VM được tạo trong dự án dịch vụ trong folder2.

Trong Cloud Shell, hãy thực hiện các bước sau:

gcloud resource-manager tags keys create http_tags \
    --parent=organizations/$org_id \
    --purpose GCE_FIREWALL \
    --purpose-data organization=auto

Chúng tôi sẽ sử dụng mã khoá thẻ để chú thích VM trong quá trình tạo. Trong Cloud Shell, hãy thực hiện các bước sau để lấy mã khoá thẻ:

export http_tags_id=$(gcloud resource-manager tags keys describe $org_id/http_tags --format="value(name)")
echo $http_tags_id

Trong Cloud Shell, hãy thực hiện các bước sau để tạo 2 giá trị thẻ mới, http_serverhttp_client:

 gcloud resource-manager tags values create http_server \
      --parent $org_id/http_tags
 gcloud resource-manager tags values create http_client \
      --parent $org_id/http_tags

Chúng ta sẽ sử dụng mã thẻ và mã giá trị thẻ để chú thích VM trong quá trình tạo. Trong Cloud Shell, hãy thực hiện các bước sau để lấy mã nhận dạng giá trị thẻ của http_serverhttp_client:

export http_tags_http_server_id=$(gcloud resource-manager tags values describe $org_id/http_tags/http_server --format="value(name)")
echo $http_tags_http_server_id

export http_tags_http_client_id=$(gcloud resource-manager tags values describe $org_id/http_tags/http_client --format="value(name)")
echo $http_tags_http_client_id

Bật API trong dự án lưu trữ và dự án dịch vụ

Trong Cloud Shell, hãy thực hiện các bước sau:

gcloud services enable compute.googleapis.com --project=$serviceproject_id
gcloud services enable compute.googleapis.com --project=$hostproject_id

Tạo một VPC trong dự án lưu trữ

Trong dự án lưu trữ, hãy tạo một mạng VPC ở chế độ mạng con tuỳ chỉnh, thực hiện các thao tác sau trong Cloud Shell:

gcloud compute networks create mynet \
    --subnet-mode=custom \
    --project=$hostproject_id

Tạo mạng con trong dự án lưu trữ

Trong Cloud Shell, hãy thực hiện các bước sau để tạo một mạng con IPV4:

gcloud compute networks subnets create mysubnet \
    --network=mynet \
    --range=10.0.0.0/28 \
    --region=$regionname \
    --project=$hostproject_id

Bật VPC dùng chung trong dự án lưu trữ

Trong Cloud Shell, hãy thực hiện các bước sau để bật VPC dùng chung trong dự án lưu trữ:

gcloud compute shared-vpc enable $hostproject_id

Đính kèm dự án dịch vụ cho VPC dùng chung trong dự án lưu trữ

Trong Cloud Shell, hãy thực hiện các bước sau để đính kèm dự án dịch vụ cho VPC dùng chung trong dự án lưu trữ:

gcloud compute shared-vpc associated-projects add $serviceproject_id --host-project=$hostproject_id 

Tạo Cloud Router và Cloud NAT trong dự án lưu trữ

Cloud NAT được dùng để cho phép lưu lượng truy cập internet đi ra cho các VM tải xuống và cài đặt ứng dụng.

gcloud compute routers create $regionname-cr \
   --network=mynet \
   --region=$regionname \
   --project=$hostproject_id
gcloud compute routers nats create $regionname-nat \
    --router=$regionname-cr \
    --region=$regionname \
    --nat-all-subnet-ip-ranges \
    --auto-allocate-nat-external-ips \
    --project=$hostproject_id

Tạo các phiên bản trong dự án dịch vụ

Trong dự án dịch vụ, hãy tạo 2 phiên bản trong các mạng con mà bạn vừa tạo trong VPC dùng chung trong hostproject. Một thực thể có tên là http-server và chúng ta chú thích thẻ của http_tags bằng giá trị http_server. Một thực thể khác có tên là http-client và chúng ta chú thích thẻ của http_tags bằng giá trị của http_client. Chạy(các) lệnh sau trong Cloud Shell:

gcloud compute instances create http-client \
    --project=$serviceproject_id \
   --subnet=projects/$hostproject_id/regions/$regionname/subnetworks/mysubnet \
    --zone=$zonename \
    --no-address \
    --resource-manager-tags=$http_tags_id=$http_tags_http_client_id

gcloud compute instances create http-server \
    --project=$serviceproject_id \
    --subnet=projects/$hostproject_id/regions/$regionname/subnetworks/mysubnet \
    --zone=$zonename \
    --no-address \
    --resource-manager-tags=$http_tags_id=$http_tags_http_server_id \
    --metadata startup-script='#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    a2enmod ssl
    sudo a2ensite default-ssl
    echo "I am a Http Server." | \
    tee /var/www/html/index.html
    systemctl restart apache2'

Ghi lại IP nội bộ của http-server. Chúng ta sẽ sử dụng nó trong bước kiểm thử quy tắc tường lửa sau này.

export http_server_ip=$(gcloud compute instances describe http-server --zone $zonename --format='value(networkInterfaces[0].networkIP)' --project $serviceproject_id)
echo $http_server_ip

5. Tạo một chính sách tường lửa mạng toàn cầu trong dự án lưu trữ

Chúng ta sẽ tạo một chính sách tường lửa mạng toàn cầu trong dự án lưu trữ và liên kết chính sách đó với VPC dùng chung trong dự án lưu trữ.

gcloud config set project $hostproject_id
gcloud compute network-firewall-policies create  mynet-fw-policy \
--global \
--project=$hostproject_id
gcloud compute network-firewall-policies associations create \
    --firewall-policy=mynet-fw-policy \
    --network=mynet \
    --name=mynet-fw-policy \
    --global-firewall-policy \
    --project=$hostproject_id

Để cho phép IAP kết nối với các phiên bản máy ảo, hãy tạo một quy tắc tường lửa trong chính sách tường lửa mạng:

  • Áp dụng cho tất cả các phiên bản máy ảo mà bạn muốn có thể truy cập bằng IAP.
  • Cho phép lưu lượng truy cập vào từ dải IP 35.235.240.0/20. Dải này chứa tất cả địa chỉ IP mà IAP sử dụng để chuyển tiếp TCP.
gcloud compute network-firewall-policies rules create 1000 \
    --action=ALLOW \
    --firewall-policy=mynet-fw-policy \
    --description="mynet-allow-iap" \
    --direction=INGRESS \
    --src-ip-ranges=35.235.240.0/20 \
    --layer4-configs=tcp:22  \
    --global-firewall-policy \
    --project=$hostproject_id

Trong bảng điều khiển, bạn có thể chuyển đến dự án lưu trữ và tìm chính sách tường lửa mạng toàn cầu mới tạo trong mục Chính sách tường lửa. Bạn có thể kiểm tra quy tắc tường lửa mới tạo trong chính sách tường lửa mạng. Đây là đường liên kết đến bảng điều khiển để đưa bạn đến đó. Vui lòng nhớ chuyển bộ chọn dự án sang dự án lưu trữ trong bảng điều khiển.

6. Kiểm thử quyền truy cập từ máy ảo http-client đến máy ảo http-server

SSH đến VM có tên http-client và kiểm tra xem VM đó có thể truy cập vào http-server tại cổng http 80 hay không.

Trong Cloud Shell, hãy thực hiện các bước sau:

gcloud compute ssh \
    --zone=$zonename "http-client" \
    --tunnel-through-iap \
    --project=$serviceproject_id

Sử dụng curl để truy cập vào máy chủ web.

curl -m 10 [http_server_ip]

Bạn sẽ thấy kết quả của lệnh curl. Không có quy tắc tường lửa cho lưu lượng truy cập vào để cho phép cổng 80 cho http-server.

Đã hết thời gian chờ kết nối sau 10.000 mili giây.

Quay lại Cloud Shell bằng cách thoát phiên SSH.

exit

7. Tạo chính sách tường lửa và quy tắc tường lửa theo phân cấp

Chúng ta sẽ tạo một Chính sách tường lửa theo hệ thống phân cấp tại folder1 và liên kết chính sách đó với folder1. Các quy tắc tường lửa trong chính sách sẽ áp dụng cho dự án lưu trữ trong folder1.

Tạo chính sách tường lửa phân cấp

gcloud compute firewall-policies create \
  --folder=$folder1_id \
  --short-name=my-folder1-fw-policy

Tạo quy tắc tường lửa trong Chính sách tường lửa phân cấp

Quy tắc này cho phép các VM có giá trị thẻ là http_tags/http_client truy cập vào các VM có giá trị thẻ là http_tags/http_server tại cổng tcp 80.

gcloud compute firewall-policies rules create 100 \
  --organization=$org_id \
  --firewall-policy my-folder1-fw-policy \
  --direction=INGRESS \
  --layer4-configs=tcp:80 \
  --action=allow \
  --src-secure-tags=$org_id/http_tags/http_client \
  --target-secure-tags=$org_id/http_tags/http_server \
  --description=folder1-allow-http

Liên kết Chính sách tường lửa theo hệ thống phân cấp với folder1

gcloud compute firewall-policies associations create \
   --firewall-policy=my-folder1-fw-policy \
   --folder=$folder1_id \
   --name=my-folder1-fw-policy\
   --organization=$org_id

Trên bảng điều khiển, bạn có thể chuyển đến folder1 và tìm chính sách tường lửa phân cấp mới tạo trong phần Chính sách tường lửa. Chính sách tường lửa xuất hiện trong phần "Chính sách tường lửa nằm trong thư mục này". Bạn có thể kiểm tra quy tắc tường lửa mới tạo trong chính sách tường lửa theo hệ phân cấp. Đây là đường liên kết đến bảng điều khiển để đưa bạn đến đó. Vui lòng nhớ thay đổi bộ chọn dự án thành folder1 trong bảng điều khiển.

8. Kiểm thử quyền truy cập từ máy ảo http-client đến máy ảo http-server

Kiểm tra các chính sách tường lửa có hiệu lực được áp dụng cho VPC dùng chung trong dự án lưu trữ.

Trong Cloud Shell, hãy thực hiện các bước sau:

gcloud compute networks get-effective-firewalls mynet --project=$hostproject_id

Bạn sẽ thấy chính sách tường lửa phân cấp được kế thừa như sau:

TYPE: org-firewall
FIREWALL_POLICY_NAME: <NUMBER_FOR_YOUR_FW_POLICY>
FIREWALL_POLICY_PRIORITY: 
PRIORITY: 100
ACTION: ALLOW
DIRECTION: INGRESS
DISABLED: False
IP_RANGES:

You will see the network firewall policy to the VPC like this:
TYPE: network-firewall-policy
FIREWALL_POLICY_NAME: mynet-fw-policy
FIREWALL_POLICY_PRIORITY: 1000
PRIORITY: 1000
ACTION: ALLOW
DIRECTION: INGRESS
DISABLED: False
IP_RANGES: 35.235.240.0/20

SSH đến VM có tên http-client và kiểm tra xem VM đó có thể truy cập vào http-server tại cổng http 80 hay không.

Trong Cloud Shell, hãy thực hiện các bước sau:

gcloud compute ssh \
    --zone=$zonename "http-client" \
    --tunnel-through-iap \
    --project=$serviceproject_id

Sử dụng curl để truy cập vào máy chủ web.

curl [http_server_ip]

Bạn sẽ thấy lệnh curl trả về phản hồi thành công từ http-server.

I am a Http Server.

Quy tắc tường lửa cho lưu lượng truy cập đến từ Chính sách tường lửa theo hệ phân cấp cho phép truy cập từ http-client đến http-server tại cổng 80.

Quay lại Cloud Shell bằng cách thoát phiên SSH.

exit

9. Dọn dẹp

Dọn dẹp các máy ảo trong dự án dịch vụ

Trong Cloud Shell, hãy thực hiện các bước sau:

gcloud compute instances delete http-server --zone $zonename --project=$serviceproject_id
gcloud compute instances delete http-client --zone $zonename --project=$serviceproject_id

Dọn dẹp Chính sách tường lửa theo hệ phân cấp

Trong Cloud Shell, hãy thực hiện các bước sau:

gcloud compute firewall-policies associations delete my-folder1-fw-policy \
   --firewall-policy=my-folder1-fw-policy \
   --organization=$org_id
gcloud compute firewall-policies rules delete 100 \
  --organization=$org_id \
  --firewall-policy=my-folder1-fw-policy
gcloud compute firewall-policies delete my-folder1-fw-policy \
  --organization=$org_id

Dọn dẹp thẻ ở cấp tổ chức

Trong Cloud Shell, hãy thực hiện các bước sau:

gcloud resource-manager tags values delete $http_tags_http_server_id
gcloud resource-manager tags values delete $http_tags_http_client_id
gcloud resource-manager tags keys delete $http_tags_id

Dọn dẹp dự án lưu trữ

Trong Cloud Shell, hãy thực hiện các bước sau:

gcloud compute shared-vpc associated-projects remove $serviceproject_id --host-project=$hostproject_id 
gcloud compute shared-vpc disable $hostproject_id
gcloud projects delete $hostproject_id

Dọn dẹp dự án dịch vụ

Trong Cloud Shell, hãy thực hiện các bước sau:

gcloud projects delete $serviceproject_id

Dọn dẹp thư mục

Trong Cloud Shell, hãy thực hiện các bước sau:

gcloud resource-manager folders delete $folder1_id
gcloud resource-manager folders delete $folder2_id

10. Xin chúc mừng

Bạn đã kiểm thử thành công Chính sách tường lửa theo hệ phân cấp bằng các thẻ do IAM quản lý.