arrow_back

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

登录 加入
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

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

实验 1 小时 universal_currency_alt 5 积分 show_chart 中级
info 此实验可能会提供 AI 工具来支持您学习。
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 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」圖示

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

您在本工作階段中的 Cloud Platform 專案會設為「YOUR_PROJECT_ID」

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

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

  2. 輸出畫面應如下所示:

輸出內容:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project

輸出內容:

[core] project = <project_ID>

輸出內容範例:

[core] project = qwiklabs-gcp-44776a13dea667a6 附註:如需有關 gcloud 的完整說明,請前往 Google Cloud 並參閱「gcloud CLI overview guide」(gcloud CLI 總覽指南)。

工作 1:建立網路伺服器

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

建立 blue 伺服器

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

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

  2. 點選「建立執行個體」

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

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

    如要進一步瞭解可用的區域和可用區,請前往 Google Cloud Compute Engine 區域和可用區指南,參閱「Available regions and zones」一節。

  4. 依序點選「進階選項」>「網路」

  5. 在「網路標記」部分,輸入 web-server

注意:網路會使用網路標記,來辨識哪些 VM 執行個體受制於特定防火牆規則和網路路徑。稍後,您將在這個研究室建立防火牆規則,運用 web-server 標記允許透過 HTTP 存取 VM 執行個體。您也能勾選「允許 HTTP 流量」核取方塊,執行個體就會標記為 http-server 並建立 tcp:80 標記防火牆規則。
  1. 點選「建立」

測試已完成的工作

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

建立 blue 伺服器。

建立 green 伺服器

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

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

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

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

測試已完成的工作

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

建立 green 伺服器。

安裝 nginx 並自訂歡迎頁面

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

  1. 一樣在「VM 執行個體」對話方塊,在 blue 伺服器部分,點選「SSH」來啟動終端機並連線。

  2. 在 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.firewalls.delete' permission for 'projects/[PROJECT_ID]/global/firewalls/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/firewalls/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 Identity and Access Management 總覽

Google Cloud 教育訓練與認證

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

使用手冊上次更新日期:2024 年 2 月 2 日

研究室上次測驗日期:2023 年 9 月 19 日

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

此内容目前不可用

We will notify you via email when it becomes available

太好了!

We will contact you via email if it becomes available