瞭解如何建立及設定階層式防火牆政策,允許資料夾中特定虛擬私有雲 (VPC) 網路的輸出流量,以特定 IP 位址做為目的地。防火牆政策會封鎖來自資料夾的所有其他輸出流量。這個頁面會逐步說明如何建立兩個虛擬私有雲網路、在虛擬私有雲網路中建立虛擬機器 (VM) 執行個體、設定具有防火牆規則的階層式防火牆政策,然後測試防火牆政策。
事前準備
- 確認您有權存取機構資源。
- 請確認您具備下列 Identity and Access Management (IAM) 角色:
-
機構管理員角色
(roles/resourcemanager.organizationAdmin)
-
資料夾管理員角色
(roles/resourcemanager.folderAdmin)
-
專案建立者角色
(roles/resourcemanager.projectCreator)
-
專案刪除者角色
(roles/resourcemanager.projectDeleter)
-
Compute 網路管理員角色 (
roles/compute.networkAdmin
) -
Compute 組織防火牆政策管理員角色 (
roles/compute.orgFirewallPolicyAdmin
)
-
機構管理員角色
-
Enable the Compute Engine and Identity-Aware Proxy (IAP) APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.
建立資料夾
在機構中建立資料夾。
前往 Google Cloud 控制台的「管理資源」頁面。
按一下「建立資料夾」。
在「Folder name」(資料夾名稱) 中輸入
test-folder
。在「機構」清單中,選取機構資源的名稱。
在「位置」欄位中,按一下「瀏覽」,然後選取機構資源。
點選「建立」。
建立專案
在您於前一節建立的資料夾中建立專案。
前往 Google Cloud 控制台的「管理資源」頁面。
按一下 [Create Project]。
在「專案名稱」中輸入
test-project
。選取專案的帳單帳戶。
在「機構」清單中,選取機構資源的名稱。
在「Location」(位置) 欄位中,按一下「Browse」(瀏覽),展開機構資源名稱,然後選取「test-folder」。
點選「建立」。
建立兩個具有 IPv4 子網路的自訂虛擬私有雲網路
在您於前一節中建立的專案中,建立兩個自訂模式的虛擬私有雲網路,分別是具有僅限 IPv4 子網路的 myvpc
,以及具有兩個僅限 IPv4 子網路的 test-vpc
。
在 Google Cloud 控制台的專案選擇器頁面中,選取「test-project」。
在 Google Cloud 控制台中,前往「VPC networks」(虛擬私有雲網路) 頁面。
按一下「建立虛擬私有雲網路」。
在「Name」(名稱) 中輸入
myvpc
。在「子網路建立模式」部分,選取「自訂」。
在「New subnet」(新子網路) 部分,指定子網路的以下設定參數:
- 「Name」(名稱):輸入
myvpc-subnet-1
。 - 地區:選取 us-central1。
- IPv4 範圍:輸入
10.0.0.0/24
。
- 「Name」(名稱):輸入
依序點選「完成」和「建立」。
如要建立其他虛擬私有雲網路,請按一下「建立虛擬私有雲網路」。
在「Name」(名稱) 中輸入
test-vpc
。在「子網路建立模式」部分,選取「自訂」。
在「New subnet」(新子網路) 部分,指定子網路的以下設定參數,然後按一下「Done」(完成):
- 「Name」(名稱):輸入
testvpc-subnet-1
。 - 地區:選取 us-central1。
- IPv4 範圍:輸入
10.0.0.0/16
。
- 「Name」(名稱):輸入
如要將其他子網路新增至
test-vpc
網路,請按一下「新增子網路」。在「New subnet」(新子網路) 部分,指定子網路的以下設定參數,然後按一下「Done」(完成):
- 「Name」(名稱):輸入
testvpc-subnet-ext
。 - 地區:選取 us-central1。
- IPv4 範圍:輸入
192.168.1.0/24
。
- 「Name」(名稱):輸入
點選「建立」。
建立 VM
在您於前一節中設定的子網路中,建立三個 VM。
在 myvpc
網路中建立 VM
在 myvpc
網路中建立沒有外部 IP 位址的 VM。
前往 Google Cloud 控制台的「建立執行個體」頁面。
在「機器設定」窗格中,執行下列操作:
- 在「Name」(名稱) 中輸入
myvpc-vm
。 - 在「Region」(區域) 中選取
us-central1 (Iowa)
。
- 在「Name」(名稱) 中輸入
在導覽選單中,按一下「網路」。
- 在「Network interfaces」(網路介面) 區段中,按一下
default
,然後指定下列設定參數:- 網路:
myvpc
- 「Subnetwork」(子網路):
subnet-1 IPv4 (10.0.0.0/24)
- 「外部 IPv4 位址」:選取「無」
- 網路:
- 按一下 [完成]。
- 在「Network interfaces」(網路介面) 區段中,按一下
點選「建立」。
在 test-vpc
網路中建立兩個 VM
建立兩個 VM,一個沒有外部 IP 位址,另一個有外部 IP 位址。建立具有外部 IP 位址的 VM 時,請傳遞開機指令碼,在該 VM 中安裝並啟動 Apache 網路伺服器。
建立沒有外部 IP 位址的 VM:
前往 Google Cloud 控制台的「建立執行個體」頁面。
在「機器設定」窗格中,執行下列操作:
- 在「Name」(名稱) 中輸入
testvpc-vm
。 - 在「Region」(區域) 中選取
us-central1 (Iowa)
。
- 在「Name」(名稱) 中輸入
在導覽選單中,按一下「網路」。
- 在「Network interfaces」(網路介面) 區段中,按一下
default
,然後指定下列設定參數:- 網路:
test-vpc
- 「Subnetwork」(子網路):
testvpc-subnet-1 IPv4 (10.0.0.0/16)
- 「外部 IPv4 位址」:選取「無」
- 網路:
- 按一下 [完成]。
- 在「Network interfaces」(網路介面) 區段中,按一下
點選「建立」。
建立具有臨時外部 IP 位址的 VM,並傳遞開機指令碼來安裝及啟動 Apache 網路伺服器:
前往 Google Cloud 控制台的「建立執行個體」頁面。
在「機器設定」窗格中,執行下列操作:
- 在「Name」(名稱) 中輸入
testvpc-apache-vm
。 - 在「Region」(區域) 中選取
us-central1 (Iowa)
。
- 在「Name」(名稱) 中輸入
在導覽選單中,按一下「網路」。
- 在「Network interfaces」(網路介面) 區段中,按一下
default
,然後指定下列設定參數:- 網路:
test-vpc
- 「Subnetwork」(子網路):
testvpc-subnet-ext IPv4 (192.168.1.0/24)
- 外部 IPv4 位址:臨時
- 網路:
- 按一下 [完成]。
- 在「Network interfaces」(網路介面) 區段中,按一下
在導覽選單中,按一下「進階」,並在「開機指令碼」欄位中輸入下列指令碼:
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl # Read VM network configuration: md_vm="http://169.254.169.254/computeMetadata/v1/instance/" vm_hostname="$(curl $md_vm/name -H "Metadata-Flavor:Google" )" filter="{print \$NF}" vm_network="$(curl $md_vm/network-interfaces/0/network \ -H "Metadata-Flavor:Google" | awk -F/ "${filter}")" vm_zone="$(curl $md_vm/zone \ -H "Metadata-Flavor:Google" | awk -F/ "${filter}")" # Apache configuration: echo "Page on $vm_hostname in network $vm_network zone $vm_zone" | \ tee /var/www/html/index.html systemctl restart apache2
上述指令碼會在 VM 中部署及啟動 Apache 網路伺服器。
點選「建立」。
從「VM instances」(VM 執行個體) 頁面,記下指派給這個 VM 的臨時外部 IP 位址。稍後會用到這個外部 IP 位址。
建立 Cloud Router 和 Cloud NAT 閘道
在上一節的 myvpc
網路中,您建立了沒有外部 IP 位址的 myvpc-vm
VM。如要讓 myvpc-vm
VM 透過公開網際網路存取 testvpc-apache-vm
中執行的 Apache 網路伺服器,請在建立 myvpc-vm
VM 的相同子網路上,建立 Cloud Router 和 Cloud NAT 閘道。
前往 Google Cloud 控制台的「Cloud NAT」頁面。
按一下「開始使用」或「建立 Cloud NAT 閘道」。
注意:如果這是您建立的第一個 Cloud NAT 閘道,請按一下「開始使用」。如果您已有現有閘道, Google Cloud會顯示「建立 Cloud NAT」閘道按鈕。如要建立其他閘道,請按一下「建立 Cloud NAT」閘道。
在「Gateway name」(閘道名稱) 輸入
myvpc-gateway
。在「NAT type」(NAT 類型) 中,選取「Public」(公開)。
在「Select Cloud Router」(選取 Cloud Router) 部分,指定下列設定參數:
- 「Network」(網路):選取「myvpc」。
- 區域:選取「us-central1 (Iowa)」(us-central1 (愛荷華州))。
- Cloud Router:按一下「建立新路由器」。
- 在「Name」(名稱) 中輸入
myvpc-router
。 - 點選「建立」。
- 在「Name」(名稱) 中輸入
點選「建立」。
建立階層式防火牆政策並新增防火牆規則
建立階層式防火牆政策,並在當中新增下列防火牆政策規則:
- 為
test-folder
中的所有 VM 啟用 IAP,以便取得 VM 的管理員存取權。 - 允許連入
test-vpc
網路中所有 VM 的流量。 - 將
myvpc
網路的輸出流量委派給階層中的下一個規則,也就是VPC firewall implied IPv4 rule egress all
規則。 - 拒絕來自
test-folder
中所有其他 VPC 網路的輸出流量。
如要建立階層式防火牆政策,請按照下列步驟操作:
前往 Google Cloud 控制台的專案選取器頁面,然後選取「test-folder」。
在 Google Cloud 控制台中,前往「Firewall policies」(防火牆政策) 頁面。
按一下「建立防火牆政策」。
在「設定政策」部分,於「政策名稱」輸入
fw-egress-specific-vpc
。在「Description」(說明) 中輸入
example-firewall-policy
。按一下「繼續」。
在「新增規則」部分中,按一下「繼續」。您會在後續章節中新增防火牆規則。
在「將政策與資源建立關聯」部分中,按一下「新增」。
展開機構,選取「test-folder」,然後按一下「新增」。
點選「建立」。
新增防火牆規則,在 test-folder
中的所有 VM 啟用 IAP
如要讓 IAP 連線至 test-folder
中的所有 VM,您需要在階層式防火牆政策中建立防火牆規則,並符合下列特徵:
- 套用至
test-folder
中所有您希望透過 IAP TCP 轉送功能存取的 VM。 - 允許來自 IP 位址範圍「
35.235.240.0/20
」的輸入流量。這個範圍包含 IAP 用於 TCP 轉送的所有 IP 位址。 - 允許連線至您希望透過 IAP TCP 轉送功能存取的所有通訊埠,例如適用於 SSH 的通訊埠「
22
」。
如要新增防火牆規則,請按照下列步驟操作:
在 Google Cloud 控制台中,前往「Firewall policies」(防火牆政策) 頁面。
按一下「fw-egress-specific-vpc」,然後按一下「新增規則」。
在「Priority」(優先順序) 中輸入
100
。在「Description」(說明) 中輸入
enable-iap
。在「Direction of traffic」(流量方向) 中選取 [Ingress] (輸入)。
在「Action on match」(相符時執行的動作) 中選取 [Allow] (允許)。
在「來源」部分,於「IP 範圍」中輸入
35.235.240.0/20
。在「Protocols and ports」(通訊協定和通訊埠) 部分,選取「Specified protocols and ports」(指定的通訊協定和通訊埠)。
勾選「TCP」核取方塊,然後在「Ports」(通訊埠) 輸入
22
。點選「建立」。
新增防火牆規則,允許 test-vpc
網路中的輸入流量
新增防火牆規則,允許 TCP 通訊埠 80 的 HTTP 網頁流量傳入 test-vpc
網路中的所有 VM:
在 Google Cloud 控制台中,前往「Firewall policies」(防火牆政策) 頁面。
依序點選「fw-egress-specific-vpc」和「新增規則」。
在「Priority」(優先順序) 中輸入
200
。在「Description」(說明) 中輸入
allow-ingress-testvpc
。在「Direction of traffic」(流量方向) 中選取 [Ingress] (輸入)。
在「Action on match」(相符時執行的動作) 中選取 [Allow] (允許)。
在「目標」部分中,按一下「新增網路」。
選取包含
test-vpc
網路的測試專案,然後選取「test-vpc」做為網路。在「來源」部分,於「IP 範圍」中輸入
0.0.0.0/0
。在「Protocols and ports」(通訊協定和通訊埠) 部分,選取「Specified protocols and ports」(指定的通訊協定和通訊埠)。
勾選「TCP」核取方塊,然後在「Ports」(通訊埠) 輸入
80
。點選「建立」。
新增防火牆規則,將 myvpc
網路的輸出流量委派給階層中的下一個規則
新增使用 goto_next
動作的防火牆規則,將 myvpc
網路的輸出流量委派給防火牆中的下一個規則,也就是隱含的 IPv4 允許輸出虛擬私有雲防火牆規則。
在 Google Cloud 控制台中,前往「Firewall policies」(防火牆政策) 頁面。
依序點選「fw-egress-specific-vpc」和「新增規則」。
在「Priority」(優先順序) 中輸入
300
。在「Description」(說明) 中輸入
delegate-egress-myvpc
。在「Direction of traffic」(流量方向) 中選取「Egress」(輸出)。
在「Action on match」(相符時執行的動作) 中選取「Go to next」(前往下一個)。
在「目標」部分中,按一下「新增網路」。
選取包含
myvpc
的測試專案名稱,然後選取myvpc
做為網路。在「目的地」部分,針對「IP 範圍」,輸入執行 Apache 網路伺服器的 VM 臨時外部 IP 位址。您已在「在
test-vpc
網路中建立兩個 VM」一節中記下這個 IP 位址。點選「建立」。
新增防火牆規則,拒絕來自所有其他 VPC 網路的輸出流量
最後,新增防火牆規則,拒絕來自 test-folder
中所有其他虛擬私有雲網路的輸出流量。
在 Google Cloud 控制台中,前往「Firewall policies」(防火牆政策) 頁面。
按一下「fw-egress-specific-vpc」,然後按一下「新增規則」。
在「Priority」(優先順序) 中輸入
400
。在「Description」(說明) 中輸入
block-egress-all-traffic
。在「Direction of traffic」(流量方向) 中選取「Egress」(輸出)。
在「Action on match」(相符時執行的動作) 中選取「Deny」(拒絕)。
在「Destination」(目的地) 區段中,在「IP ranges」(IP 範圍) 輸入
0.0.0.0/0
。點選「建立」。
測試階層式防火牆政策
設定階層式防火牆政策後,請按照下列步驟測試政策:
前往 Google Cloud 控制台。
從頁面頂端的專案挑選器中,選取您建立虛擬私有雲網路的專案
test-project
。前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
在
myvpc-vm
的「Connect」(連線) 欄中,按一下「SSH」。在「SSH-in-browser」(直接透過瀏覽器進行 SSH 連線) 對話方塊中,按一下「Authorize」(授權),然後等待連線建立。
如要確認系統允許從
myvpc
到testvpc-apache-vm
的輸出流量,請執行下列指令:curl <external_ephemeral_IP_testvpc_apache_vm> -m 2
上述指令會傳回您為 Apache 網路伺服器的
index.html
網頁指定的內容,這表示系統允許從myvpc
傳出連線。如要確認機構中其他虛擬私有雲網路的輸出流量遭到封鎖,請完成下列步驟:
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
在
testvpc-vm
的「Connect」(連線) 欄中,按一下「SSH」。在「SSH-in-browser」(直接透過瀏覽器進行 SSH 連線) 對話方塊中,按一下「Authorize」(授權),然後等待連線建立。
如要確認從
testvpc-vm
到testvpc-apache-vm
的輸出流量已遭封鎖,請執行下列指令:curl <internal_IP_testvpc_apache_vm> -m 2
上述指令會傳回
Connection timed out
訊息,這是預期行為,因為您已建立防火牆規則,拒絕來自機構中所有虛擬私有雲網路的輸出流量,但myvpc
除外。
清除所用資源
如要避免系統向您的 Google Cloud 帳戶收取本快速入門導覽課程所用資源的費用,請刪除個別資源,然後刪除專案和資料夾。
如要刪除在本快速入門導覽課程中建立的資源,請完成下列工作。
刪除階層式防火牆政策
前往 Google Cloud 控制台。
在頁面頂端的專案挑選器中,選取您為本快速入門導覽課程建立資源的
test-folder
。在 Google Cloud 控制台中,前往「Firewall policies」(防火牆政策) 頁面。
在「與這個節點相關聯的防火牆政策,或是由節點沿用的防火牆政策」部分,按一下「fw-egress-specific-vpc」。
按一下「關聯項目」分頁標籤。
勾選「test-folder」的核取方塊,然後按一下「移除關聯」。
在「移除與『
test-folder
』的關聯」對話方塊中,按一下「刪除」。點選「刪除」。
在「刪除」
fw-egress-specific-vpc
對話方塊中,按一下「刪除」。
刪除 VM
前往 Google Cloud 控制台。
在頁面頂端的專案挑選器中,選取「test-project」。
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
選取「myvpc-vm」、「testvpc-vm」和「testvpc-apache-vm」 的核取方塊。
點選「刪除」。
在「Delete instance 3 instances」(刪除 3 個執行個體) 對話方塊中,按一下「Delete」(刪除)。
刪除 Cloud Router 和 Cloud NAT 閘道
前往 Google Cloud 控制台的「Cloud routers」頁面。
勾選「myvpc-router」核取方塊。
點選「刪除」。
在「刪除」
myvpc-router
對話方塊中,按一下「刪除」。
刪除 Cloud Router 時,相關聯的 Cloud NAT 閘道也會一併刪除。
刪除虛擬私有雲網路及其子網路
在 Google Cloud 控制台中,前往「VPC networks」(虛擬私有雲網路) 頁面。
在「Name」(名稱) 欄中,按一下「myvpc」。
按一下「刪除虛擬私有雲網路」。
在「刪除網路」對話方塊中,按一下「刪除」。
同樣地,請刪除
test-vpc
網路。
刪除 VPC 網路時,系統也會一併刪除其子網路。
刪除專案
- In the Google Cloud console, go to the Manage resources page.
- If the project that you plan to delete is attached to an organization, expand the Organization list in the Name column.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
刪除資料夾
前往 Google Cloud 控制台的「管理資源」頁面。
如果要刪除的資料夾已附加至某個機構,請展開「名稱」欄中的「機構」清單。
在資料夾清單中選取「test-folder」,然後按一下「Delete」(刪除)。
在對話方塊中輸入資料夾 ID,然後按一下「仍要刪除」即可刪除專案。
後續步驟
- 如要瞭解防火牆政策概念,請參閱防火牆政策總覽。
- 如要瞭解防火牆政策規則概念,請參閱防火牆政策規則總覽。
- 如要建立、更新、監控及刪除虛擬私有雲防火牆規則,請參閱「使用虛擬私有雲防火牆規則」。
- 如要瞭解費用,請參閱 Cloud NGFW 定價。