設定階層式防火牆政策,允許特定虛擬私有雲網路傳出的輸出流量

瞭解如何建立及設定階層式防火牆政策,允許資料夾中特定虛擬私有雲 (VPC) 網路的輸出流量,以特定 IP 位址做為目的地。防火牆政策會封鎖來自資料夾的所有其他輸出流量。這個頁面會逐步說明如何建立兩個虛擬私有雲網路、在虛擬私有雲網路中建立虛擬機器 (VM) 執行個體、設定具有防火牆規則的階層式防火牆政策,然後測試防火牆政策。

事前準備

建立資料夾

在機構中建立資料夾。

  1. 前往 Google Cloud 控制台的「管理資源」頁面。

    前往「管理資源」

  2. 按一下「建立資料夾」。

  3. 在「Folder name」(資料夾名稱) 中輸入 test-folder

  4. 在「機構」清單中,選取機構資源的名稱。

  5. 在「位置」欄位中,按一下「瀏覽」,然後選取機構資源。

  6. 點選「建立」

建立專案

在您於前一節建立的資料夾中建立專案。

  1. 前往 Google Cloud 控制台的「管理資源」頁面。

    前往「管理資源」

  2. 按一下 [Create Project]

  3. 在「專案名稱」中輸入 test-project

  4. 選取專案的帳單帳戶。

  5. 在「機構」清單中,選取機構資源的名稱。

  6. 在「Location」(位置) 欄位中,按一下「Browse」(瀏覽),展開機構資源名稱,然後選取「test-folder」

  7. 點選「建立」

建立兩個具有 IPv4 子網路的自訂虛擬私有雲網路

在您於前一節中建立的專案中,建立兩個自訂模式的虛擬私有雲網路,分別是具有僅限 IPv4 子網路的 myvpc,以及具有兩個僅限 IPv4 子網路的 test-vpc

  1. 在 Google Cloud 控制台的專案選擇器頁面中,選取「test-project」

    前往專案選取器

  2. 在 Google Cloud 控制台中,前往「VPC networks」(虛擬私有雲網路) 頁面。

    前往「VPC networks」(虛擬私有雲網路)

  3. 按一下「建立虛擬私有雲網路」

  4. 在「Name」(名稱) 中輸入 myvpc

  5. 在「子網路建立模式」部分,選取「自訂」

  6. 在「New subnet」(新子網路) 部分,指定子網路的以下設定參數:

    • 「Name」(名稱):輸入 myvpc-subnet-1
    • 地區:選取 us-central1
    • IPv4 範圍:輸入 10.0.0.0/24
  7. 依序點選「完成」和「建立」

  8. 如要建立其他虛擬私有雲網路,請按一下「建立虛擬私有雲網路」

  9. 在「Name」(名稱) 中輸入 test-vpc

  10. 在「子網路建立模式」部分,選取「自訂」

  11. 在「New subnet」(新子網路) 部分,指定子網路的以下設定參數,然後按一下「Done」(完成)

    • 「Name」(名稱):輸入 testvpc-subnet-1
    • 地區:選取 us-central1
    • IPv4 範圍:輸入 10.0.0.0/16
  12. 如要將其他子網路新增至 test-vpc 網路,請按一下「新增子網路」

  13. 在「New subnet」(新子網路) 部分,指定子網路的以下設定參數,然後按一下「Done」(完成)

    • 「Name」(名稱):輸入 testvpc-subnet-ext
    • 地區:選取 us-central1
    • IPv4 範圍:輸入 192.168.1.0/24
  14. 點選「建立」

建立 VM

在您於前一節中設定的子網路中,建立三個 VM。

myvpc 網路中建立 VM

myvpc 網路中建立沒有外部 IP 位址的 VM。

  1. 前往 Google Cloud 控制台的「建立執行個體」頁面。

    前往「建立執行個體」

  2. 在「機器設定」窗格中,執行下列操作:

    1. 在「Name」(名稱) 中輸入 myvpc-vm
    2. 在「Region」(區域) 中選取 us-central1 (Iowa)
  3. 在導覽選單中,按一下「網路」

    1. 在「Network interfaces」(網路介面) 區段中,按一下 default,然後指定下列設定參數:
      • 網路myvpc
      • 「Subnetwork」(子網路)subnet-1 IPv4 (10.0.0.0/24)
      • 「外部 IPv4 位址」:選取「無」
    2. 按一下 [完成]
  4. 點選「建立」

test-vpc 網路中建立兩個 VM

建立兩個 VM,一個沒有外部 IP 位址,另一個有外部 IP 位址。建立具有外部 IP 位址的 VM 時,請傳遞開機指令碼,在該 VM 中安裝並啟動 Apache 網路伺服器。

建立沒有外部 IP 位址的 VM:

  1. 前往 Google Cloud 控制台的「建立執行個體」頁面。

    前往「建立執行個體」

  2. 在「機器設定」窗格中,執行下列操作:

    1. 在「Name」(名稱) 中輸入 testvpc-vm
    2. 在「Region」(區域) 中選取 us-central1 (Iowa)
  3. 在導覽選單中,按一下「網路」

    1. 在「Network interfaces」(網路介面) 區段中,按一下 default,然後指定下列設定參數:
      • 網路test-vpc
      • 「Subnetwork」(子網路)testvpc-subnet-1 IPv4 (10.0.0.0/16)
      • 「外部 IPv4 位址」:選取「無」
    2. 按一下 [完成]
  4. 點選「建立」

建立具有臨時外部 IP 位址的 VM,並傳遞開機指令碼來安裝及啟動 Apache 網路伺服器:

  1. 前往 Google Cloud 控制台的「建立執行個體」頁面。

    前往「建立執行個體」

  2. 在「機器設定」窗格中,執行下列操作:

    1. 在「Name」(名稱) 中輸入 testvpc-apache-vm
    2. 在「Region」(區域) 中選取 us-central1 (Iowa)
  3. 在導覽選單中,按一下「網路」

    1. 在「Network interfaces」(網路介面) 區段中,按一下 default,然後指定下列設定參數:
      • 網路test-vpc
      • 「Subnetwork」(子網路)testvpc-subnet-ext IPv4 (192.168.1.0/24)
      • 外部 IPv4 位址臨時
    2. 按一下 [完成]
  4. 在導覽選單中,按一下「進階」,並在「開機指令碼」欄位中輸入下列指令碼:

    #! /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 網路伺服器。

  5. 點選「建立」

  6. 從「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 閘道。

  1. 前往 Google Cloud 控制台的「Cloud NAT」頁面。

    前往 Cloud NAT

  2. 按一下「開始使用」或「建立 Cloud NAT 閘道」

    注意:如果這是您建立的第一個 Cloud NAT 閘道,請按一下「開始使用」。如果您已有現有閘道, Google Cloud會顯示「建立 Cloud NAT」閘道按鈕。如要建立其他閘道,請按一下「建立 Cloud NAT」閘道。

  3. 在「Gateway name」(閘道名稱) 輸入 myvpc-gateway

  4. 在「NAT type」(NAT 類型) 中,選取「Public」(公開)

  5. 在「Select Cloud Router」(選取 Cloud Router) 部分,指定下列設定參數:

    • 「Network」(網路):選取「myvpc」
    • 區域:選取「us-central1 (Iowa)」(us-central1 (愛荷華州))
    • Cloud Router:按一下「建立新路由器」
      1. 在「Name」(名稱) 中輸入 myvpc-router
      2. 點選「建立」
  6. 點選「建立」

建立階層式防火牆政策並新增防火牆規則

建立階層式防火牆政策,並在當中新增下列防火牆政策規則:

  • test-folder 中的所有 VM 啟用 IAP,以便取得 VM 的管理員存取權。
  • 允許連入 test-vpc 網路中所有 VM 的流量。
  • myvpc 網路的輸出流量委派給階層中的下一個規則,也就是 VPC firewall implied IPv4 rule egress all 規則
  • 拒絕來自 test-folder 中所有其他 VPC 網路的輸出流量。

如要建立階層式防火牆政策,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的專案選取器頁面,然後選取「test-folder」

    前往專案選取器

  2. 在 Google Cloud 控制台中,前往「Firewall policies」(防火牆政策) 頁面。

    前往「防火牆政策」頁面

  3. 按一下「建立防火牆政策」

  4. 在「設定政策」部分,於「政策名稱」輸入 fw-egress-specific-vpc

  5. 在「Description」(說明) 中輸入 example-firewall-policy

  6. 按一下「繼續」

  7. 在「新增規則」部分中,按一下「繼續」。您會在後續章節中新增防火牆規則。

  8. 在「將政策與資源建立關聯」部分中,按一下「新增」

  9. 展開機構,選取「test-folder」,然後按一下「新增」

  10. 點選「建立」

新增防火牆規則,在 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」。

如要新增防火牆規則,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,前往「Firewall policies」(防火牆政策) 頁面。

    前往「防火牆政策」頁面

  2. 按一下「fw-egress-specific-vpc」,然後按一下「新增規則」

  3. 在「Priority」(優先順序) 中輸入 100

  4. 在「Description」(說明) 中輸入 enable-iap

  5. 在「Direction of traffic」(流量方向) 中選取 [Ingress] (輸入)

  6. 在「Action on match」(相符時執行的動作) 中選取 [Allow] (允許)

  7. 在「來源」部分,於「IP 範圍」中輸入 35.235.240.0/20

  8. 在「Protocols and ports」(通訊協定和通訊埠) 部分,選取「Specified protocols and ports」(指定的通訊協定和通訊埠)

  9. 勾選「TCP」核取方塊,然後在「Ports」(通訊埠) 輸入 22

  10. 點選「建立」

新增防火牆規則,允許 test-vpc 網路中的輸入流量

新增防火牆規則,允許 TCP 通訊埠 80 的 HTTP 網頁流量傳入 test-vpc 網路中的所有 VM:

  1. 在 Google Cloud 控制台中,前往「Firewall policies」(防火牆政策) 頁面。

    前往「防火牆政策」頁面

  2. 依序點選「fw-egress-specific-vpc」和「新增規則」

  3. 在「Priority」(優先順序) 中輸入 200

  4. 在「Description」(說明) 中輸入 allow-ingress-testvpc

  5. 在「Direction of traffic」(流量方向) 中選取 [Ingress] (輸入)

  6. 在「Action on match」(相符時執行的動作) 中選取 [Allow] (允許)

  7. 在「目標」部分中,按一下「新增網路」

  8. 選取包含 test-vpc 網路的測試專案,然後選取「test-vpc」做為網路。

  9. 在「來源」部分,於「IP 範圍」中輸入 0.0.0.0/0

  10. 在「Protocols and ports」(通訊協定和通訊埠) 部分,選取「Specified protocols and ports」(指定的通訊協定和通訊埠)

  11. 勾選「TCP」核取方塊,然後在「Ports」(通訊埠) 輸入 80

  12. 點選「建立」

新增防火牆規則,將 myvpc 網路的輸出流量委派給階層中的下一個規則

新增使用 goto_next 動作的防火牆規則,將 myvpc 網路的輸出流量委派給防火牆中的下一個規則,也就是隱含的 IPv4 允許輸出虛擬私有雲防火牆規則。

  1. 在 Google Cloud 控制台中,前往「Firewall policies」(防火牆政策) 頁面。

    前往「防火牆政策」頁面

  2. 依序點選「fw-egress-specific-vpc」和「新增規則」

  3. 在「Priority」(優先順序) 中輸入 300

  4. 在「Description」(說明) 中輸入 delegate-egress-myvpc

  5. 在「Direction of traffic」(流量方向) 中選取「Egress」(輸出)

  6. 在「Action on match」(相符時執行的動作) 中選取「Go to next」(前往下一個)

  7. 在「目標」部分中,按一下「新增網路」

  8. 選取包含 myvpc 的測試專案名稱,然後選取 myvpc 做為網路。

  9. 在「目的地」部分,針對「IP 範圍」,輸入執行 Apache 網路伺服器的 VM 臨時外部 IP 位址。您已在「在 test-vpc 網路中建立兩個 VM」一節中記下這個 IP 位址。

  10. 點選「建立」

新增防火牆規則,拒絕來自所有其他 VPC 網路的輸出流量

最後,新增防火牆規則,拒絕來自 test-folder 中所有其他虛擬私有雲網路的輸出流量。

  1. 在 Google Cloud 控制台中,前往「Firewall policies」(防火牆政策) 頁面。

    前往「防火牆政策」頁面

  2. 按一下「fw-egress-specific-vpc」,然後按一下「新增規則」

  3. 在「Priority」(優先順序) 中輸入 400

  4. 在「Description」(說明) 中輸入 block-egress-all-traffic

  5. 在「Direction of traffic」(流量方向) 中選取「Egress」(輸出)

  6. 在「Action on match」(相符時執行的動作) 中選取「Deny」(拒絕)

  7. 在「Destination」(目的地) 區段中,在「IP ranges」(IP 範圍) 輸入 0.0.0.0/0

  8. 點選「建立」

測試階層式防火牆政策

設定階層式防火牆政策後,請按照下列步驟測試政策:

  1. 前往 Google Cloud 控制台。

    前往 Google Cloud 控制台

  2. 從頁面頂端的專案挑選器中,選取您建立虛擬私有雲網路的專案 test-project

  3. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

  4. myvpc-vm 的「Connect」(連線) 欄中,按一下「SSH」

  5. 在「SSH-in-browser」(直接透過瀏覽器進行 SSH 連線) 對話方塊中,按一下「Authorize」(授權),然後等待連線建立。

  6. 如要確認系統允許從 myvpctestvpc-apache-vm 的輸出流量,請執行下列指令:

    curl <external_ephemeral_IP_testvpc_apache_vm> -m 2
    

    上述指令會傳回您為 Apache 網路伺服器的 index.html 網頁指定的內容,這表示系統允許從 myvpc 傳出連線。

  7. 如要確認機構中其他虛擬私有雲網路的輸出流量遭到封鎖,請完成下列步驟:

    1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

      前往 VM 執行個體

    2. testvpc-vm 的「Connect」(連線) 欄中,按一下「SSH」

    3. 在「SSH-in-browser」(直接透過瀏覽器進行 SSH 連線) 對話方塊中,按一下「Authorize」(授權),然後等待連線建立。

    4. 如要確認從 testvpc-vmtestvpc-apache-vm 的輸出流量已遭封鎖,請執行下列指令:

      curl <internal_IP_testvpc_apache_vm> -m 2
      

      上述指令會傳回 Connection timed out 訊息,這是預期行為,因為您已建立防火牆規則,拒絕來自機構中所有虛擬私有雲網路的輸出流量,但 myvpc 除外。

清除所用資源

如要避免系統向您的 Google Cloud 帳戶收取本快速入門導覽課程所用資源的費用,請刪除個別資源,然後刪除專案和資料夾。

如要刪除在本快速入門導覽課程中建立的資源,請完成下列工作。

刪除階層式防火牆政策

  1. 前往 Google Cloud 控制台。

    前往 Google Cloud 控制台

  2. 在頁面頂端的專案挑選器中,選取您為本快速入門導覽課程建立資源的 test-folder

  3. 在 Google Cloud 控制台中,前往「Firewall policies」(防火牆政策) 頁面。

    前往「防火牆政策」頁面

  4. 在「與這個節點相關聯的防火牆政策,或是由節點沿用的防火牆政策」部分,按一下「fw-egress-specific-vpc」

  5. 按一下「關聯項目」分頁標籤。

  6. 勾選「test-folder」的核取方塊,然後按一下「移除關聯」

  7. 在「移除與『test-folder』的關聯」對話方塊中,按一下「刪除」

  8. 點選「刪除」。

  9. 在「刪除」fw-egress-specific-vpc對話方塊中,按一下「刪除」

刪除 VM

  1. 前往 Google Cloud 控制台。

    前往 Google Cloud 控制台

  2. 在頁面頂端的專案挑選器中,選取「test-project」

  3. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

  4. 選取「myvpc-vm」、「testvpc-vm」和「testvpc-apache-vm」 的核取方塊。

  5. 點選「刪除」。

  6. 在「Delete instance 3 instances」(刪除 3 個執行個體) 對話方塊中,按一下「Delete」(刪除)

刪除 Cloud Router 和 Cloud NAT 閘道

  1. 前往 Google Cloud 控制台的「Cloud routers」頁面。

    前往 Cloud Router

  2. 勾選「myvpc-router」核取方塊。

  3. 點選「刪除」。

  4. 在「刪除」myvpc-router對話方塊中,按一下「刪除」

刪除 Cloud Router 時,相關聯的 Cloud NAT 閘道也會一併刪除。

刪除虛擬私有雲網路及其子網路

  1. 在 Google Cloud 控制台中,前往「VPC networks」(虛擬私有雲網路) 頁面。

    前往「VPC networks」(虛擬私有雲網路)

  2. 在「Name」(名稱) 欄中,按一下「myvpc」

  3. 按一下「刪除虛擬私有雲網路」

  4. 在「刪除網路」對話方塊中,按一下「刪除」

    同樣地,請刪除 test-vpc 網路。

刪除 VPC 網路時,系統也會一併刪除其子網路。

刪除專案

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. If the project that you plan to delete is attached to an organization, expand the Organization list in the Name column.
  3. In the project list, select the project that you want to delete, and then click Delete.
  4. In the dialog, type the project ID, and then click Shut down to delete the project.

刪除資料夾

  1. 前往 Google Cloud 控制台的「管理資源」頁面。

    前往「管理資源」

  2. 如果要刪除的資料夾已附加至某個機構,請展開「名稱」欄中的「機構」清單。

  3. 在資料夾清單中選取「test-folder」,然後按一下「Delete」(刪除)

  4. 在對話方塊中輸入資料夾 ID,然後按一下「仍要刪除」即可刪除專案。

後續步驟