arrow_back

虛擬私有雲網路 - 控管存取權

登录 加入
访问 700 多个实验和课程

虛擬私有雲網路 - 控管存取權

实验 1 小时 universal_currency_alt 5 积分 show_chart 中级
info 此实验可能会提供 AI 工具来支持您学习。
访问 700 多个实验和课程

GSP213

Google Cloud 自學實驗室標誌

總覽

在現實生活中,您需要隨時保護私密資料,並確保無論何時都能存取網頁應用程式。瞭解如何使用 Google Cloud 虛擬私有雲網路,在 Google Cloud 環境部署更加安全、可擴充且可管理的網路伺服器。

在這個實驗室,您會在預設虛擬私有雲網路建立兩個 nginx 網路伺服器,並使用標記的防火牆規則,控管該伺服器的外部 HTTP 存取權。接著,您會瞭解 IAM 角色和服務帳戶。

  • 兩個網路伺服器可提供備援,如果其中一個伺服器故障,另一個能繼續提供網路流量避免停機。
  • 標記的防火牆規則,可精細控管哪些流量能傳至特定網路伺服器。
  • 將執行任務的權限指派給服務帳戶,並採用最小權限原則來保護 Cloud 資源。

目標

在本實驗室,您將瞭解如何執行下列工作:

  • 在虛擬私有雲網路建立 nginx 網路伺服器
  • 建立標記的防火牆規則
  • 以 IAM 角色建立服務帳戶
  • 瞭解網路管理員和安全管理員角色的權限

設定和需求

瞭解以下事項後,再點選「Start Lab」按鈕

請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。

您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。

為了順利完成這個實驗室,請先確認:

  • 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
  • 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。

如何開始研究室及登入 Google Cloud 控制台

  1. 點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:

    • 「Open Google Cloud console」按鈕
    • 剩餘時間
    • 必須在這個研究室中使用的臨時憑證
    • 完成這個實驗室所需的其他資訊 (如有)
  2. 點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」

    接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。

    提示:您可以在不同的視窗中並排開啟分頁。

    注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」
  3. 如有必要,請將下方的 Username 貼到「登入」對話方塊。

    {{{user_0.username | "Username"}}}

    您也可以在「Lab Details」窗格找到 Username。

  4. 點選「下一步」

  5. 複製下方的 Password,並貼到「歡迎使用」對話方塊。

    {{{user_0.password | "Password"}}}

    您也可以在「Lab Details」窗格找到 Password。

  6. 點選「下一步」

    重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。 注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
  7. 按過後續的所有頁面:

    • 接受條款及細則。
    • 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
    • 請勿申請免費試用。

Google Cloud 控制台稍後會在這個分頁開啟。

注意:如要使用 Google Cloud 產品和服務,請點選「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。「導覽選單」圖示和搜尋欄位

啟動 Cloud Shell

Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。

  1. 點按 Google Cloud 控制台頂端的「啟用 Cloud Shell」圖示 「啟動 Cloud Shell」圖示

  2. 系統顯示視窗時,請按照下列步驟操作:

    • 繼續操作 Cloud Shell 視窗。
    • 授權 Cloud Shell 使用您的憑證發出 Google Cloud API 呼叫。

連線建立完成即代表已通過驗證,而且專案已設為您的 Project_ID。輸出內容中有一行文字,宣告本工作階段的 Project_ID

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud 是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。

  1. (選用) 您可以執行下列指令來列出使用中的帳戶:
gcloud auth list
  1. 點按「授權」

輸出內容:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project

輸出內容:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需 gcloud 的完整說明,請前往 Google Cloud 參閱 gcloud CLI 總覽指南

工作 1:建立網路伺服器

在本節中,您將在預設虛擬私有雲網路,建立 bluegreen 這兩個網路伺服器,接著在網路伺服器安裝 nginx,並修改歡迎頁面以區分伺服器。

建立 blue 伺服器

使用網路標記建立 blue 伺服器。

  1. 依序點選 Cloud 控制台中的「導覽選單」圖示 「導覽選單」圖示 >「Compute Engine」>「VM 執行個體」

  2. 點選「建立執行個體」,建立新的執行個體。

  3. 前往「機器設定」專區。

    選取下列值:

    屬性 值 (按照指示輸入值或選取選項)
    名稱 blue
    區域
    可用區

    如要進一步瞭解可用的區域和可用區,請參閱 Google Cloud Compute Engine 區域和可用區指南中的這個部分

  4. 點選「網路」

    • 在「網路標記」部分,輸入 web-server
    注意:網路會使用網路標記,辨識哪些 VM 執行個體適用特定防火牆規則和網路路由。稍後,您將在這個實驗室建立防火牆規則,允許透過 HTTP 存取有 web-server 標記的 VM 執行個體。您也可以勾選「允許 HTTP 流量」核取方塊,這樣系統就會將這個執行個體標記為 http-server,並建立 tcp:80 標記防火牆規則。
  5. 點選「建立」

測試已完成的工作

點選「Check my progress」,確認工作已完成。如果順利完成,就會看見評估分數。

建立 blue 伺服器。

建立 green 伺服器

不使用網路標記建立 green 伺服器。

  1. 一樣在控制台,點選「VM 執行個體」頁面中的「建立執行個體」

  2. 前往「機器設定」專區。

    選取下列值:

    屬性 值 (按照指示輸入值或選取選項)
    名稱 green
    區域
    可用區
  3. 點選「建立」

測試已完成的工作

點選「Check my progress」,確認工作已完成。如果順利完成,就會看見評估分數。

建立 green 伺服器。

安裝 nginx 並自訂歡迎頁面

在兩個 VM 執行個體安裝 nginx,並修改歡迎頁面以區分伺服器。

  1. 一樣是「VM 執行個體」對話方塊,在 blue 伺服器部分,點選「SSH」啟動終端機並連線。
注意:如果因為發生 SSH authentication failed 錯誤而無法連結 VM,請點選「重試」,重新建立連線。
  1. 在 blue 伺服器的 SSH 終端機,執行下列指令來安裝 nginx:
sudo apt-get install nginx-light -y
  1. 在 nano 編輯器開啟歡迎頁面:
sudo nano /var/www/html/index.nginx-debian.html
  1. <h1>Welcome to nginx!</h1> 換成 <h1>Welcome to the blue server!</h1>
  2. 依序按下 CTRL+oEnter 鍵和 CTRL+x
  3. 確認變更:
cat /var/www/html/index.nginx-debian.html

輸出會包含下列內容:

<h1>Welcome to the blue server!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p>
  1. 關閉 blue 伺服器的 SSH 終端機:
exit

依照相同步驟設定 green 伺服器:

  1. green 部分,點選「SSH」來啟動終端機並連線。
  2. 安裝 nginx:
sudo apt-get install nginx-light -y
  1. 在 nano 編輯器開啟歡迎頁面:
sudo nano /var/www/html/index.nginx-debian.html
  1. <h1>Welcome to nginx!</h1> 換成 <h1>Welcome to the green server!</h1>
  2. 依序按下 CTRL+oEnter 鍵和 CTRL+x
  3. 確認變更:
cat /var/www/html/index.nginx-debian.html

輸出會包含下列內容:

<h1>Welcome to the green server!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p>
  1. 關閉 green 伺服器的 SSH 終端機:
exit

測試已完成的工作

點選「Check my progress」,確認工作已完成。如果順利完成,就會看見評估分數。

安裝 Nginx 並自訂歡迎頁面。

工作 2:建立防火牆規則

建立標記的防火牆規則並測試 HTTP 連線。

建立標記的防火牆規則

使用 web-server 網路標記,建立套用至 VM 執行個體的防火牆規則。

  1. 前往 Cloud 控制台,依序點選「導覽選單」圖示 「導覽選單」圖示 >「虛擬私有雲網路」>「防火牆」
  2. 找到「default-allow-internal」防火牆規則。
注意:default-allow-internal 防火牆規則允許預設網路內所有通訊協定/通訊埠的流量,而您想使用 web-server 網路標記建立防火牆規則,讓此網路外部的流量只傳送至 blue 伺服器。
  1. 點選「Create Firewall Rule」

  2. 設定下方的值,其他屬性均保留預設值:

    屬性 值 (按照指示輸入值或選取選項)
    名稱 allow-http-web-server
    網路 預設
    目標 指定的目標標記
    目標標記 web-server
    來源篩選器 IPv4 範圍
    來源 IPv4 範圍 0.0.0.0/0
    通訊協定和通訊埠 指定的通訊協定和通訊埠:先勾選「TCP」並輸入「80」,接著勾選「其他通訊協定」並輸入「icmp」。
注意:請務必在「來源 IP 範圍」欄位中加入 /0 來指定所有網路。
  1. 點選「建立」

測試已完成的工作

點選「Check my progress」,確認工作已完成。如果順利完成,就會看見評估分數。

建立標記的防火牆規則。

建立 test-vm

使用 Cloud Shell 指令列建立 test-vm 執行個體。

  1. 開啟新的 Cloud Shell 終端機。

  2. 執行下列指令,在 可用區建立 test-vm 執行個體:

gcloud compute instances create test-vm --machine-type=e2-micro --subnet=default --zone={{{project_0.default_zone|ZONE}}}

輸出內容應如下所示:

NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS test-vm {{{project_0.default_zone|ZONE}}} e2-micro 10.142.0.4 35.237.134.68 RUNNING 注意:您可以透過控制台或 gcloud 指令列,輕鬆建立 VM 執行個體。

測試已完成的工作

點選「Check my progress」,確認工作已完成。如果順利完成,就會看見評估分數。

建立 test-vm。

測試 HTTP 連線

test-vm,對 bluegreen 伺服器的內部及外部 IP 位址執行 curl

  1. 前往控制台,依序點選「導覽選單」圖示 「導覽選單」圖示 >「Compute Engine」>「VM 執行個體」
  2. 找到「blue」和「green」伺服器的內部及外部 IP 位址。
  3. test-vm 部分,點選「SSH」來啟動終端機並連線。
  4. 執行下列指令來替換 blue 伺服器的內部 IP,以測試 blue 內部 IP 的 HTTP 連線:
curl <Enter blue's internal IP here>

您會看見 Welcome to the blue server! 標頭。

  1. 執行下列指令來替換 green 伺服器的內部 IP,以測試 green 內部 IP 的 HTTP 連線:
curl -c 3 <Enter green's internal IP here>

您會看見 Welcome to the green server! 標頭。

注意:您可以使用兩個伺服器的內部 IP 位址,透過 HTTP 存取伺服器。test-vm 和網路伺服器的預設網路位於同一個虛擬私有雲網路,default-allow-internal 防火牆規則會允許 tcp:80 的連線。
  1. 執行下列指令來替換 blue 伺服器的外部 IP,以測試 blue 外部 IP 的 HTTP 連線:
curl <Enter blue's external IP here>

您會看見 Welcome to the blue server! 標頭。

  1. 執行下列指令來替換 green 伺服器的外部 IP,以測試 green 外部 IP 的 HTTP 連線:
curl -c 3 <Enter green's external IP here> 注意:這項指令應該無法運作!要求會暫停。
  1. 按下 CTRL+c 鍵即可停止 HTTP 要求。
注意:與預期相同,您僅能透過 HTTP 存取 blue 伺服器的外部 IP 位址,因為 allow-http-web-server 只套用於標有 web-server 標記的 VM 執行個體。

您可以開啟新分頁並前往 http://[External IP of server],確認瀏覽器也有相同情形。

工作 3:瞭解網路與安全管理員角色

有了 Cloud IAM,您就能授權哪些使用者能對特定資源執行動作,完整掌控並瞭解全局,有效集中管理雲端資源。下列角色會與單一專案網路搭配使用,以獨立控管每個虛擬私有雲網路的管理員權限:

  • 網路管理員:可建立、修改及刪除網路資源,但不包括防火牆規則和 SSL 憑證。
  • 安全管理員:可建立、修改及刪除防火牆規則和 SSL 憑證。

將這些角色套用至服務帳戶來進一步瞭解角色。服務帳戶是屬於 VM 執行個體的特殊 Google 帳戶,不是個人使用者的帳戶。您並非要建立新使用者,而是授權 test-vm 使用服務帳戶,展示網路管理員安全管理員角色的權限。

確認目前的權限

目前 test-vm 使用 Compute Engine 預設服務帳戶。當使用 Cloud Shell 指令列和 Cloud 控制台建立任何執行個體時,這個服務帳戶就會在該執行個體上啟用。

試著列出或刪除 test-vm 可用的防火牆規則。

  1. 返回 test-vm 執行個體的 SSH 終端機。
  2. 試著列出可用的防火牆規則:
gcloud compute firewall-rules list

輸出內容應如下所示:

ERROR: (gcloud.compute.firewall-rules.list) Some requests did not succeed: - Insufficient Permission 注意:這項指令應該無法運作!
  1. 試著刪除 allow-http-web-server 防火牆規則:
gcloud compute firewall-rules delete allow-http-web-server
  1. 如果系統詢問是否繼續執行,請輸入 Y

輸出內容應如下所示:

ERROR: (gcloud.compute.firewall-rules.delete) Could not fetch resource: - Insufficient Permission 注意:這項指令應該無法運作! 注意:Compute Engine 預設服務帳戶沒有適當的權限,無法允許您列出或刪除防火牆規則。沒有適當角色的其他使用者同樣無法進行這些操作。

建立服務帳戶

建立服務帳戶並套用網路管理員角色。

  1. 前往控制台,依序點選「導覽選單」圖示 「導覽選單」圖示 >「IAM 與管理」>「服務帳戶」

  2. 找到「Compute Engine 預設服務帳戶」

  3. 點選「建立服務帳戶」

  4. 將「服務帳戶名稱」 設為 Network-admin,接著點選「建立並繼續」

  5. 在「請選擇角色」選單中,選取「Compute Engine」>「Compute 網路管理員」,接著依序點選「繼續」和「完成」

  6. 服務帳戶 Network-admin 建立完成後,點選右上角的三點圖示,在下拉式選單中按一下「管理金鑰」,接著點選「新增金鑰」,在下拉式選單中選取「建立新的金鑰」。點選「建立」下載 JSON 輸出內容。

  7. 點選「關閉」

    JSON 金鑰檔案會下載至本機。找到這個金鑰檔案,您將在後續步驟中將檔案上傳至 VM。

  8. 將本機上的 JSON 金鑰檔案重新命名為 credentials.json

測試已完成的工作

點選「Check my progress」,確認工作已完成。如果順利完成,就會看見評估分數。

建立 Network-admin 服務帳戶。

為 test-vm 授權並確認權限

使用 Network-admin 服務帳戶為 test-vm 授權。

  1. 返回 test-vm 執行個體的 SSH 終端機。
  2. 點選右上角的「上傳檔案」圖示,即可透過 SSH VM 終端機上傳 credentials.json 檔案。
  3. 選取並上傳 credentials.json
  4. 點選「檔案傳輸」視窗中的「關閉」注意:如果出現「無法透過 Cloud Identity-Aware Proxy 連線」對話方塊提示,請點選「重試」後重新上傳檔案。
  5. 使用剛才上傳的憑證為 VM 授權:
gcloud auth activate-service-account --key-file credentials.json 注意:您使用的映像檔已預先安裝 Cloud SDK,不必將 Cloud SDK 初始化。如果您在不同的環境中進行這個實驗室,請務必依照安裝 Cloud SDK 的相關程序操作。
  1. 試著列出可用的防火牆規則:
gcloud compute firewall-rules list

輸出內容應如下所示:

NAME NETWORK DIRECTION PRIORITY ALLOW DENY allow-http-web-server default INGRESS 1000 tcp:80 default-allow-icmp default INGRESS 65534 icmp default-allow-internal default INGRESS 65534 all default-allow-rdp default INGRESS 65534 tcp:3389 default-allow-ssh default INGRESS 65534 tcp:22

這項指令應可正常運作!

  1. 試著刪除 allow-http-web-server 防火牆規則:
gcloud compute firewall-rules delete allow-http-web-server
  1. 如果系統詢問是否繼續執行,請輸入 Y

輸出內容應如下所示:

ERROR: (gcloud.compute.firewall-rules.delete) Could not fetch resource: - Required 'compute.firewall.delete' permission for 'projects/[PROJECT_ID]/global/firewall/allow-http-web-server' 注意:這項指令應該無法運作! 注意:與預期相同,網路管理員角色有列出防火牆規則的權限,但無法修改/刪除規則。

更新服務帳戶並確認權限

Network-admin 服務帳戶提供安全管理員角色來更新帳戶。

  1. 前往控制台,依序點選「導覽選單」圖示 「導覽選單」圖示 >「IAM 與管理」>「身分與存取權管理」

  2. 找到「Network-admin」帳戶。依「名稱」欄辨別帳戶。

  3. 點選 Network-admin 帳戶的「鉛筆」圖示。

  4. 將「角色」改為「Compute Engine」>「Compute 安全管理員」

  5. 點選「儲存」

  6. 返回 test-vm 執行個體的 SSH 終端機。

  7. 試著列出可用的防火牆規則:

gcloud compute firewall-rules list

輸出內容應如下所示:

NAME NETWORK DIRECTION PRIORITY ALLOW DENY allow-http-web-server default INGRESS 1000 tcp:80 default-allow-icmp default INGRESS 65534 icmp default-allow-internal default INGRESS 65534 all default-allow-rdp default INGRESS 65534 tcp:3389 default-allow-ssh default INGRESS 65534 tcp:22

這項指令應可正常運作!

  1. 試著刪除 allow-http-web-server 防火牆規則:
gcloud compute firewall-rules delete allow-http-web-server
  1. 如果系統詢問是否繼續執行,請輸入 Y

輸出內容應如下所示:

Deleted [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-00e186e4b1cec086/global/firewall/allow-http-web-server].

這項指令應可正常運作!

注意:與預期相同,安全管理員角色可列出及刪除防火牆規則。

確認刪除防火牆規則

確認您不能再透過 HTTP 存取 blue 伺服器的外部 IP,因為您已刪除 allow-http-web-server 防火牆規則。

  1. 返回 test-vm 執行個體的 SSH 終端機。
  2. 執行下列指令來替換 blue 伺服器的外部 IP,以測試 blue 外部 IP 的 HTTP 連線:
curl -c 3 <Enter blue's external IP here> 注意:這項指令應該無法運作!
  1. 按下 CTRL+c 鍵即可停止 HTTP 要求。
注意:向合適的使用者或服務帳戶提供安全管理員角色,避免他人擅自變更防火牆規則!

恭喜!

在這個實驗室,您建立了兩個 nginx 網路伺服器,並使用標記的防火牆規則控管外部 HTTP 存取權。接著,您先透過網路管理員角色來建立服務帳戶,然後使用安全管理員角色來瞭解這些角色的權限差異。

後續步驟/瞭解詳情

透過以下實驗室進一步瞭解服務帳戶和角色:

如要進一步瞭解 Google Cloud Identity and Access Management 的基本概念,請參閱這份總覽

Google Cloud 教育訓練與認證

協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。

使用手冊上次更新日期:2025 年 6 月 9 日

實驗室上次測試日期:2025 年 6 月 9 日

Copyright 2025 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。