設定 VPC Service Controls 和私人叢集

本頁面說明 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 在服務安全防護範圍內 可透過虛擬私有雲存取。這是將映像檔拉到工作站的必要步驟。 此外,我們建議您在服務安全防護範圍內,允許透過虛擬私有雲存取 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 端點,手動將私人叢集連線至虛擬私有雲網路。

使用私人叢集設定時,需要兩個 PSC 端點:

  • 根據預設,Cloud Workstations 會建立個別的 PSC 端點,將控制層連線至工作站 VM。

  • 您必須為私人叢集建立額外的 PSC 端點。如要從本機連線至私人叢集中的工作站,本機必須連線至虛擬私有雲網路。使用 Cloud VPN 或 Cloud Interconnect,將執行機器的外部網路連線至 VPC 網路。這個額外的 PSC 端點必須在外部網路連線的網路中建立,並使用 Cloud VPN 或 Cloud Interconnect。

下圖說明私有叢集的架構範例:

圖 1. 私人叢集

事前準備

開始前,請務必完成下列必要設定步驟:

  1. 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. 如果尚未啟用,請啟用 Cloud Workstations API。

    啟用 API 時所需的角色

    如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。

    啟用 API

  7. 請確認您具備專案的 Cloud Workstations 管理員 IAM 角色,才能建立工作站設定。如要在 Google Cloud 控制台中查看 IAM 角色,請前往「IAM」(身分與存取權管理) 頁面:

    前往 IAM

  8. Cloud Workstations 託管於從 Compute Engine 預先設定的公開 Container-Optimized OS (COS) 映像檔啟動的 VM。如果強制執行 constraints/compute.trustedimageProjects 機構政策限制,您必須設定映像檔存取限制,允許使用者從 projects/cos-cloud 或所有公開映像檔建立開機磁碟。
  9. Cloud Workstations 會使用 Private Service Connect 連線至 Google 管理的服務。如果貴機構強制執行constraints/compute.restrictPrivateServiceConnectProducer組織政策限制,您必須將 Google 新增為允許的製作人 (under:organizations/433637338589)。
  10. 如果貴機構強制執行 constraints/compute.disablePrivateServiceConnectCreationForConsumers 機構政策限制,請務必允許連線至 Google API 的 Private Service Connect 端點 (GOOGLE_APIS)。 如果您設定私人叢集,也必須允許連線至已發布服務的端點 (SERVICE_PRODUCERS)。
  11. 選用:啟用 Container File System API,加快工作站啟動速度。

    啟用 Container File System API

    詳情請參閱「使用映像檔串流縮短工作站啟動時間」。

建立私人叢集

請按照下列步驟建立私人叢集:

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

    前往 Cloud Workstations

  2. 前往工作站的「叢集管理」頁面。

  3. 點選「建立」。

  4. 輸入名稱,然後選取工作站叢集的區域。

  5. 在「網路」部分中,選取「這個專案中的網路」。

  6. 選取「網路」和「子網路」。

  7. 在「閘道類型」中,選取「私人閘道」。

  8. 選用:指定一或多個額外專案,這些專案會代管 Private Service Connect 端點,以便透過 HTTP 存取私人叢集。根據預設,這個端點只能在工作站叢集專案和虛擬私有雲網路主專案 (如果兩者不同) 中建立。如有需要,您也可以在叢集建立完成後指定這些專案。

  9. 點選「建立」。叢集建立期間,狀態會顯示為「更新中」。

    叢集會在幾分鐘內建立完成。叢集建立完成後,狀態可能會顯示為「Degraded」(已降級)。完成「建立 PSC 端點」一節中的步驟後,叢集狀態會在幾分鐘內變更為「就緒」。

啟用私人叢集連線

用戶端無法從公用網際網路連線至私人工作站叢集中的工作站。用戶端必須位於可透過 Private Service Connect (PSC) 連線至工作站叢集的網路上。請按照本節中的步驟連線至工作站:

  1. 建立 PSC 端點,以工作站服務連結為目標。

  2. 建立私人 DNS 區域。

  3. 使用 Cloud DNS 建立 DNS 記錄,將叢集的主機名稱對應至 PSC 端點。

建立 Private Service Connect 端點

請按照下列步驟建立 PSC 端點:

  1. 在 Google Cloud 控制台中,前往 Private Service Connect。

    前往 Private Service Connect

  2. 按一下「已連線的端點」分頁標籤,然後依序點選「新增」「連結端點」。

  3. 在「目標」部分,選取「已發布的服務」。

  4. 在「目標服務」欄位中,輸入為工作站叢集建立的服務連結 URI。如要找出這項資訊,請前往控制台上的工作站叢集,然後在「聯播網設定」下方尋找「服務附件 URI」欄位。

  5. 在「Endpoint」(端點) 欄位中輸入端點名稱。

  6. 選取端點的「網路」,然後選取「子網路」。 這個網路應為您想用來連線至工作站的網路,且必須與外部網路透過 Cloud VPN 或 Cloud Interconnect 連線的網路相同。

  7. 選取端點的 IP 位址。

    如需新的 IP 位址,請選取「建立 IP 位址」:

    1. 輸入 IP 位址的「名稱」和「說明」 (選填)。
    2. 如要使用靜態 IP 位址,請選取「自動指派」。 如要使用自訂 IP 位址,請選取「讓我選擇」,然後輸入要使用的 IP 位址。
    3. 在「用途」部分,選取「非共用」。
    4. 點選「保留」。
  8. 從下拉式清單中選取命名空間,或建立新的命名空間。 系統會根據所選子網路填入「區域」。

  9. 按一下「新增端點」。

  10. 複製端點的 IP 位址,以便在下一節中建立私人 DNS 區域和 DNS 記錄。

建立私人 DNS 區域

請按照下列步驟,為這個工作站叢集建立私人 DNS 區域,並將 DNS 名稱設為 clusterHostname。如要查看這個名稱,請在控制台中前往工作站叢集。

  1. 前往 Google Cloud 控制台的「Create a DNS zone」(建立 DNS 區域) 頁面。

    前往「建立 DNS 區域」

  2. 在「Zone type」(區域類型) 中,選取「Private」(私人)。

  3. 在「Zone name」(區域名稱) 中輸入名稱,例如 private-workstations-cluster-zone。

  4. 輸入私人區域的「DNS name」(DNS 名稱) 尾碼,區域中的所有記錄都會使用這個字尾。將這個名稱設為 clusterHostname。

    如要找出 clusterHostname,請在 Google Cloud 控制台中依序前往「Cloud Workstations」>「Cluster management」(叢集管理) 頁面,然後按一下工作站叢集即可查看主機名稱。

  5. 新增說明 (如有需要)。

  6. 在「Options」(選項) 下方選取「Default (private)」(預設 (私人))。

  7. 選取您在前一個章節中建立 PSC 端點的網路,因為 IP 位址只在該網路上有效。

  8. 點選「建立」。

如要進一步瞭解私人 DNS 區域,請參閱 Cloud DNS 文件,瞭解如何建立私人區域,以及Cloud DNS 私人區域最佳做法。

建立 DNS 記錄

如要新增記錄,將 *.<clusterHostname> 對應至建立 Private Service Connect 端點時預留的 IP 位址,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Cloud DNS zones」(Cloud DNS 區域) 頁面。

    前往 Cloud DNS 區域

  2. 按一下要新增記錄的代管區域名稱。

  3. 在「Zone details」(區域詳細資料) 頁面中,按一下「Add Standard」(新增標準)。

  4. 在「Create record set」(建立記錄集) 頁面的「DNS name」(DNS 名稱) 欄位中,輸入 *.<clusterHostname>。

  5. 在「IP Address」(IP 位址) 欄位中,輸入您在上一節中為 Private Service Connect 端點預留的 IP 位址。

  6. 點選「建立」。

  7. 您的虛擬私有雲網路現在應已連線至工作站叢集,您可以使用這個網路連線至工作站。

啟用在地端部署環境執行 DNS 解析

如要在工作站上使用預設的瀏覽器型編輯器,請透過連線至虛擬私有雲網路的電腦使用瀏覽器。您可以使用 Cloud VPN 或 Cloud Interconnect,從執行瀏覽器的外部網路連線至 VPC 網路。

如要從外部網路連線,請在外部網路中設定 DNS。與上述步驟類似,您可以為 clusterHostname 建立 DNS 區域,並新增將 *.<clusterHostname> 對應至建立 Private Service Connect 端點時預留的 IP 位址的記錄。或者,您也可以設定 DNS 轉送區域或 DNS 伺服器政策,允許在地端部署和 Google Cloud 環境之間查詢 DNS 名稱。

您可能也需要在地端部署基礎架構的許可清單中新增 *cloudworkstations.dev。

為映像檔串流設定 VPC Service Controls

如果您選擇啟用映像檔串流功能來縮短工作站啟動時間,且工作站叢集位於 VPC Service Controls 範圍內,則必須在範圍政策中設定下列項目:

  • 在服務範圍的受限制服務中加入 Container File System API (containerfilesystem.googleapis.com)。
  • 在服務安全防護範圍中新增輸出規則,允許工作站設定中指定的服務帳戶存取容器映像檔所在專案的 Container File System API。
  • 如果您使用預先設定的 IDE,也必須設定輸出規則,允許存取 cloud-workstations-images 專案 (專案編號 662288601415)。

後續步驟