本頁面說明 VPC Service Controls 和私人叢集的運作方式,以及如何在 Cloud Workstations 中設定這些叢集。
VPC Service Controls
VPC Service Controls 可為工作站提供額外的安全性,協助降低資料遭竊風險。使用 VPC Service Controls 時,可將專案納入 service perimeter,防止來自 perimeter 外的要求存取資源和服務。
在虛擬私有雲服務範圍內使用 Cloud Workstations 的需求如下:
- 為協助保護 Cloud Workstations,每當限制 Cloud Workstations API 時,您都必須限制服務範圍內的 Compute Engine API。
請確認 Google Cloud Storage API 和 Artifact Registry API 在服務範圍內 可透過 VPC 存取。這是將映像檔拉到工作站的必要步驟。 此外,我們建議您在服務安全防護範圍內,允許透過虛擬私有雲存取 Cloud Logging API 和 Cloud Error Reporting API,但使用 Cloud Workstations 時不一定要這麼做。
- 確認工作站叢集為私人。設定私人叢集後,工作站就無法從虛擬私有雲服務周邊以外的位置連線。Cloud Workstations 服務會禁止在 VPC 服務範圍內建立公開叢集。
- 請務必在工作站設定中關閉公開 IP 位址。否則專案中的 VM 會擁有公開 IP 位址。強烈建議您使用
constraints/compute.vmExternalIpAccess機構政策限制,為 VPC 服務範圍內的所有 VM 關閉公用 IP 位址。詳情請參閱「將外部 IP 位址限制為特定 VM」。
如要進一步瞭解 service perimeter,請參閱「Service perimeter 詳細資料和設定」。
架構
將工作站叢集設定為私人叢集時,工作站叢集的控制層只會有內部 IP 位址。也就是說,公用網際網路的用戶端無法連線至工作站叢集的工作站。如要使用私人叢集,您必須透過 Private Service Connect 端點,手動將私人叢集連線至虛擬私有雲 (VPC) 網路。
使用私人叢集時,設定需要兩個 PSC 端點:
預設情況下,雲端工作站會建立一個單獨的 PSC 端點,將控制平面連接到工作站虛擬機器。
你必須為私有叢集建立額外的 PSC 端點。 若要從本機電腦連線到私有叢集中的工作站,本機電腦必須連接到 VPC 網路。使用 雲端 VPN 或 雲端互連 將執行機器的外部網路連接到 VPC 網路。必須在與外部網路透過雲端 VPN 或雲端互連連接的相同網路中建立此附加 PSC 端點。
下圖展示了一個私有叢集的範例架構:
事前準備
開始之前,請確保完成以下必要的設定步驟:
- 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
啟用 Cloud Workstations API。
啟用 API 時所需的角色
如要啟用 API,您必須具備
serviceusage.services.enable權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。 -
請確認您具備專案的 Cloud Workstations 管理員 IAM 角色,才能建立工作站設定。如要在 Google Cloud 控制台中查看 IAM 角色,請前往「IAM」頁面:
-
Cloud Workstations 裝載於從 Compute Engine 預先設定的公開 Container-Optimized OS (COS) 映像檔啟動的 VM。如果強制執行
constraints/compute.trustedimageProjects組織政策限制,您必須設定映像檔存取限制,允許使用者從projects/cos-cloud或所有公開映像檔建立開機磁碟。 -
Cloud Workstations 會使用 Private Service Connect 連線至 Google 管理的服務。如果貴機構強制執行
constraints/compute.restrictPrivateServiceConnectProducer組織政策限制,您必須將 Google 新增為允許的製作人 (under:organizations/433637338589)。 -
如果貴機構強制執行
constraints/compute.disablePrivateServiceConnectCreationForConsumers機構政策限制,請務必允許連線至 Google API 的 Private Service Connect 端點 (GOOGLE_APIS)。 如果您設定私人叢集,也必須允許連至已發布服務的端點 (SERVICE_PRODUCERS)。 -
選用:啟用 Container File System API,加快工作站啟動速度。
詳情請參閱「使用映像檔串流技術縮短工作站啟動時間」。
建立私人叢集
請按照下列步驟建立私人叢集:
前往 Google Cloud 控制台的「Cloud Workstations」頁面。
前往工作站的「叢集管理」頁面。
點選「建立」。
輸入名稱,然後選取工作站叢集的區域。
在「Networking」(網路) 區段中,選取「Networks in this project」(這項專案中的網路)。
選取「Network」(網路) 和「Subnetwork」(子網路)。
對於 網關類型,選擇 私人網關。
選用:指定一個或多個其他項目,這些項目託管私有服務連線端點,從而實現對私有叢集的 HTTP 存取。預設情況下,此端點只能在工作站叢集專案和 VPC 網路主機專案(如果不同)中建立。 如有需要,這些項目也可以在叢集建立後指定。
點選「建立」。在叢集建立過程中,狀態顯示為 正在更新。
建立集群需要幾分鐘才能完成。叢集建立完成後,叢集狀態可能顯示為 降級。完成 建立 PSC 端點 部分中的步驟後,叢集狀態將在幾分鐘內變為 就緒。
啟用私有叢集連接
客戶端無法從公共互聯網連接到私有工作站叢集中的工作站。客戶端必須位於使用 專用服務連接 (PSC) 連接到工作站叢集的網路上。 請依照本節中的步驟連接到工作站:
建立一個 PSC 端點,該端點指向您的工作站服務附件。
使用雲端 DNS 建立 DNS 記錄,將叢集的主機名稱對應到 PSC 端點。
建立私有 Service Connect 端點
請依照以下步驟建立 PSC 端點:
在 Google Cloud 控制台中,前往私有服務連線。
按一下「已連接端點」選項卡,然後按一下「新增連接端點」。
在「目標」部分,選取「已發布的服務」。
在 目標服務 欄位中,輸入為工作站叢集建立的服務附件 URI。您可以透過在控制台上導航到工作站集群,並在 網路設定 下尋找 服務附件 URI 欄位來找到它。
在 Endpoint 欄位中,輸入端點名稱。
選擇端點的 網路,然後選擇 子網路。 此網路應該是您要用來連接工作站的網路,並且必須是您的外部網路透過 Cloud VPN 或 Cloud Interconnect 連接到的網路。
選取端點的 IP 位址。
如果您需要新的 IP 位址,請選擇 建立 IP 位址:
- 請輸入 IP 位址的 名稱 和可選的 描述。
- 對於 靜態 IP 位址,請選擇 自動指派。 對於自訂 IP 位址,請選擇讓我選擇並輸入您要使用的 IP 位址。
- 在「用途」部分,選取「非共用」。
- 點選「保留」。
從下拉式清單中選取「命名空間」,或建立新的命名空間。 Region 根據所選子網路進行填入。
點選新增端點。
複製端點的 IP 位址,以便在下一節中使用它來 建立私人 DNS 區域和 DNS 記錄。
建立私人 DNS 區域
請依照下列步驟為該工作站叢集建立私人 DNS 區域,並將 DNS 名稱設定為您的 clusterHostname,您可以透過在控制台上導覽至您的工作站叢集來找到它。
前往 Google Cloud 控制台的「Create a DNS zone」(建立 DNS 區域) 頁面。
在「Zone type」(區域類型) 中,選取「Private」(私人)。
在「Zone name」(區域名稱) 中輸入名稱,例如
private-workstations-cluster-zone。輸入私人區域的「DNS name」(DNS 名稱) 尾碼,該區域內的所有記錄都具有相同的後綴。將這個名稱設為
clusterHostname。找到你的
clusterHostname導航至雲端工作站 > 叢集管理頁面 Google Cloud 控制台,然後按一下您的工作站叢集以查看主機名稱。新增說明 (如有需要)。
在「Options」(選項) 下方選取「Default (private)」(預設 (私人))。
在建立 PSC 端點的網路中選擇該網路。上一節因為該 IP 位址僅在該網路上有效。
點選「建立」。
有關私有 DNS 區域的更多信息,請參閱 Cloud DNS 文檔,以瞭解如何操作。建立私人區域和雲端 DNS 私有區域的最佳實踐。
建立 DNS 記錄
若要新增一筆將 *.<clusterHostname> 對應到建立 Private Service Connect 端點時保留的 IP 位址的記錄,請依照下列步驟操作:
前往 Google Cloud 控制台的「Cloud DNS zones」(Cloud DNS 區域) 頁面。
按一下要新增記錄的代管區域名稱。
在「Zone details」(區域詳細資料) 頁面中,按一下「Add Standard」(新增標準)。
在建立記錄集頁面,在DNS 名稱輸入欄位
*.<clusterHostname>。在 IP 位址 欄位中,輸入您在上一節中為 Private Service Connect 端點保留的 IP 位址。
點選「建立」。
您的 VPC 網路現在應該已連接到工作站集群,您可以使用此網路連接工作站。
啟用本機 DNS 解析
若要在工作站上使用預設的基於瀏覽器的編輯器,請使用連接到 VPC 網路的電腦上的瀏覽器。您可以使用 雲端 VPN 或 雲端互連 從執行瀏覽器的外部網路連線到 VPC 網路。
若要從外部網路連接,需要在外部網路中設定 DNS。與前面的步驟類似,您可以為 clusterHostname 建立一個 DNS 區域,並新增一筆記錄,將 *.<clusterHostname> 對應到建立 Private Service Connect 端點時保留的 IP 位址。或者,您可以設定 DNS 轉送區域或 DNS 伺服器策略,以允許在您的本機環境和 Google Cloud 環境之間尋找 DNS 名稱。
您可能還需要將 *cloudworkstations.dev 新增到本機基礎架構的允許清單中。
配置用於影像流的 VPC 服務控件
如果您選擇啟用 影像流 以減少工作站啟動時間,且您的工作站叢集位於 VPC 服務控制邊界內,則必須在邊界原則中設定下列內容:
- 將容器檔案系統 API (
containerfilesystem.googleapis.com) 包含在服務邊界的受限服務中。 - 在服務邊界中新增出口規則,允許工作站設定中指定的服務帳戶存取託管容器映像的項目上的容器檔案系統 API。
- 如果您使用預先設定的 IDE,也必須設定輸出規則,允許存取
cloud-workstations-images專案 (專案編號662288601415)。