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

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

事前準備

建立資料夾

在機構中建立資料夾。

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

    前往「Manage resources」(管理資源)

  2. 按一下 [Create folder] (建立資料夾)。

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

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

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

  6. 點選「建立」。

建立專案

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

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

    前往「Manage resources」(管理資源)

  2. 按一下 [Create Project]。

  3. 在「專案名稱」部分,輸入 test-project。

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

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

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

  7. 點選「建立」。

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

在您於前一節建立的專案中,建立兩個自訂模式的虛擬私有雲網路,myvpc 包含僅限 IPv4 的子網路,test-vpc 包含兩個僅限 IPv4 的子網路。

  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 控制台的「Create an instance」(建立執行個體) 頁面。

    前往「建立執行個體」

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

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

    1. 在「Network interfaces」(網路介面) 部分,按一下 default,然後指定下列設定參數:
      • 「Network」(網路):myvpc
      • 「Subnetwork」(子網路):myvpc-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 控制台的「Create an instance」(建立執行個體) 頁面。

    前往「建立執行個體」

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

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

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

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

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

    前往「建立執行個體」

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

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

    1. 在「Network interfaces」(網路介面) 部分,按一下 default,然後指定下列設定參數:
      • 「Network」(網路):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. 在「選取 Cloud Router」部分,指定下列設定參數:

    • 網路:選取「myvpc」。
    • 「Region」(區域):選取「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 中所有其他虛擬私有雲網路的輸出流量。

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

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

    前往專案選取器

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

    前往「Firewall policies」(防火牆政策)

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

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

  5. 在「說明」中輸入 example-firewall-policy。

  6. 按一下「繼續」。

  7. 在「新增規則」部分中,按一下「繼續」。您將在本快速入門導覽課程的後續章節中新增防火牆規則。

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

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

  10. 點選「建立」。

新增防火牆規則,在 test-folder 中的所有 VM 啟用 IAP。

如要讓 IAP 連線至 test-folder 中的所有 VM,您需要在階層式防火牆政策中建立防火牆規則,並符合下列特徵:

  • 套用至 test-folder 中的所有 VM,您希望透過 IAP TCP 轉送功能存取這些 VM。
  • 允許來自 IP 位址範圍「35.235.240.0/20」的輸入流量。這個範圍包含 IAP 用於 TCP 轉送的所有 IP 位址。
  • 允許連線至您希望透過 IAP TCP 轉送功能存取的所有通訊埠,例如適用於 SSH 的通訊埠「22」。

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

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

    前往「Firewall policies」(防火牆政策)

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

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

  4. 在「說明」中輸入 enable-iap。

  5. 在「流量方向」部分,選取「輸入」。

  6. 「相符時執行的動作」請選取「允許」。

  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」(防火牆政策) 頁面。

    前往「Firewall policies」(防火牆政策)

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

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

  4. 在「說明」中輸入 allow-ingress-testvpc。

  5. 在「流量方向」部分,選取「輸入」。

  6. 「相符時執行的動作」請選取「允許」。

  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 允許輸出 VPC 防火牆規則。

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

    前往「Firewall policies」(防火牆政策)

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

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

  4. 在「說明」中輸入 delegate-egress-myvpc。

  5. 在「流量方向」部分,選取「輸出」。

  6. 在「相符時執行的動作」部分,選取「前往下一個」。

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

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

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

  10. 點選「建立」。

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

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

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

    前往「Firewall policies」(防火牆政策)

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

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

  4. 在「說明」中輸入 block-egress-all-traffic。

  5. 在「流量方向」部分,選取「輸出」。

  6. 在「相符時執行的動作」部分,選取「拒絕」。

  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 連線) 對話方塊中,按一下「授權」,然後等待連線建立。

  6. 如要確認系統允許從 myvpc 到 testvpc-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-vm 到 testvpc-apache-vm 的輸出流量已遭封鎖,請執行下列指令:

      curl <internal_IP_testvpc_apache_vm> -m 2
      

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

清除所用資源

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

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

刪除階層式防火牆政策

  1. 前往 Google Cloud 控制台。

    前往 Google Cloud 控制台

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

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

    前往「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 Router」頁面。

    前往 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 網路。

刪除虛擬私有雲網路時,系統也會一併刪除子網路。

刪除專案

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

    前往「Manage resources」(管理資源)

  2. 如果要刪除的專案已附加至機構,請展開「名稱」欄中的「機構」清單。
  3. 在專案清單中選取要刪除的專案,然後點選「Delete」(刪除)。
  4. 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。

刪除資料夾

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

    前往「Manage resources」(管理資源)

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

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

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

後續步驟